From 6b02c4b9784848b0a660e0e54f88447af8433c50 Mon Sep 17 00:00:00 2001 From: vsr Date: Thu, 13 Dec 2012 13:53:34 +0000 Subject: [PATCH] Merge from V6_main 13/12/2012 --- configure.ac | 2 +- doc/Makefile.am | 11 +- doc/_static/EX3.PNG | Bin 67271 -> 0 bytes doc/_static/EX4.PNG | Bin 15980 -> 0 bytes doc/_static/EX5.PNG | Bin 10128 -> 0 bytes doc/_static/EX6.PNG | Bin 12744 -> 0 bytes doc/_static/EX7.PNG | Bin 22019 -> 0 bytes doc/_static/Sans titre.PNG | Bin 10185 -> 0 bytes doc/_static/_gui_add_group.png | Bin 0 -> 6510 bytes doc/_static/after_replace_hexa.png | Bin 0 -> 3262 bytes doc/_static/association.PNG | Bin 42126 -> 0 bytes .../{association2.PNG => association2.png} | Bin doc/_static/before_quadrevolution.png | Bin 22124 -> 52269 bytes doc/_static/before_replace_hexa.png | Bin 0 -> 3002 bytes doc/_static/before_replacehexa.png | Bin 25696 -> 84663 bytes doc/_static/{bielle.PNG => bielle.png} | Bin doc/_static/bielle_mesh.png | Bin 20409 -> 37373 bytes doc/_static/{bride.PNG => bride.png} | Bin doc/_static/bride_geom.png | Bin 21580 -> 47256 bytes doc/_static/bride_model1.png | Bin 21112 -> 50261 bytes doc/_static/bride_model2.png | Bin 19093 -> 43089 bytes .../{cad_bielle.PNG => cad_bielle.png} | Bin doc/_static/cartesian.png | Bin 0 -> 1586 bytes doc/_static/cartesian_grid.png | Bin 0 -> 5245 bytes doc/_static/cartgrid1.PNG | Bin 5813 -> 0 bytes doc/_static/cartgrid2.PNG | Bin 6001 -> 0 bytes doc/_static/cartgrid3.png | Bin 101352 -> 160319 bytes doc/_static/cone_mesh.png | Bin 0 -> 15178 bytes doc/_static/cut.png | Bin 19057 -> 37064 bytes doc/_static/cut_hexa.png | Bin 0 -> 3897 bytes doc/_static/{cyl_grid1.PNG => cyl_grid1.png} | Bin doc/_static/{cyl_grid2.PNG => cyl_grid2.png} | Bin doc/_static/{cyl_grid3.PNG => cyl_grid3.png} | Bin doc/_static/cylgrid.PNG | Bin 5615 -> 0 bytes doc/_static/cylgrid1.PNG | Bin 11385 -> 0 bytes doc/_static/cylgrid1.png | Bin 19319 -> 26676 bytes doc/_static/cylgrid2.png | Bin 36207 -> 47139 bytes doc/_static/{cylgrid2.PNG => cylgrid22.png} | Bin doc/_static/cylgrid3.png | Bin 34059 -> 40493 bytes doc/_static/cylgrid4.png | Bin 31866 -> 43238 bytes doc/_static/cylgrid5.png | Bin 26754 -> 33072 bytes doc/_static/cylgrid6.png | Bin 31076 -> 37977 bytes doc/_static/cylgrids.png | Bin 13539 -> 58733 bytes doc/_static/cylinder.png | Bin 51805 -> 74156 bytes doc/_static/cylindrical_grids.png | Bin 0 -> 7075 bytes doc/_static/db_cylgrid.PNG | Bin 5394 -> 0 bytes doc/_static/db_sph_grid.PNG | Bin 9958 -> 0 bytes doc/_static/decoupe.png | Bin 6079 -> 18602 bytes doc/_static/dialogbox.PNG | Bin 4997 -> 0 bytes doc/_static/dialogbox2.PNG | Bin 61475 -> 0 bytes doc/_static/dialogbox_cartgrid.PNG | Bin 8888 -> 0 bytes doc/_static/dialogbox_cylgrid.PNG | Bin 8955 -> 0 bytes doc/_static/dialogbox_discreti.PNG | Bin 21717 -> 0 bytes doc/_static/dialogbox_law.PNG | Bin 11643 -> 0 bytes doc/_static/dialogbox_remove.PNG | Bin 15202 -> 0 bytes doc/_static/dialogbox_remove.png | Bin 79987 -> 149001 bytes doc/_static/disco_quad.png | Bin 10407 -> 14395 bytes doc/_static/ex1.PNG | Bin 9857 -> 0 bytes doc/_static/ex1.png | Bin 0 -> 30433 bytes doc/_static/{EX2.PNG => ex2.png} | Bin doc/_static/grid.png | Bin 0 -> 1689 bytes doc/_static/grid_for_revolution.png | Bin 0 -> 2269 bytes doc/_static/gui_add_group.png | Bin 8627 -> 6510 bytes doc/_static/gui_add_law.png | Bin 10128 -> 7670 bytes doc/_static/gui_ass_edge.png | Bin 16496 -> 11414 bytes doc/_static/gui_ass_edges.png | Bin 0 -> 14567 bytes doc/_static/gui_ass_quad.png | Bin 8581 -> 7405 bytes doc/_static/gui_cut_hexa.png | Bin 8361 -> 5885 bytes doc/_static/gui_cylinder.png | Bin 9391 -> 7357 bytes doc/_static/gui_disco_edge.png | Bin 10985 -> 7809 bytes doc/_static/gui_disco_edges.png | Bin 0 -> 9240 bytes doc/_static/gui_disco_quad.png | Bin 11081 -> 7702 bytes doc/_static/gui_disco_vertex.png | Bin 11093 -> 7828 bytes doc/_static/gui_edge2.png | Bin 11356 -> 7911 bytes doc/_static/gui_edge_vertices.png | Bin 10990 -> 7697 bytes doc/_static/gui_hemispherical.png | Bin 28315 -> 20711 bytes doc/_static/gui_hexa_quads.png | Bin 12824 -> 7572 bytes doc/_static/gui_hexa_vertices.png | Bin 13920 -> 7566 bytes doc/_static/gui_join_quads.png | Bin 15320 -> 10461 bytes doc/_static/gui_make_cart_grid.png | Bin 14243 -> 9581 bytes doc/_static/gui_make_cyl_grid.png | Bin 25036 -> 18507 bytes doc/_static/gui_make_cyl_grid_irregular.png | Bin 18734 -> 13285 bytes doc/_static/gui_make_cylinder.png | Bin 9921 -> 7712 bytes doc/_static/gui_make_cylinders.png | Bin 7522 -> 5315 bytes doc/_static/gui_make_line_symmetry.png | Bin 10387 -> 7406 bytes doc/_static/gui_make_pipe.png | Bin 9255 -> 7437 bytes doc/_static/gui_make_pipes.png | Bin 7063 -> 4959 bytes doc/_static/gui_make_plan_symmetry.png | Bin 10439 -> 7374 bytes doc/_static/gui_make_point_symmetry.png | Bin 10023 -> 7020 bytes doc/_static/gui_make_spher_grid.png | Bin 12956 -> 10153 bytes doc/_static/gui_make_transfo_rotation.png | Bin 12389 -> 8873 bytes doc/_static/gui_make_transfo_scale.png | Bin 11741 -> 8124 bytes doc/_static/gui_make_transfo_translation.png | Bin 10924 -> 7319 bytes doc/_static/gui_merge_edges.png | Bin 10724 -> 9570 bytes doc/_static/gui_merge_quads.png | Bin 11245 -> 10033 bytes doc/_static/gui_merge_vertices.png | Bin 9892 -> 8615 bytes doc/_static/gui_mesh.png | Bin 9077 -> 6577 bytes doc/_static/gui_modify_line_symmetry.png | Bin 10379 -> 7406 bytes doc/_static/gui_modify_plan_symmetry.png | Bin 10535 -> 7374 bytes doc/_static/gui_modify_point_symmetry.png | Bin 10120 -> 6955 bytes doc/_static/gui_modify_transfo_rotation.png | Bin 12238 -> 8799 bytes doc/_static/gui_modify_transfo_scale.png | Bin 11741 -> 8066 bytes .../gui_modify_transfo_translation.png | Bin 10924 -> 7264 bytes doc/_static/gui_new_document.png | Bin 87863 -> 99289 bytes doc/_static/gui_parthemispherical.png | Bin 30030 -> 45125 bytes doc/_static/gui_partrind.png | Bin 28630 -> 45083 bytes doc/_static/gui_pipe.png | Bin 9480 -> 8019 bytes doc/_static/gui_prism_quads.png | Bin 12462 -> 10082 bytes doc/_static/gui_prism_quads_irregular.png | Bin 0 -> 11424 bytes doc/_static/gui_propagation.png | Bin 0 -> 7179 bytes doc/_static/gui_quad_edges.png | Bin 11940 -> 8210 bytes doc/_static/gui_quad_vertices.png | Bin 12725 -> 8354 bytes doc/_static/gui_quadrevolution.png | Bin 16922 -> 7747 bytes doc/_static/gui_replacehexa.png | Bin 14649 -> 9251 bytes doc/_static/gui_rind.png | Bin 28377 -> 44584 bytes doc/_static/gui_vector1.png | Bin 12238 -> 8734 bytes doc/_static/gui_vector2.png | Bin 11022 -> 7906 bytes doc/_static/gui_vertex.png | Bin 9471 -> 6723 bytes doc/_static/gui_vertex_assoc_coordinates.png | Bin 0 -> 14418 bytes .../gui_vertex_assoc_on_edge_byCoords.png | Bin 0 -> 21072 bytes .../gui_vertex_assoc_on_edge_byLength.png | Bin 0 -> 20879 bytes .../gui_vertex_assoc_on_edge_byParam.png | Bin 0 -> 19201 bytes .../gui_vertex_assoc_on_face_byCoords.png | Bin 0 -> 20219 bytes .../gui_vertex_assoc_on_face_byParam.png | Bin 0 -> 18976 bytes .../gui_vertex_assoc_on_geom_point.png | Bin 0 -> 17800 bytes ...gui_vertex_assoc_on_lines_intersection.png | Bin 0 -> 17440 bytes doc/_static/hemispherical_grid.png | Bin 0 -> 6047 bytes doc/_static/hemisphericalgrid.png | Bin 32370 -> 77405 bytes .../{HEXAHEDRON.PNG => hexahedron.png} | Bin doc/_static/interactive.png | Bin 105096 -> 119445 bytes .../{interactive.PNG => interactive2.png} | Bin .../{intersec_cyl.PNG => intersec_cyl.png} | Bin doc/_static/irregular_cylindrical.png | Bin 0 -> 6206 bytes doc/_static/irregular_prism.png | Bin 0 -> 3131 bytes doc/_static/join.png | Bin 14668 -> 5934 bytes doc/_static/make_cylinder.png | Bin 0 -> 2023 bytes doc/_static/make_cylinders.png | Bin 0 -> 2783 bytes doc/_static/make_line_symmetry.png | Bin 0 -> 7163 bytes doc/_static/make_pipe.png | Bin 0 -> 1704 bytes doc/_static/make_pipes.png | Bin 0 -> 3106 bytes doc/_static/make_plan_symmetry.png | Bin 0 -> 6951 bytes doc/_static/make_point_symmetry.png | Bin 0 -> 7052 bytes doc/_static/make_rotation.png | Bin 0 -> 1836 bytes doc/_static/make_scale.png | Bin 0 -> 2318 bytes doc/_static/make_sym_line.png | Bin 0 -> 3396 bytes doc/_static/make_sym_plane.png | Bin 0 -> 3676 bytes doc/_static/make_sym_point.png | Bin 0 -> 3294 bytes doc/_static/make_translation.png | Bin 0 -> 2298 bytes doc/_static/{meshing1.PNG => meshing1.png} | Bin doc/_static/{meshing2.PNG => meshing2.png} | Bin doc/_static/{meshing3.PNG => meshing3.png} | Bin doc/_static/no_cut.png | Bin 14827 -> 30557 bytes doc/_static/no_decoupe.png | Bin 5755 -> 16857 bytes doc/_static/non_cut_hexa.png | Bin 0 -> 3502 bytes doc/_static/parthemisphericalgrid.png | Bin 28002 -> 74663 bytes doc/_static/partial_hemispherical_grid.png | Bin 0 -> 4400 bytes doc/_static/partial_rind_grid.png | Bin 0 -> 7047 bytes doc/_static/partrindgrid.png | Bin 32202 -> 77426 bytes doc/_static/pipe.png | Bin 53339 -> 74390 bytes doc/_static/point_sym_before.png | Bin 9265 -> 10959 bytes doc/_static/prisme.png | Bin 10061 -> 4428 bytes doc/_static/prisme_gui.png | Bin 41264 -> 30894 bytes doc/_static/prisme_gui2.png | Bin 0 -> 16524 bytes doc/_static/quad_revolution.png | Bin 0 -> 4925 bytes doc/_static/quadrevolution.png | Bin 33700 -> 107478 bytes doc/_static/remove1.PNG | Bin 29278 -> 0 bytes doc/_static/remove2.PNG | Bin 12111 -> 0 bytes doc/_static/remove3.png | Bin 74996 -> 122659 bytes doc/_static/{remove3.PNG => remove33.png} | Bin doc/_static/remove_assoc.png | Bin 0 -> 5776 bytes doc/_static/remove_assocs.png | Bin 0 -> 5485 bytes doc/_static/replacehexa.png | Bin 21689 -> 63832 bytes doc/_static/rind_grid.png | Bin 0 -> 6935 bytes doc/_static/rindgrid.png | Bin 54163 -> 155143 bytes doc/_static/show_assocs.png | Bin 0 -> 6205 bytes doc/_static/sph_grid.PNG | Bin 11054 -> 0 bytes doc/_static/sph_grid.png | Bin 13305 -> 23122 bytes doc/_static/sph_grid2.PNG | Bin 11645 -> 0 bytes doc/_static/sph_grid_for_make_sym_examle.png | Bin 0 -> 5665 bytes doc/_static/spherical_grid.png | Bin 0 -> 2033 bytes doc/_static/transfo0.png | Bin 11283 -> 23684 bytes doc/_static/transfo_rotation.png | Bin 14839 -> 30151 bytes doc/_static/transfo_scale.png | Bin 14410 -> 26958 bytes doc/_static/transfo_translation.png | Bin 13820 -> 23243 bytes .../{tuyau_courbe.PNG => tuyau_courbe.png} | Bin doc/_static/verif_png | 8 + doc/annexe.rst | 6 +- doc/block_method.rst | 118 +- doc/cad.rst | 37 +- doc/creategrids.rst | 27 +- doc/full_example_bridle.rst | 101 +- doc/general.rst | 71 +- doc/gui_asso_quad_to_geom.rst | 70 +- doc/gui_asso_vertex_to_geom.rst | 207 + doc/gui_association.rst | 53 + doc/gui_blocks_for_cyl_pipe.rst | 31 +- doc/gui_cut_hexa.rst | 2 +- doc/gui_cyl.rst | 5 +- doc/gui_disc_elmts.rst | 27 +- doc/gui_discret_law.rst | 10 +- doc/gui_edge.rst | 4 +- doc/gui_groups.rst | 9 +- doc/gui_hemisphere.rst | 41 +- doc/gui_hexahedron.rst | 2 +- doc/gui_make_elmts.rst | 4 +- doc/gui_make_symmetry.rst | 54 +- doc/gui_merge_elmts.rst | 19 +- doc/gui_modify_elmts.rst | 4 +- doc/gui_modify_symmetry.rst | 11 +- doc/gui_pipe.rst | 7 +- doc/gui_prism_join_quad.rst | 50 +- doc/gui_propag.rst | 12 +- doc/gui_quad_revolution.rst | 16 +- doc/gui_quadrangle.rst | 2 +- doc/gui_remove.rst | 2 +- doc/gui_replace_hexa.rst | 5 +- doc/gui_vector.rst | 5 +- doc/gui_vertex.rst | 2 +- doc/interactive.rst | 2 + doc/intro_association.rst | 20 +- doc/intro_groups.rst | 6 +- doc/intro_mesh.rst | 14 +- doc/intro_python.rst | 445 +- doc/mesh.rst | 6 +- doc/pyplots/test_cut.py | 4 +- doc/pyplots/test_disconnect.py | 4 +- doc/pyplots/test_join_quads.py | 2 +- doc/pyplots/test_make_cart_grid.py | 2 +- doc/pyplots/test_make_cyl_grid.py | 2 +- doc/pyplots/test_make_cylinder.py | 2 +- doc/pyplots/test_make_elmts_transform.py | 6 +- doc/pyplots/test_make_pipe.py | 2 +- doc/pyplots/test_make_spher_grid.py | 2 +- doc/pyplots/test_prism_quads.py | 2 +- doc/pyplots/test_propagation.py | 2 +- doc/python.rst | 6 + doc/test_doc/cut_hexa/cut_hexa.py | 21 + doc/test_doc/cylinder_pipe/make_cylinder.py | 22 + doc/test_doc/cylinder_pipe/make_cylinders.py | 23 + doc/test_doc/cylinder_pipe/make_pipe.py | 23 + doc/test_doc/cylinder_pipe/make_pipes.py | 25 + doc/test_doc/edge/edge.py | 5 + doc/test_doc/grid/cartesian_grid.py | 20 + doc/test_doc/grid/cylindrical_grid.py | 30 + doc/test_doc/grid/irregular_cylindrical.py | 26 + doc/test_doc/grid/spherical_grid.py | 15 + doc/test_doc/grid/spherical_grid2.py | 20 + .../hemispherical_rind/hemispherical_grid.py | 28 + .../partial_hemispherical_grid.py | 30 + .../hemispherical_rind/partial_rind_grid.py | 30 + doc/test_doc/hemispherical_rind/rind_grid.py | 29 + doc/test_doc/hexa/hexa.py | 5 + doc/test_doc/make_symmetry/make_sym_line.py | 40 + doc/test_doc/make_symmetry/make_sym_plane.py | 39 + doc/test_doc/make_symmetry/make_sym_point.py | 40 + .../make_transformation/make_rotation.py | 20 + .../make_transformation/make_scale.py | 24 + .../make_transformation/make_translation.py | 21 + doc/test_doc/prism_quad_join/join_quads.py | 39 + doc/test_doc/prism_quad_join/prism_quads.py | 29 + .../prism_quad_join/prism_quads_vec.py | 32 + doc/test_doc/quad/quad.py | 5 + doc/test_doc/quad_revolution/make_grid.py | 25 + doc/test_doc/quad_revolution/revolution.py | 65 + doc/test_doc/replace_hexa/replace_hexa.py | 66 + doc/test_doc/test_cone/test_cone.py | 50 + doc/test_doc/update_tests.sh | 30 + doc/test_doc/vertex/vertex.py | 5 + doc/tui_asso_quad_to_geom.rst | 34 + doc/tui_asso_vertex_to_geom.rst | 45 + doc/tui_association.rst | 21 + doc/tui_blocks_for_cyl_pipe.rst | 116 +- doc/tui_cartgrid.rst | 115 +- doc/tui_component.rst | 18 +- doc/tui_cut_hexa.rst | 27 +- doc/tui_cyl.rst | 1 + doc/tui_cylgrid.rst | 68 +- doc/tui_disc_elmts.rst | 10 +- doc/tui_discret_law.rst | 4 + doc/tui_document.rst | 20 + doc/tui_edge.rst | 11 +- doc/tui_elements.rst | 205 +- doc/tui_hemisphere_rind.rst | 165 + doc/tui_hexahedron.rst | 42 + doc/tui_make_elmts.rst | 61 +- doc/tui_make_symmetry.rst | 131 + doc/tui_merge_elmts.rst | 1 + doc/tui_modify_elmts.rst | 4 + doc/tui_perform_symmetry.rst | 16 + doc/tui_pipe.rst | 2 + doc/tui_prism_join_quad.rst | 95 +- doc/tui_propag.rst | 8 - doc/tui_quad_revolution.rst | 68 + doc/tui_quadrangle.rst | 7 + doc/tui_remove.rst | 2 +- doc/tui_replace_hexa.rst | 42 + doc/tui_sphergrid.rst | 29 +- doc/tui_vector.rst | 10 + doc/tui_vertex.rst | 5 + doc/tuto_sphinx_hexablock.odt | Bin 0 -> 86564 bytes doc/tuto_sphinx_hexablock.pdf | Bin 0 -> 129711 bytes idl/BiCylinder.idl | 63 + idl/CrossElements.idl | 3 - idl/Document.idl | 156 +- idl/Edge.idl | 33 +- idl/Element.idl | 4 +- idl/Elements.idl | 4 +- idl/HEXABLOCK_Gen.idl | 9 +- idl/Hexa.idl | 2 +- idl/Makefile.am | 8 +- idl/NewShape.idl | 55 + idl/Quad.idl | 22 +- idl/Vertex.idl | 21 +- src/HEXABLOCK/Hex.cxx | 120 +- src/HEXABLOCK/Hex.hxx | 22 +- src/HEXABLOCK/HexAssoEdge.cxx | 130 + src/HEXABLOCK/HexAssoEdge.hxx | 51 + src/HEXABLOCK/HexBiCylinder.cxx | 809 ++ src/HEXABLOCK/HexBiCylinder.hxx | 115 + src/HEXABLOCK/HexBiCylinderShape.cxx | 241 + src/HEXABLOCK/HexBiCylinderShape.hxx | 58 + src/HEXABLOCK/HexCloner.cxx | 62 +- src/HEXABLOCK/HexCrossElements.cxx | 189 +- src/HEXABLOCK/HexCrossElements.hxx | 21 +- src/HEXABLOCK/HexCrossElements_build.cxx | 201 +- src/HEXABLOCK/HexCylinder.cxx | 2 +- src/HEXABLOCK/HexDocument.cxx | 598 +- src/HEXABLOCK/HexDocument.hxx | 172 +- src/HEXABLOCK/HexDocument_Xml.cxx | 326 +- src/HEXABLOCK/HexDocument_asso.cxx | 587 +- src/HEXABLOCK/HexDocument_quads.cxx | 9 +- src/HEXABLOCK/HexDocument_skin.cxx | 109 + src/HEXABLOCK/HexDocument_trans.cxx | 3 +- src/HEXABLOCK/HexDumpStudy.cxx | 298 + src/HEXABLOCK/HexDumpStudy.hxx | 87 + src/HEXABLOCK/HexEdge.cxx | 173 +- src/HEXABLOCK/HexEdge.hxx | 25 +- src/HEXABLOCK/HexEdgeShape.cxx | 223 + src/HEXABLOCK/HexEdgeShape.hxx | 44 + src/HEXABLOCK/HexElements.cxx | 151 +- src/HEXABLOCK/HexElements.hxx | 95 +- src/HEXABLOCK/HexElements_asso.cxx | 97 +- src/HEXABLOCK/HexElements_bis.cxx | 86 +- src/HEXABLOCK/HexElements_piq.cxx | 1 + src/HEXABLOCK/HexElements_ter.cxx | 239 +- src/HEXABLOCK/HexEltBase.cxx | 92 +- src/HEXABLOCK/HexEltBase.hxx | 56 +- src/HEXABLOCK/HexFaceShape.cxx | 54 + src/HEXABLOCK/HexFaceShape.hxx | 25 + src/HEXABLOCK/HexGlobale.cxx | 2 + src/HEXABLOCK/HexGlobale.hxx | 15 +- src/HEXABLOCK/HexGroup.cxx | 10 +- src/HEXABLOCK/HexGroup.hxx | 1 + src/HEXABLOCK/HexHexa.cxx | 17 + src/HEXABLOCK/HexHexa.hxx | 1 + src/HEXABLOCK/HexKasBiCylinder.cxx | 37 +- src/HEXABLOCK/HexKasLine.cxx | 69 +- src/HEXABLOCK/HexKasPoint.cxx | 16 +- src/HEXABLOCK/HexKas_functions.cxx | 60 +- src/HEXABLOCK/HexKas_functions.hxx | 17 +- src/HEXABLOCK/HexLaw.cxx | 17 +- src/HEXABLOCK/HexLaw.hxx | 6 +- src/HEXABLOCK/HexNewShape.cxx | 560 ++ src/HEXABLOCK/HexNewShape.hxx | 106 + src/HEXABLOCK/HexOldShape.hxx | 25 + src/HEXABLOCK/HexPipe.cxx | 2 + src/HEXABLOCK/HexQuad.cxx | 125 +- src/HEXABLOCK/HexQuad.hxx | 76 +- src/HEXABLOCK/HexShape.cxx | 5 +- src/HEXABLOCK/HexShape.hxx | 7 +- src/HEXABLOCK/HexSubShape.cxx | 83 + src/HEXABLOCK/HexSubShape.hxx | 46 + src/HEXABLOCK/HexVertex.cxx | 106 +- src/HEXABLOCK/HexVertex.hxx | 74 +- src/HEXABLOCK/HexVertexShape.cxx | 115 + src/HEXABLOCK/HexVertexShape.hxx | 34 + src/HEXABLOCK/HexXmlTree.cxx | 72 +- src/HEXABLOCK/HexXmlTree.hxx | 11 +- src/HEXABLOCK/HexXmlWriter.cxx | 90 +- src/HEXABLOCK/HexXmlWriter.hxx | 8 +- src/HEXABLOCK/Makefile.am | 25 +- src/HEXABLOCK/hexa_base.hxx | 85 +- src/HEXABLOCK/hexa_utils.cxx | 106 +- src/HEXABLOCK/test_brep.cxx | 163 + src/HEXABLOCK/test_hexa1.cxx | 1969 ++++ src/HEXABLOCK/test_hexa5.cxx | 182 + src/HEXABLOCK/test_tools.cxx | 59 + src/HEXABLOCK/test_unit.hxx | 77 + src/HEXABLOCKGUI/AddShapeDialog_QTD.ui | 49 + src/HEXABLOCKGUI/CutEdge_QTD.ui | 3 + src/HEXABLOCKGUI/Disconnect_QTD.ui | 856 +- src/HEXABLOCKGUI/EdgeAssoc_QTD.ui | 99 +- src/HEXABLOCKGUI/HEXABLOCKGUI.cxx | 4660 +++++---- src/HEXABLOCKGUI/HEXABLOCKGUI.hxx | 105 +- .../HEXABLOCKGUI_DocumentDelegate.cxx | 62 +- .../HEXABLOCKGUI_DocumentDelegate.hxx | 22 +- .../HEXABLOCKGUI_DocumentGraphicView.cxx | 1123 --- .../HEXABLOCKGUI_DocumentGraphicView.hxx | 184 - .../HEXABLOCKGUI_DocumentItem.cxx | 99 +- .../HEXABLOCKGUI_DocumentItem.hxx | 89 +- .../HEXABLOCKGUI_DocumentModel.cxx | 3706 +++---- .../HEXABLOCKGUI_DocumentModel.hxx | 751 +- .../HEXABLOCKGUI_DocumentPanel.cxx | 8633 +++++++++-------- .../HEXABLOCKGUI_DocumentPanel.hxx | 1422 +-- .../HEXABLOCKGUI_DocumentSelectionModel.cxx | 1416 +-- .../HEXABLOCKGUI_DocumentSelectionModel.hxx | 132 +- .../HEXABLOCKGUI_GraphicViewsHandler.cxx | 176 + .../HEXABLOCKGUI_GraphicViewsHandler.hxx | 61 + .../HEXABLOCKGUI_OccGraphicView.cxx | 185 + .../HEXABLOCKGUI_OccGraphicView.hxx | 73 + src/HEXABLOCKGUI/HEXABLOCKGUI_SalomeTools.cxx | 7 +- src/HEXABLOCKGUI/HEXABLOCKGUI_Trace.cxx | 6 +- .../HEXABLOCKGUI_VtkDocumentGraphicView.cxx | 1205 +++ .../HEXABLOCKGUI_VtkDocumentGraphicView.hxx | 239 + src/HEXABLOCKGUI/Hexa_QTD.ui | 73 +- src/HEXABLOCKGUI/JoinQuad_QTD.ui | 477 +- src/HEXABLOCKGUI/Law_QTD.ui | 9 + src/HEXABLOCKGUI/MakeCylinder_QTD.ui | 9 + src/HEXABLOCKGUI/MakeGrid_QTD.ui | 51 +- src/HEXABLOCKGUI/MakeHemiSphere_QTD.ui | 70 +- src/HEXABLOCKGUI/MakePipe_QTD.ui | 9 + src/HEXABLOCKGUI/Makefile.am | 16 +- src/HEXABLOCKGUI/Merge_QTD.ui | 742 +- src/HEXABLOCKGUI/ModelInfo_QTD.ui | 346 + src/HEXABLOCKGUI/MyBasicGUI_PointDlg.cxx | 270 +- src/HEXABLOCKGUI/MyBasicGUI_PointDlg.hxx | 12 +- .../MyDlgRef/DlgRef_Skeleton_QTD.ui | 10 +- src/HEXABLOCKGUI/MyGEOMBase_Helper.cxx | 248 +- src/HEXABLOCKGUI/MyGEOMBase_Helper.hxx | 12 +- src/HEXABLOCKGUI/MyGEOMBase_Skeleton.cxx | 11 +- src/HEXABLOCKGUI/MyGEOMBase_Skeleton.hxx | 2 + src/HEXABLOCKGUI/PrismQuad_QTD.ui | 480 +- src/HEXABLOCKGUI/QuadAssoc_QTD.ui | 4 +- src/HEXABLOCKGUI/QuadRevolution_QTD.ui | 38 - src/HEXABLOCKGUI/ReplaceHexa_QTD.ui | 550 +- src/HEXABLOCKGUI/Symmetry_QTD.ui | 2 +- src/HEXABLOCKGUI/Vector_QTD.ui | 2 +- src/HEXABLOCKGUI/klinkitemselectionmodel.cxx | 18 +- src/HEXABLOCKGUI/klinkitemselectionmodel.hxx | 8 +- src/HEXABLOCKGUI/resources/HEXABLOCK_icons.ts | 4 + .../resources/HEXABLOCK_msg_en.ts | 78 + .../resources/HEXABLOCK_msg_fr.ts | 78 + src/HEXABLOCKGUI/resources/LightApp.xml | 32 + .../resources/ModuleHexablock15x15.png | Bin 0 -> 1143 bytes .../resources/ModuleHexablock20x20.png | Bin 0 -> 1652 bytes src/HEXABLOCK_I/HEXABLOCK.cxx | 195 +- src/HEXABLOCK_I/HEXABLOCK.hxx | 10 +- src/HEXABLOCK_I/HEXABLOCK_1.cxx | 1006 +- src/HEXABLOCK_I/HexBiCylinder_impl.cxx | 170 + src/HEXABLOCK_I/HexBiCylinder_impl.hxx | 68 + src/HEXABLOCK_I/HexCrossElements_impl.cxx | 24 - src/HEXABLOCK_I/HexCrossElements_impl.hxx | 2 - src/HEXABLOCK_I/HexDocument_impl.cxx | 555 +- src/HEXABLOCK_I/HexDocument_impl.hxx | 122 +- src/HEXABLOCK_I/HexEdge_impl.cxx | 133 +- src/HEXABLOCK_I/HexEdge_impl.hxx | 13 +- src/HEXABLOCK_I/HexNewShape_impl.cxx | 113 + src/HEXABLOCK_I/HexNewShape_impl.hxx | 70 + src/HEXABLOCK_I/HexPropagation_impl.cxx | 27 - src/HEXABLOCK_I/HexQuad_impl.cxx | 85 +- src/HEXABLOCK_I/HexQuad_impl.hxx | 9 +- src/HEXABLOCK_I/HexVertex_impl.cxx | 78 +- src/HEXABLOCK_I/HexVertex_impl.hxx | 15 +- src/HEXABLOCK_I/Makefile.am | 3 + src/HEXABLOCK_I/hexablock.py | 95 +- src/TEST_CPP/ModelTest.cxx | 137 +- src/TEST_CPP/Test_HEXABLOCK.cxx | 6 +- src/TEST_CPP/test_hexa1.cxx | 168 +- src/TEST_PY/non_regression/bielle.stp | 1178 +++ src/TEST_PY/non_regression/k21592_getAsso.py | 282 + src/TEST_PY/test_unit/bielle.brep | 639 ++ src/TEST_PY/test_unit/bielle.py | 239 - src/TEST_PY/test_unit/bielle.stp | 1178 +++ src/TEST_PY/test_unit/bielle_v1.py | 275 + src/TEST_PY/test_unit/bielle_v5.py | 315 + src/TEST_PY/test_unit/cut_grille.py | 94 + src/TEST_PY/test_unit/hexa_quads.py | 12 +- src/TEST_PY/test_unit/test_cone.py | 76 + src/TEST_PY/test_unit/test_cross.py | 4 +- src/TEST_PY/test_unit/test_cylinders.py | 74 +- src/TEST_PY/test_unit/test_disco.py | 9 +- src/TEST_PY/test_unit/test_double_t.py | 4 +- src/TEST_PY/test_unit/test_perform.py | 125 + src/TEST_PY/test_unit/test_shapes.py | 48 + src/TEST_PY/test_unit/test_xml.py | 9 + src/TEST_PY/test_unit/troisCylindres.brep | 509 + src/TEST_PY/test_unit/troisCylindres_v5.py | 216 + src/TEST_PY/test_unit/tuyau.brep | 425 + src/TEST_PY/test_unit/tuyau_v5.py | 260 + 489 files changed, 34528 insertions(+), 17830 deletions(-) delete mode 100644 doc/_static/EX3.PNG delete mode 100644 doc/_static/EX4.PNG delete mode 100644 doc/_static/EX5.PNG delete mode 100644 doc/_static/EX6.PNG delete mode 100644 doc/_static/EX7.PNG delete mode 100644 doc/_static/Sans titre.PNG create mode 100644 doc/_static/_gui_add_group.png create mode 100644 doc/_static/after_replace_hexa.png delete mode 100644 doc/_static/association.PNG rename doc/_static/{association2.PNG => association2.png} (100%) create mode 100644 doc/_static/before_replace_hexa.png rename doc/_static/{bielle.PNG => bielle.png} (100%) rename doc/_static/{bride.PNG => bride.png} (100%) rename doc/_static/{cad_bielle.PNG => cad_bielle.png} (100%) create mode 100644 doc/_static/cartesian.png create mode 100644 doc/_static/cartesian_grid.png delete mode 100644 doc/_static/cartgrid1.PNG delete mode 100644 doc/_static/cartgrid2.PNG create mode 100644 doc/_static/cone_mesh.png create mode 100644 doc/_static/cut_hexa.png rename doc/_static/{cyl_grid1.PNG => cyl_grid1.png} (100%) rename doc/_static/{cyl_grid2.PNG => cyl_grid2.png} (100%) rename doc/_static/{cyl_grid3.PNG => cyl_grid3.png} (100%) delete mode 100644 doc/_static/cylgrid.PNG delete mode 100644 doc/_static/cylgrid1.PNG rename doc/_static/{cylgrid2.PNG => cylgrid22.png} (100%) create mode 100644 doc/_static/cylindrical_grids.png delete mode 100644 doc/_static/db_cylgrid.PNG delete mode 100644 doc/_static/db_sph_grid.PNG delete mode 100644 doc/_static/dialogbox.PNG delete mode 100644 doc/_static/dialogbox2.PNG delete mode 100644 doc/_static/dialogbox_cartgrid.PNG delete mode 100644 doc/_static/dialogbox_cylgrid.PNG delete mode 100644 doc/_static/dialogbox_discreti.PNG delete mode 100644 doc/_static/dialogbox_law.PNG delete mode 100644 doc/_static/dialogbox_remove.PNG delete mode 100644 doc/_static/ex1.PNG create mode 100644 doc/_static/ex1.png rename doc/_static/{EX2.PNG => ex2.png} (100%) create mode 100644 doc/_static/grid.png create mode 100644 doc/_static/grid_for_revolution.png create mode 100644 doc/_static/gui_ass_edges.png create mode 100644 doc/_static/gui_disco_edges.png create mode 100644 doc/_static/gui_prism_quads_irregular.png create mode 100644 doc/_static/gui_propagation.png create mode 100644 doc/_static/gui_vertex_assoc_coordinates.png create mode 100644 doc/_static/gui_vertex_assoc_on_edge_byCoords.png create mode 100644 doc/_static/gui_vertex_assoc_on_edge_byLength.png create mode 100644 doc/_static/gui_vertex_assoc_on_edge_byParam.png create mode 100644 doc/_static/gui_vertex_assoc_on_face_byCoords.png create mode 100644 doc/_static/gui_vertex_assoc_on_face_byParam.png create mode 100644 doc/_static/gui_vertex_assoc_on_geom_point.png create mode 100644 doc/_static/gui_vertex_assoc_on_lines_intersection.png create mode 100644 doc/_static/hemispherical_grid.png rename doc/_static/{HEXAHEDRON.PNG => hexahedron.png} (100%) rename doc/_static/{interactive.PNG => interactive2.png} (100%) rename doc/_static/{intersec_cyl.PNG => intersec_cyl.png} (100%) create mode 100644 doc/_static/irregular_cylindrical.png create mode 100644 doc/_static/irregular_prism.png create mode 100644 doc/_static/make_cylinder.png create mode 100644 doc/_static/make_cylinders.png create mode 100644 doc/_static/make_line_symmetry.png create mode 100644 doc/_static/make_pipe.png create mode 100644 doc/_static/make_pipes.png create mode 100644 doc/_static/make_plan_symmetry.png create mode 100644 doc/_static/make_point_symmetry.png create mode 100644 doc/_static/make_rotation.png create mode 100644 doc/_static/make_scale.png create mode 100644 doc/_static/make_sym_line.png create mode 100644 doc/_static/make_sym_plane.png create mode 100644 doc/_static/make_sym_point.png create mode 100644 doc/_static/make_translation.png rename doc/_static/{meshing1.PNG => meshing1.png} (100%) rename doc/_static/{meshing2.PNG => meshing2.png} (100%) rename doc/_static/{meshing3.PNG => meshing3.png} (100%) create mode 100644 doc/_static/non_cut_hexa.png create mode 100644 doc/_static/partial_hemispherical_grid.png create mode 100644 doc/_static/partial_rind_grid.png create mode 100644 doc/_static/prisme_gui2.png create mode 100644 doc/_static/quad_revolution.png delete mode 100644 doc/_static/remove1.PNG delete mode 100644 doc/_static/remove2.PNG rename doc/_static/{remove3.PNG => remove33.png} (100%) create mode 100644 doc/_static/remove_assoc.png create mode 100644 doc/_static/remove_assocs.png create mode 100644 doc/_static/rind_grid.png create mode 100644 doc/_static/show_assocs.png delete mode 100644 doc/_static/sph_grid.PNG delete mode 100644 doc/_static/sph_grid2.PNG create mode 100644 doc/_static/sph_grid_for_make_sym_examle.png create mode 100644 doc/_static/spherical_grid.png rename doc/_static/{tuyau_courbe.PNG => tuyau_courbe.png} (100%) create mode 100755 doc/_static/verif_png create mode 100644 doc/gui_asso_vertex_to_geom.rst create mode 100644 doc/gui_association.rst create mode 100644 doc/test_doc/cut_hexa/cut_hexa.py create mode 100644 doc/test_doc/cylinder_pipe/make_cylinder.py create mode 100644 doc/test_doc/cylinder_pipe/make_cylinders.py create mode 100644 doc/test_doc/cylinder_pipe/make_pipe.py create mode 100644 doc/test_doc/cylinder_pipe/make_pipes.py create mode 100644 doc/test_doc/edge/edge.py create mode 100644 doc/test_doc/grid/cartesian_grid.py create mode 100644 doc/test_doc/grid/cylindrical_grid.py create mode 100644 doc/test_doc/grid/irregular_cylindrical.py create mode 100644 doc/test_doc/grid/spherical_grid.py create mode 100644 doc/test_doc/grid/spherical_grid2.py create mode 100644 doc/test_doc/hemispherical_rind/hemispherical_grid.py create mode 100644 doc/test_doc/hemispherical_rind/partial_hemispherical_grid.py create mode 100644 doc/test_doc/hemispherical_rind/partial_rind_grid.py create mode 100644 doc/test_doc/hemispherical_rind/rind_grid.py create mode 100644 doc/test_doc/hexa/hexa.py create mode 100644 doc/test_doc/make_symmetry/make_sym_line.py create mode 100644 doc/test_doc/make_symmetry/make_sym_plane.py create mode 100644 doc/test_doc/make_symmetry/make_sym_point.py create mode 100644 doc/test_doc/make_transformation/make_rotation.py create mode 100644 doc/test_doc/make_transformation/make_scale.py create mode 100644 doc/test_doc/make_transformation/make_translation.py create mode 100644 doc/test_doc/prism_quad_join/join_quads.py create mode 100644 doc/test_doc/prism_quad_join/prism_quads.py create mode 100644 doc/test_doc/prism_quad_join/prism_quads_vec.py create mode 100644 doc/test_doc/quad/quad.py create mode 100644 doc/test_doc/quad_revolution/make_grid.py create mode 100644 doc/test_doc/quad_revolution/revolution.py create mode 100644 doc/test_doc/replace_hexa/replace_hexa.py create mode 100644 doc/test_doc/test_cone/test_cone.py create mode 100755 doc/test_doc/update_tests.sh create mode 100644 doc/test_doc/vertex/vertex.py create mode 100644 doc/tui_asso_vertex_to_geom.rst create mode 100644 doc/tui_association.rst create mode 100644 doc/tui_hemisphere_rind.rst create mode 100644 doc/tui_make_symmetry.rst create mode 100644 doc/tui_perform_symmetry.rst create mode 100644 doc/tui_quad_revolution.rst create mode 100644 doc/tui_replace_hexa.rst create mode 100644 doc/tuto_sphinx_hexablock.odt create mode 100644 doc/tuto_sphinx_hexablock.pdf create mode 100755 idl/BiCylinder.idl create mode 100755 idl/NewShape.idl create mode 100755 src/HEXABLOCK/HexAssoEdge.cxx create mode 100644 src/HEXABLOCK/HexAssoEdge.hxx create mode 100755 src/HEXABLOCK/HexBiCylinder.cxx create mode 100755 src/HEXABLOCK/HexBiCylinder.hxx create mode 100755 src/HEXABLOCK/HexBiCylinderShape.cxx create mode 100755 src/HEXABLOCK/HexBiCylinderShape.hxx create mode 100755 src/HEXABLOCK/HexDocument_skin.cxx create mode 100755 src/HEXABLOCK/HexDumpStudy.cxx create mode 100755 src/HEXABLOCK/HexDumpStudy.hxx create mode 100755 src/HEXABLOCK/HexEdgeShape.cxx create mode 100644 src/HEXABLOCK/HexEdgeShape.hxx create mode 100755 src/HEXABLOCK/HexFaceShape.cxx create mode 100644 src/HEXABLOCK/HexFaceShape.hxx create mode 100755 src/HEXABLOCK/HexNewShape.cxx create mode 100644 src/HEXABLOCK/HexNewShape.hxx create mode 100755 src/HEXABLOCK/HexOldShape.hxx create mode 100755 src/HEXABLOCK/HexSubShape.cxx create mode 100644 src/HEXABLOCK/HexSubShape.hxx create mode 100755 src/HEXABLOCK/HexVertexShape.cxx create mode 100644 src/HEXABLOCK/HexVertexShape.hxx create mode 100755 src/HEXABLOCK/test_brep.cxx create mode 100755 src/HEXABLOCK/test_hexa1.cxx create mode 100644 src/HEXABLOCK/test_hexa5.cxx create mode 100755 src/HEXABLOCK/test_tools.cxx create mode 100644 src/HEXABLOCK/test_unit.hxx create mode 100644 src/HEXABLOCKGUI/AddShapeDialog_QTD.ui delete mode 100755 src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentGraphicView.cxx delete mode 100755 src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentGraphicView.hxx create mode 100644 src/HEXABLOCKGUI/HEXABLOCKGUI_GraphicViewsHandler.cxx create mode 100644 src/HEXABLOCKGUI/HEXABLOCKGUI_GraphicViewsHandler.hxx create mode 100644 src/HEXABLOCKGUI/HEXABLOCKGUI_OccGraphicView.cxx create mode 100644 src/HEXABLOCKGUI/HEXABLOCKGUI_OccGraphicView.hxx create mode 100755 src/HEXABLOCKGUI/HEXABLOCKGUI_VtkDocumentGraphicView.cxx create mode 100755 src/HEXABLOCKGUI/HEXABLOCKGUI_VtkDocumentGraphicView.hxx create mode 100644 src/HEXABLOCKGUI/ModelInfo_QTD.ui create mode 100644 src/HEXABLOCKGUI/resources/LightApp.xml create mode 100644 src/HEXABLOCKGUI/resources/ModuleHexablock15x15.png create mode 100644 src/HEXABLOCKGUI/resources/ModuleHexablock20x20.png create mode 100755 src/HEXABLOCK_I/HexBiCylinder_impl.cxx create mode 100755 src/HEXABLOCK_I/HexBiCylinder_impl.hxx create mode 100755 src/HEXABLOCK_I/HexNewShape_impl.cxx create mode 100755 src/HEXABLOCK_I/HexNewShape_impl.hxx create mode 100644 src/TEST_PY/non_regression/bielle.stp create mode 100644 src/TEST_PY/non_regression/k21592_getAsso.py create mode 100644 src/TEST_PY/test_unit/bielle.brep delete mode 100644 src/TEST_PY/test_unit/bielle.py create mode 100644 src/TEST_PY/test_unit/bielle.stp create mode 100644 src/TEST_PY/test_unit/bielle_v1.py create mode 100644 src/TEST_PY/test_unit/bielle_v5.py create mode 100644 src/TEST_PY/test_unit/cut_grille.py create mode 100644 src/TEST_PY/test_unit/test_cone.py create mode 100644 src/TEST_PY/test_unit/test_perform.py create mode 100644 src/TEST_PY/test_unit/test_shapes.py create mode 100644 src/TEST_PY/test_unit/test_xml.py create mode 100644 src/TEST_PY/test_unit/troisCylindres.brep create mode 100644 src/TEST_PY/test_unit/troisCylindres_v5.py create mode 100755 src/TEST_PY/test_unit/tuyau.brep create mode 100644 src/TEST_PY/test_unit/tuyau_v5.py diff --git a/configure.ac b/configure.ac index 92f9cb9..df6650c 100755 --- a/configure.ac +++ b/configure.ac @@ -27,7 +27,7 @@ SHORT_VERSION=`echo $VERSION | awk -F. '{printf("%d.%d",$1,$2)}'` AC_SUBST(SHORT_VERSION) XVERSION=`echo $VERSION | awk -F. '{printf("0x%02x%02x%02x",$1,$2,$3)}'` AC_SUBST(XVERSION) -VERSION_DEV=0 +VERSION_DEV=1 AC_SUBST(VERSION_DEV) # set up MODULE_NAME variable for dynamic construction of directories (resources, etc.) diff --git a/doc/Makefile.am b/doc/Makefile.am index 1510520..5a286a6 100755 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -95,6 +95,7 @@ RSTFILES= \ general.rst \ gui.rst \ gui_asso_quad_to_geom.rst \ + gui_asso_vertex_to_geom.rst \ gui_blocks_for_cyl_pipe.rst \ gui_component.rst \ gui_cut_hexa.rst \ @@ -112,6 +113,7 @@ RSTFILES= \ gui_mesh.rst \ gui_modify_elmts.rst \ gui_modify_symmetry.rst \ + gui_association.rst \ gui_pipe.rst \ gui_prism_join_quad.rst \ gui_propag.rst \ @@ -119,7 +121,7 @@ RSTFILES= \ gui_quad_revolution.rst \ gui_remove.rst \ gui_replace_hexa.rst \ - gui_hemisphere.rst \ + gui_hemisphere.rst \ gui_vector.rst \ gui_vertex.rst \ index.rst \ @@ -132,20 +134,26 @@ RSTFILES= \ python.rst \ tui.rst \ tui_asso_quad_to_geom.rst \ + tui_asso_vertex_to_geom.rst \ tui_blocks_for_cyl_pipe.rst \ tui_cartgrid.rst \ tui_component.rst \ tui_cut_hexa.rst \ + tui_make_symmetry.rst \ + tui_perform_symmetry.rst \ tui_cylgrid.rst \ tui_cyl.rst \ tui_disc_elmts.rst \ + tui_quad_revolution.rst \ tui_discret_law.rst \ + tui_association.rst \ tui_document.rst \ tui_edge.rst \ tui_elements.rst \ tui_groups.rst \ tui_hexahedron.rst \ tui_make_elmts.rst \ + tui_hemisphere_rind.rst \ tui_merge_elmts.rst \ tui_mesh.rst \ tui_modify_elmts.rst \ @@ -154,6 +162,7 @@ RSTFILES= \ tui_propag.rst \ tui_quadrangle.rst \ tui_remove.rst \ + tui_replace_hexa.rst \ tui_sphergrid.rst \ tui_vector.rst \ tui_vertex.rst diff --git a/doc/_static/EX3.PNG b/doc/_static/EX3.PNG deleted file mode 100644 index 27a87bf74c72e9ffb4197fea3f8aa1a64155da87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67271 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
    tz|EwI zjfs@+L@*A8_o&2(3R^22C88_k2t+^9rW9BwQtN-AK|qq>#0SAQ2AI(C4wZoV9#TWf z3gP-)4DbaalkB?gQU|D|U)%+uiDzH*#MENs0WOqC_Y+Qs@lpatAJwWOn*m-byb`1Y zBza@0`-=?K4L`6CzZEy*Kkear!Kgq8haC{2hk4#?S7Tb z@G6yD5p_LIoIqy_5gG}ZA*u<37eIYb)0>G~oMQ=-_S03FN~N@^fptQ1&UoGxaN$uQ z{I1Owe!PU-kqewztotH@ROp8$h4i8&_N;1*>4Qm$uLvOW=y@$sKWj+YU+q-qvlNE1 zuq(;R+L>MnPIiig4)Q)2O^PqfmG;wHr7`MJ1HThWEMr=&?@P*D2Iu)+*OvguOX*Vw z#2l%{eoY6WiF5K_jByHH?Bws|?&ZbzGw#x~fPSXjN}=*u3mYb|KjAjYFH)@>a$hn% zPkAn#SX^c9A<_YREt5S%VnkgmXG#baUJSV14r+X|YVoNV1ABrhV zh-4WR(jhssz}1J7CUhP8^s3^C?CI9xJ!oB97+elCl-_f)cFvNqIB+Gsc8)dm1YgP* zMq55hYas6!Sg9MpAf}Ak6!C;m*ifn2gZ|p^C8n4pISdn1BB(-vbIk#`iCY{9;(;b# zE{KW-g6MWx4MvzTzq6d*@nzqKuykgR?nzTeM|3dt;KtYWgzuv&KkVp`xz`7BDWt1T zD#`p}3NgqNTNajug#MLCH_F~gpl$`Zj zK-F0p4)ovU}4~~@Nx*UDg(N70X3cJ%MexHRmkSykVeTrIEru+5HT zCX3D?n3+nS?>F?YxtW$l3W}vO*=c&RS9l*+C?o z=CX@}B6P2OcL_Vbaz6Rlx7&rt<0~<7BDn5|P&42y?WxbICn2uyS>azy4U{55(ca0! zN8yiV=p!DL-r6ks@)+?(7wf&w6_$u5w`9FAgIb^3@oy?xCs#=Z(0=oU{ATh9ovGG$ z-_4hoy|MX&C(ljNwv*4fE)L2%=X~c#>w+IK=y`0cG(S7av#Zrv7;Yo_a&wUw86ycC zMh{)r8Al4jbi@ko?^jrK9wb*5qkYAKC^l`kX~HrM3E0E6u~o3xLIU+$8U^y0@!>Z+ zsz1MmUirFdAbAe~fl6;%6V^cB5_lXI;CEFpvlkC7V`8edBm=$KSp7x587OVasuzJm zLE6w5-2-Bb*f}^Gz+_9DlnXBh%^P|#UyFNgfAUO64NsRR$iQxnv zd0#%1B%%l^bRUICjUrvtJJ}cc!D@+kzJl5$8cK2iV!LF9{v^q^{}I7JUR zV7s?kmnG zh@1sUEHSO>r3t{3;lI{1#0q^fqU1JQeu7RBfJ7p45YEJjIZ#gHrL#aQI>8QTg%MXj zsNX>DOyD}s(17Yg1ivBkH3;y=2t9@pN&b@P<3gxm%S`QGBM@~bJcXe?sCDdpd(7wJ zzZ*Y!GDi`8etER;+H7wT0s{}Cn$M;1yo_e$wnI6QS2Kn7VTHg>+xilRe<(N+dW} z0~!daKpQURWM#PJNYGwv(D?0NIUm|w+`%(hf)oi?ff&X!%$Mra-#}x{3l`+K-mA+) zM=ux1E&Ge^_BtzQBkp4Y4!gt?uGU_XxuWVfAca!_VcKmx_ypRT5xEyca-QnI4m8Kf zUa6nXYfVB_s>F*m$CiG{S66>5Xi(})_n6(7f0=~V`P7XJRle!W; z*WLD+CFxI3@Dr9#8v2C(?7y`j(e`Oxuv6u+72KZp8n$3tqO@ji&L#fJ{xk`Em!Tl9 zJW@=PS(CavAxrveDSQ2pW9X?^{jNA^sMQC}viVA)M+n-Y+}o@^Bd>x*y=&7k+1GGL z3M+8FFJaD5pfTJ#};>XqS~Z{COhlEloaEVh`EGE-#e#ywUxqL0s0~4{^dYZW?{kY26yaD7jj%H8`zydgJg17T>Z{CBP@YGG9gpfI8w8z_%>YjJvdKqpQ za>fsDhy>W=pjEo`8&QT#4rrUL?ZT$@1^qwZNBL)ykJt9G*%@@|I@F9uQgpyb8N%e# z_ad45u016RK8=ofD?|1+jmJ}cf#z<(x3H)>L2g|;Mtk?bl{`GD@>43Vu*V1#2tnLLtRUY6_^*fGindd#2RI_)i$56UnmARw z{T}qHbXRolRJAV78u$QrqVUrMAhtwZvS{332@C|N1N~3$LZpL004#1>V-g*@T=*iZ znp1f|VFlC43g+wN zY~rN}5`YYl?)U4*k?rt)4g1=OFlCCPGuz^_+VX9_8#jL%u{0F+U-cY)@@o-#X1Z`> z!PK}GpS94=YtGMc+kG0uu?`U`1*?HY0EQwOLa&H5oaR)5A^Jl4G>D&HTQa?Ws%A(f zQkf}H(!`N6NReU#xUviH3&ad1YS=g+eLIuI;1k<_~rne_R%yIDzfo?OghR0BWh z5@_OIb3^Z~Pie(=*?Y(IA;wc0Z99!9wWJ;mupK|p1w{LD)(B364!4XWCfrhEA8yI; zcHMJOB?h~X;F$oq_@c~o^+-u7Fs;Aj6g6Ogd!Gzig)ZdR%XonqynQX|;X*qpi7t>H zQ+}XBjZxU%K4#d^d-gj+RfgPwSc-&W<{zNDIg!g}kEdSt=F4H50UWb|8{l-A(0ylH zqax_N6h`SMTMrFdaa`2hknHL6bUG#4(y|x16c$IBon<})H^!zy_o&jzJf*AWnjZM? zz8Kz>?4lZ38$R~gfpN>aUQCG%4A!m0Z~3mD`dFUA4v31P4sNH|rjt2kKR~AX%gsXs6>f+0@gv;=AE`S zYWSHi>U-t|*y=f;s2>8odn9t;Z8U>t!H#h4eaFUS$yZswy&{wp>lJAov0m|IHikt6 znV4M?g!-H%Q`v&oNNSvTWF@WI|JHvM;z;7%JTM0lnN&ICoeoNWet2i{{P>=tcK2Rx z8?TJx6=HH@;>UKZeb)V)J@>S@!Y+-3nymOA;T0U+`V9F!BAiNk@GR|y#hFL4S1(QI zVN_0tJm|N_P!SXHrXEAN1PpZrXbWe#X?;r=WtI=plF zj+r%yUz3f%44HfM*Ub{^Mq#M)>IcAGqr^)Qv|Z2Abd0?ia8-X2?F6>*s6`Vku+Y-)AF zcZLdRl}WG7MnJ6?+Phf0Gte;ea=fW#s^zN8pXg@<^^G{i1KS0P_vD#7dso95GUgti zW!$IMY{-<=z)*g~lO4jC-M(7DDAtJx=rmNFCbZpTErwU%nY@~Ta^@3`fE+A!BB1s7 ztDEaNB&f}G>!LVZxzsZLWr!LC5d><%6$E3_(=e20YdHYp^(T5O{2oi#gBQSFh>RL6 z0fVpI`8e)6^eiT4J=X?Va}vZ-B=9G=VRtKEBL(Nwzq|sVzj_vL9T|UH2{)x1-SXdG z4g~Asi4DcyxWNj{Cgm`2C)rEzw{Wec;F}hsV=@HW^G;8M_2yFo16#t0w`;dGDgLT_a8Ep+4=5TtyQ1or@h% z6<-eDtDZ=Mj@#MVCISnfm&IYky7QRrr94c`)45y>kD+u0?%)api~P_Roka=any~Ky zx6XLkpp_~qHD6WFD9Uu)3!YE^IR0^%EXXc!Nj{_Yy9TpPo69h9(X0&FoHdIVvwIlu z)Eqdt5&Tf;J90-z3i@EvPwM^P2dc=cke8v)W_^w%fn@SV#d2mxOq4gdSrorJxyZOs z#)aJe2)=&fx^Coy5xG>ncwA)mT}4HutCLBG&Zg8+6szvkQTsb|ip+C`v3i=LW83Kx zx^UKd2s2VOmfD;buA{{|Y%opeq^gwwk#Ta5%E&eb+8lXOJ|zG=rFLB6cAl%3xw0Pr$TUIyzE zreIVS(0}$!8K_5!%9>Br=d!l_Jx?Aq3vI=!C~rji*tKtgyde*!#hz_`lSn5Oxb?tB zdEV4}tswsP+sC{7W)kEzS8W{Jk#i?ao?Eej*UlhHgyt8UwcPl6@=2|oJK7aS2i6O< zSywfW_trS~?OicES`iY^ghKX220*@bh;@wfvIzd8mUOxYl=vo4RReKGA5H@$Ejcv; zgco6d@sKq_4mg1UW%n$7d#8y_nguZ{X6vqJ1N0chLiqQ9MwOJK3)kfpY*XY%UBW`5 zB^#bx0Up3skBP=@U=ML{~4$q!1#gR_C zbVKvJwWXhqR&PtWjXYB+nb=%CXkZ}=kg!L))G2^QN;q}(;#$qlGVx#lvLv5FSu#A} zFz@l`#miJyU8QxJVM6nQ>mGm`L6n>_ZsYsM51w6kJD=d@#3&xzsy>-+^pNy>P5)TP zZ#lH+L6N=1%~;k_biM@QD04-^FXn~ORJR7WdCb5T?W+=P1X9y(N%b;zPsJ@>y$`Qx zOekQ{3AIHG7a0|w(k3;@n4)qKqVrH46(}zX9=RU+rR5gHN>VEZU3;XW%jJ_Go}(_H zH`*lIc$=;GFjw=BR~~_*cD&^ttao#(C`+HVb7Ma1j~+9cFHmIevyrWRA>&VTrrVS? zO>u9bXj@;Maka+#cDEK|g~!Lgo#*A=L{85TJRKU@=jUH5K#&)pwVCo!G5I#;XTa%$ zujbw<$|t5`c%z&Fi~TBtmi3$9fvb_xjA1}y@lT>M^3s4y#_kH4%?!AHAxQbeC<9b= zLX2cj1O-9j3U+A@wk)(FwIhvv&)BSr@JdqWuz;#B2r#yD>(*sNmOmk+B2E3_FV~C>MERK;7dbyy?(-aFreS{P>)77$*PaC|pA6|C zWO20a+GVfHCnQiIKRNx-u4Pk!b2NI=%O>*My;jefevNoK-vJt<<{h zCVk+`jr?}Z6J`A;*t%7vaozZ3kvZztb!;PnNH%5V@R~=^Pr{erHNjB9)0HD0!!8J= z`m12Kf$l#Q7N}o1V0zEWboToRH3!BDQkF6pk{fO(4AsyL-D1AJ;JNJyxZbilkLxbR zW`>92{Cq==eF=B`DIT#)=n;LGwHJ4e3=XL1+Wh0NoiLXIR6tJgOG@gh=GA`)1 z-;vE)Sv&PBe^}?AWf2ycn3b=y=Fg%$I*dE>;?pZeePa^u0?kBN|9V2E-ckmCoG>gQu10N** zwOo2VdcA5Wte+AgdYP)iM+_0n``}TEkE)&FCUuBep~pfeY(f$aB8Cii!VW1<{g{!g zdf^g;>8IpOpU_;C_g#4A!^5$;nXQ#Y-Ln_02^7$?e^Z}`7JgIz{ist2zz>!`*kDWfYl~qh%R#4ubs6@WtgHAa>h5r< z<%;_F#5ffE(p}_b8qu4}#-&fv6)%>(lJ$0KWRA|pV=j$cbh}$qP%}hqxX-KwbeTlU z#Nw);Ie_YRK3zr*@Vg--EY}HAj4^B*N@FPA{*De*|J|4AVAP>x`ab-6F~OXcBr0E z-kp~Ws|lqSv<<^Toq_(Y%$Q0+LK6K>>Lp7(Bw0^-ejr&-^8L{FfKY@TMzkS%JHle| z&k?NKilL7;J)2)FCI<#lLF4V7yX|RqaL%p-?C9z=HbspDx0{F%Ll)I$j%?3MboTtl z!#7U-=CfPvuG8MDI?p|kSv#tbgC=j|Ym1-JRG-ggu%9K&(j1-9AzkPVE}H3(Ufr6; zg5Cfm{1dvE@OFlb(_w@Nv{ktUzG;YM~VB4UKMiAsES_`|)hfmwT&$yJjK>W2~rec3ZBVQ0JR zG@NjKk9Du1`$3EuF6t6~CK(F5w!)r(RCrt==6#P#v`#}|a)F4dxKa-rjq;wpGS3Kx zBeZ)#FB@f%<*KxYgf|iNPSy|)1AX4PKhTvW-K^|+{*J^HI0#B9(ftIKIKQV3G2CoX zMVnyAppz$L>LbQ+$iO7BY)~1*&I-_&dhOJ)@@T~tb1%EZdX+*AKzzP|n6~&`AAl0& zGCWMj)1=cAeF)iHpb209VS%(5_kUP$J4--VN{B7=4dq=WPF*G!iBg?gavc#QL)$hm zfMSPO!3eKVzT_F?eWSqs8Mc}l4o~xomFRfA@B40G`v=0_f)J~<0@e8fZ?-f;I704c z1%}(Bg^_j7HkXVsgfY&{buJn@X0J-&4KU*!sCF$#-GH2jqtjdJ8mb*rd%>L-z;6J| z2G!)f{vMDEQIcPexpT1362@!mldxw6(3?fBUwm<9SVf1Q1g61#0*KE;ILf)b|5tN! zCP=uGcFahPiA1FmV?A(yBCm59 znfhct@$R1`FlMCsmCkfNa~ICnFbFb-6{q@5bD4e4fV*H2E+Lv3yJAp~`qFis)B<*? z(>{8`LGiClm$i!!7hpg{vwWdFZxe<-33?4`mDa~252ZmeOF?CH*iz4Ibb#UN-vS0j zGc>tg1Q;s-&7TB%k)Lb!KwQA`MxkkNJCGOd9PtK8%70r17+?VR*Qh7+Wsx;T+4B&c zm%4tl+4p(~KvDbrKaS+hJ}i}+W~GCx6D5hwBqRcsWWeM)?zB|;vk0WSl4JPq%9BEB6Abpx26q=eR=~TP^Cdd)fN3x~ zq-|+QvMA6^l4AkVF90RfcWio<2nwWG(hQoQday5rM3I!IsUiiq|B`{JKzJ zKcW|HvE~57fr|kdk@|DQ#oA6znB>50545u$hCY$u(^C<{H3Q2b3!okRb_d4S9x8(G zrIug-e1)Nez*rPh^b6*Pwe#PZe4^b@BoI;ibx(Yp@=p6CtCqjxZ1;So(&uq(V? z5%sW8Va4S2rC>AQ!AJtVM%aq*#s|ZZ--nTvAsl&FNP%#IaA-qrgV*>7NFj6)t(G*O z8|i+M-f2pf&urTT){m6h{5l}+ z(v#eM&5Nxz&%A&Rr-~WW>F~DPU3+wTXJb%7$Xh8BAcdRssPMV)K?01=1o%I%+k;GE`a zhS~*;YqSXiy+=0+*;AZl1;8aUehNh6j$Sjle>dpp_1+p0!gWO%#O$7dUVT-$_Uou) zuT31s#Cto5e|66faV2kZ`#4(W0ojIkFIwoNXDxidso z!74uwT(Z=&sA1~JT!&}whuVmCEwj|{H2r&i^Sk{zJ9eM;yo>|}^ke%8=+v3-$Rnog zd-IDfQa-aRLW-8_)Xzp!ic$kXS(un_ILW-w?vemde$O^ajR7O3#`f)q`zM4=$qY}n zNt4jI^9Na3eXb_qsNs+Ji^3M{r+2eEE=YWfKe^k1pq>Y`cYq-v!|6mVx1JC@ClM=- zGF6q(m!^sdZ`q#umckzlqDIv&bzU@6!$4EJU(e3O?y{wAlae}k(Yn!Vhf3c|SY>LJ zI%vg$q@H1Px#n%FbZVy_(PRA^zQb#8%vR_%#P@ku@++@^$0R!Vp|tY}@=yY39;a?f8vJTm=EZC}PcWPiM6MOc z70My~MobBBB$i*7>(ozbDJgoN|M0AGpVu|7=tQPc2f_WSaD;d3Xf3p}10f6~cem%& z(u-v;$k6PeRl3tiobz70zJ8r1nS}U&A>;A8MVf47L2dqA#iXINV5~w8AV%0gl z5vCbBLaWFXK{B}=KNvF5aN%dg;WoN$qvKsgC2kUCTBuzS3@YB#;C^-U=(FPk?~d0p zt!Uq84#Ueg(g84i87g%n5FR?bz>Q{!Ekcj?72up8*E&Q!6Wf(2tvH9t?ST9Jh<%5Z z&_{!%bZ96FV~_(62m)zHJD@<1aw8`Q2|m0gKIpK>C{K>3nXHt}%8fG2U^q?7V;^>? z&yn3l=0Pux*}!J^M>sW0=C=uqvm&K6+CF5E`~EG6spVq-+d+>lCTcFB4qe!1y8LkH zNb*3&`6QN`iIxp3xo*Qm_O_V2j~&EBaQl(~FlPn>o|zZY^2RDUmA&7&*of_6N! zbn&DzL{EN^f|zYRg`N-(!ciDv4Cv-Ct3KPr*^9gYPB0KWoS`x0;P19T!QhZ{R6{8Y zH1~)>?>4pYD`eQvWS8U~sc1NnXD-@;WcR}+NJC25{7UdchS&cqK%>0M9NE{HFE>%O zM`HueFl+acTvbn-&cGOl;az;a0s>IW%WD!aTGXeN>uYQxRzi4;Q~fEmGo84Q#;32( z{OHP~@lg3QW0RRF*OBbGSYJ{1wDYH&1r@TtHprcKc6hPqr+#*OMxTR(1lW0-ls9V~+54=@1Es206kR`RuZ}3dJyf;{T#9T*ueYo=` z4PJo0B3Fo_Lkg#-y7fIrn(j5Yyw|K#&MEb(Q0{^I}ftZ$-lgzTeOL`}zHQ?_c-abDrn+D9RRu=;W4D^ikmBYA){DoJJNv^ zN#`?jq=8nv681fRnnK;_!1BLzje2dQ_4IB5&>* z3O4*^v*B>uRF&;^jJO0A*Awp_U_f@KRW;er%P~?8l-F>&~QD8w3z}q%(Kfov7Iso?P6ZUPXq-kC| zVmgoicLN$`Un9-T%a%!9fNoFbkO0q^5NSnP3zplQf{R(?<0kx#I0x2(ACm z)_VuDMjuA(c}g^#N6xSgjZd`|QH3LWcGG6OAI8S9K!`E@s+H=hNpRnBeb zaWOT2mw^)XrJ2d;$DtD9DP^jK{K8%QBTWBoXf!V*092P$A=wk8RGV+qrH$dp3J${- z52U*!BRq0{t8#=njmO>|Fmugpi0v`;d6?axo9{AUwlkKOn>v9jn^cMKW(@JP80;p9 zkuty7;-F%_hFv`BfR3HsY%wcT`~^QpS;6`mqP5n+6R&#DNSGd_^SXBZRLsL<^*M0W zQ%u)^GCNsN7A4IL2iLTbpOz9iL!yqRI*zg_#3=YW=bt8q#q|y6Sk#~YugnF)iGp?^ zc|?fheOyY6Q+~>}SslaQxDwJ0(X)jpfD>#fq>o9nF^`RN;eVq_!-nch5vK(2)4wQ6 ze-3-bhN|c~^}djry}QRq3^ENLc+%;<_EW5vNiNsrS8q=p2+}T>u-;8e=m0#W&2JS zey%no_B%w&AM|J}HZ`OhV+j2rl?j3dyPmd64ebb-)O_wS&IDO6h3m`EzVC^Lezo=Y z@NC#wjv#CsN8RX(Z#0du|LkV-KaAl4D`M&-GQBgc&1ZS}R5E)_6#9U_e2M3D_K(e0 zSz+T{+O+4>r$6c(-q>Ik+nVwuk98f?2X~)X2B2Th2o%%CsM5rT`F77z#$el(X41O~ zcI6|n?O)wR*zoSxuD}C~3+DF;tYMv7nK389Al#?!bTeGeuN#RbLPl?>f{7wT8B6<< zz44ziKJyc>r~es1wU9+v!~srUMg#^Z7cThf zxrNsUK3U(bdy=0rT_;gV>Zcrq9Wg6m*j*4g#X2;16a|qr<{LE@@aClX$it+up;**2nOy{a@ zi^K8t_2=33hTVT3{Q13}QCaFfyqR+?SElY6%>H0jbxz+#rrl~$=$&yrgrRJ=8vyKg zH?w}4rtT4KI(SsuP^DB?Jx~PWRIZZ+uSbkLmuC(pAv8 zVQA=f;#HSoAFEH3n_8s8qTh17>PINrq0IzY-m3esWA?urWX@?S*8K2KL%>>pAs#-S2%oU;MJrwqLRczGz>{lT$8o@2Ka& zpOutv@A*tqRa3dBxG9OAb!lEyq5S5BbSOhY=LT8qFL}SSvE7IU544G^2OUmhGg8xf zMKQXc2z(*7l`L6Zv3Qa(fDkBPAgP4wbblQ9ObT~=pU5rZ{zqI3(9eCs*9D0Q2jqWx zy?U{GGUx4P8!ypYVy zWDCvw4yXu~!$92*hdvXa>f{uPql~R2YFt-V(iX^AoQ z6>i5C0ym&H9AbfHrcV|`vua?YAzcMdC5vq)=%E;T&9GRPLCrAT!&9p+32MLA{l{-E5#(8d_`cZ5tW#t3 zVCB7nIikCNyZW*FTuGCrTz}*8jH(s*2jtVk%kL9hP!P_y6Ct-%Q<=^OrBGjt{BLA- z){W^J53WX;rx{@P27tbRGeji=!gXSz=O~TPLDx!?^8z_ukWyvI*Hx0qZ@IT`8i%)0S`$c)0W z4ZY?^(Pugd#8b}Vm^ZL}^^Gs=AP;p@oJeo1nLgc+BPTZ@+mAv&cFwJGAKaWGG-OXsm&U^ zDQZ+NyJ#^k8ga>+c_?mZ;#uj~5)JWSV##$|zS4c*Z)En1-#y)t*}vBxGxgW23 zZF?HXkZ&mQAo3Hry-OJ2xK^902mk3BfI5j7!Ji0e6>>#`u7UinPW5JUVcSB_xSs2^ z<*#nPRSN3ObYBn0OWGwMye{R?vVp^u?M0s8{f;k*JF+L|^%ST}7EuQRKX+09nt=z_ z>o~`|F`T2$4|TuxrN|Et`o8G=Ho~YHm;uQxcHt|XypPOH#fJqJIx)F)Sy?q{G{gHi(aulf5!EXddLX@ZOSh zITYi{Wfd?n`)PtUeMarPwe3i#8gN1i1$a>Pc@0_gzhib;i~viUIhFyFeLH0;4n&~0|`v(W!!Nul&ey7~2c@}1mGl327pv;@rL5KMDPK~0RCS{fT zCf^7xayw&$?$Q>yr}ljYbysS>U^uN zsGQW@TC?St<2%CFUE}-A%IEKgTc#}UDEb6Sv&vhwUx~Cpa^IC|46#Y2%59yF!le!Z z6VGq7BlGazhBZSJ?Qgu5A%EMUMnO_zf2}I*&|*9Z$kkSx(JcLVXt}XZM?&L&RNq7l zh+m`rss?~POYWF06hcX%t&*=Gy7u_;Y>)}sR?k<2IDlPDmqhUJ*O8XyEh1m1eI_xN z(@DIhLn^-NWC7D(0w69yB3t^OUw8G98Sk{;zxdoPp^1Dzv}acprbM|L)f}sc8g($< z>n_->F?pB;T6+uN2+m&&>R(KJ22Ye|6j%WG{^AQr7$CY2!@tP$sZgowu6>Z-)bfaL zq=KQ%5fO_?3&*&+-D)iI*vyUJ+j6qno^GY_l@tGp^XRLO;F!AWH#Zfr+~~Xg^^n;@ ztt>pqr~5-)cSB?YO)rS@YHe(sX|$v2D3}!nws`sl;)axnBQM5)Qu*gEvAq#8(bRhz zHLmyFD+GXO9W!+?Dv@~aanXmei!h%nIAf0m2}kU_kF<^$csXeI2d}inenXvT>VL$r z&ppJDY5}oce@K}URsR$sE#JH3K9)DQ`yCspylPk=zy=lwN`kdGu2$c24ATu)p0jz( zhEglo&9-MpU}+$q1C1$DZ~g0mYm&UHzDhJUN>sp`Qo23pEpj^#POHb#eNOJ@);{Cn zr9+xOSNiC53Y0J^Lqx;i()3n^>=hIlm2L=0KU%dZ*5Q3Fo z!LqDkp23QW>6%aCcBz706X7k?N zWDZxhH=tQE-^zRAE35=V_u%WAc?sm%je;FoWpJ~Tkcp0;Vp)+IE}JXltIRb5@}GST z%Q)pQS^YnQvlM3SWg@ZFXvjsrh0Aemxx}L4)K6M|G%W$z+qe5&Qi1Hm1OsQ{nNtm6 zG*xa6$G_68(K#^G*lyR0;~3H0D#0jCG?o&q|7-C~g*vbwr36RTTp*g~8pqJn?fvw} zRS$^D(4BNBP-J z2ZUx)?eE|`tawO)M@vM!7;keUtwhKpBQI3%yBE2E%cYCH%w}`e-6^Tq3?pW|Cj~N7bTq7`)%S#QITJ^FSoNdPmfh=qiaz zWKP;AOORw0;y_k>}+*xc2UC#mbZ5-rj09k0Ru1a2i)~|hO=@8Hak&;&c~!DFs+XE~ov?KJnLpSeEH(xJ0)K1uFd)bBt}Sbg zP!9dQIr5w~NIuM|El%d%vr?=}n_&Uw73clPXwdD(Y<5EzEvD|or9SUzo*(dD%!-}t zUh8oapU=)IXZqww_5K-9I56xLgO!Q0ra?*FGKq{2&)R2EO!ijbtk62~T6?oM?|NTQ zBV&vswY!|Dci6XK+i@j2TZxL zOtY{g9I5h3w~Ca3|14^4Do6`IX<7F$-2;?6R$V=1TZ`Cs#eS12lC+^CT=55Xt-?ML^cE4=i6-N{{F6*SbfRkjrR3|*ypPr z4wPHF8dZ4Xf?8?IIWw!+pn%dvQIqF`qY&O5!LZIs5`-E8x>b-ibGuHmX?Z|iry!a6 zW-N4;P!FschF!^6Gl^22qIfvC*kekYYead-{G5ffJewtYQN}D%WVTf7`s9JD>d>jq zdkkYi1?qNP#HC#!6AI!Dl$zDrZ$f@$n$=%M;tl&QHQ@Z+FYz=bR_}0dmVD?!jy=p` zE;5qc!9_!0!Lg~jY^dlHD}j6DM_Ba*iOfR24q&KJ+F9ldvBQR&B*lQ1yssZV@lsq4 zn&&9?Ke-lfnehMWS*DiEPmnhhF{D*8{;}<4ds@P45QgnXT0&aBuAVPU*aWSO_=tmH z_X>E$9e**WTE@qv`1dPJ+y!e0E38feo+UghQ2JNJUqS97A`P!tSg;^kZbL8qP%8+J z&>h1iWiYRss1>N&|GL)i)0lWyfyaCEW)QS>}!4fE#&jLd5HxYmx$a(pt9}u6V-W{OCs-o$aLmwM6_SQeEIlE zQWd3zEZs>zAb-~Pd3A_O??6JJXU1duW^^UBH}pv!3q5Qo{*2gwAL_`?oNkz=RH`7v ziG&^Q+ZN9<78?SX#};u;5y;DOM=wRIS4B-a|GSBR@#yg`?9lms(HUJlJ}czA%U;@Z zJ=|w+d%ZT^6-`X@vj;jDTgzJg<2#6$+qoDvky|gC@}|>DG5u%Zc9mTcuD}jXnFdV5t3-ql(cDWVwkJ$3x96>T$Uqou#@SH8t6m4 z!2K}HH)FXVjK{*={jGR7)5G(frpvrMgI2%}s&qG1sH=55kJ0xzEcN0y;fGU50fsHt z;ulYGZKqi={rVxI}Ppy|UA!CZ1)0zvMA;rLH6U`prK^VNbK$E*ipZ++z z(bffhOh=*9GZW8(l4Avar54w#@y7Gbwwtb`vn4q(=DL}siN%Z%g^B*Y*+-U&yMBJ> zal`mn7_dcP*r>(3=-#p{y!>rt0m#tq6E>8%9EA#(<8c`NDvrGIS$;Gn1s`kOs9(g2 zQQV6KYM3KtH_v;tN(~7K?ramTz7KD@8LIas0It76rx>-vJ*CWK?4LNux%>vxFl{2F zX3eAkF&Zqf=afT#@)*EzRw-#OFTrJ8Pkzsq*k5!z`oY)h^u6uk2vnweQ)lf$=~3@& zWd?)d9j|^qkzRwKgX&15t0FOXe zYXda!#zMElj7Hfk(q$4k4vS=KTsUtSwJ+*#M(>& zgCJ8%+3ya#ig6}JILW%Gbt;dn3T_&kx3q-B6zUc_8qeC}2kLms^DpJc1Mw5&Qjb%6 z&Z={s;JBX2-E}@Mum*r^d0#LK&iJ}UjY_=qutOKDHZE&#nw!|98oW3pMKaIS?Zs zix=0EA+IdoARu${9}1XgTBfKWQSs1>f!FcS2io5!&OR$Bn-gwmP{6QlXUv{rVkw2Q zhI!>bqMcq=I~@5wfdLt0){SXmy_P`Uyep&_>&ylg7y88lcF|6Fz8Z$V!G>4B#44?- z#6ZS&x#%(TmxyW9kcamcEYPkKai+L$!u;Z4^L>CXF!1BgQCfp0mB@`d(JL=aKqi3? z-%#q&M6e$o$OcoMm{1mP9z9>^?va_^Q##|a(llE9LF9t!=z@JOJSb7$O1zBXrqF!@ zGB@>_nTDO13YD+VtPJBocV ztbftPPKy%H(5)kkzBP?QxW_~DAG64i!&5t#ZB{PPDDRj}A9Y0&r8W4?3CIOEirRi7 zV?nRlu46kdMHcYSRX)h|Lyb^MG|T41xpepO%kXe`dSl8TizYuUb!|2BGr!k)h(Pkq2+FIIyJCL*cjmS8yg@qJT}-f+ zv6aUmHaW{NLOot!LyyKpYGPD}U$;qM<`{P^ySZ-VUp}>|zmCa8)Ww@8K@0UZ1yuNE z(Lys9k<3_&up{+PsKUcT7P+%FsUg~6GA^Ak4UPWQ$SaFS}?18QrC)cZof|z6lToQs(VMVg_V5w_hdt!JwU}$%{apN3db{)Z8x#NIQx6jXFP?_2KmaWU?l~?U5m|`aVz@GT`@PAbGz&e<5C%Tj
      5h{GVH8FlAE)0!L10IE1?$H^FFt*>g=x%GbW@lny5em!k^vpG!1wcV2Og*PgwOr0Ge4xnz|P3e(Ir21u^c3T5?gE=4jx15lCM9V`JiVv4b3JJ2b;zFf=IGm9=X=JO>6 zp+gpQ>5z%Z{5(M0x5H0OAygc{Jh*UrX%!BHXr%?raBu+&xI>nZ+dK!IolbKEFG!>i z$irPo$wy5wGzZQ+tV8@J!SZ>h--n^^jaz&3ZH}Y(4i49?(4t}}Ark-*|9b&7p@eh^ zx@<&)jpYg%Fm2Wa#&#sW%4Mp2$rfW?d!!qQ$SFZ05^f%jgOes*0ba# zZ(H9!JhFRPeZMGIAvXxgTJViOpSvJ*MD{(B4-)+eqT0j;fNlvc?e>;ejf*5?f#6mr zgF=F``vp3*)*$73eueE4sardU2&P+$u$#{av<>5a z+s^wGGUSF?u8_>^&JLui^vc8g6u{Iwj-U$gy5f_73vk%}bV@7X&sz{{Jox4~hVNi+ zYutZ2@I_vr=no=~9v$%uEq?sVik7H}3v7#t6CAx(8HTbm#Kl0@VjH{<*{X}@NS=MQ z7%ePU$SB_Yu^|VhvrIqjLkB&k`Sr_@K7bKi@*c+DSTYQy%NG%C9&V-W>iLlh|1n|2;@WB3TS3 z`dc5MBUv#3$oW+jTt#{-%0rp@nZ#!lhL;M{og4IL#&5cQ16<+rKd5ghl>o9BB;3f2 zv0K#p&u5$1fS`P)+PAg@+QxCel|S)OjcVr?%_u4gtmo1ic0@HoKH~4mfj7BtUJ^1< zR%45FZ#wlOMwM^5F-xJY6JK1!kC(6iTq<@II49~#L4h7L=`fri9&-eFWk&oa{^$zpA zT`-<15UDds1h8VIt$B|WGevn!(1r!Jm`)&?!T3uGfDiwPe@?kv5FnA|{L;kkzHbb@ z`4DY2f7qH}u~6X{EyLSGJ;HTfp&R>0u(!5pC*S0_5`$i=gzC4L0ybr}M-4lNzBvYq zlfYm`o02wh(k2C_fAaCWpbkY?eiDI>m~|4BiW0u~A7R~H(}9!84+QSd=}f0ZadO zeKkm7!|2(s0I9!^j7gihrV^vemO4>6U!kmw@Q2rC?=Jkho0EM3gGuAPy~UQ(e1V6n z|BmspFTeJgijYW>>cJ(M(@>LbJ@7AM0bS+YU#&$mPC?uE;+cZ0c2=rl-d#V*sxsdB z!8`e9JU>Ae^BO@XHKhGjKk}FC$M00D^4XxU{Pg+|j_^UpnBDq&5?`YVK(NY7@r}Pe z8oz<^EO~dA%zuU#ieCh&~e#Au0NZ3eb^ z{?sjnRTD(oFWi#89$2$8*XX81X4-cPhlrXeZ-W6moFT=P$Xuj46Mbuqk+}V#5IJ|p zXcl)D*~j{H{d8eN+8m<~()-F+f~kEqR}<70G1Co)g|N?%-Ij*^s8|LLJEYzPc{D*se|2pwmC_psLs zR_Rn#B)g#rZ0sL9%hm4-9%BO5J~|$K=ZRSSDhPNb1Q0sj;Td?XRJ^>er8M!Ys!!(g z^pwe$=ZqR;W~97gSTf}44+#sE2o@-Fs@{Q6n3Lhd0$W<}!Re;^+MxB|dflvRtcd6- z`>xVZ5O4d%zapGFr$RETy&tJqA15$fR@vXpz{1|LrUlFg#wU^l)xau%&)_{WRFd(Z zz*c=+bc6ckKO(vwdQ{cx^-^;R(1NoAYSg0O5J_AF-s;2bf@>S@>Dq$MHmlf1}>Q%1Z!Zc&#hpVRW3v8zqty z5xZ^@&F@Z$`gU^^mwcvjl+&9X!Ox?7Z$*DAB*s0~#rT4V>o!GR-ceL*%K7L~yI4G~ z0S;Uv!ADO|8mq6lCayvY%=-;m;-T%2rVS3*S-_TqeWwxG09i63DyTCT+}rOrpBN27 zK*H;8J*K~ZY)5+6hg6g4XjoUkit9qdidQ?dC zB9PlAVBbDu#z3|p@s_GuE!uq@9E3zqCQ`9y;CCrN0W1b!#N5aaAgSExCq(jyp*?L=A9>X| zu^B(Uej-zZNM%NS#4dZWaU&Gq0sU$Kh7(&@+fqr&;paJCa5z3j&(!mQ8{M^f4%P02 ze~-~7Jwk^!zg*%0Cb`DV2W#b9tg>ne0@j`7gW4gzN2Aa_+5)keqf=SJgCl@?F>!@h z=LH(>`j~wf_g-rx zbEtuhIx3Hej4Pn^A%~o^qL8y4O*w#46@dJFq^`>@2963^vzAs03JvZUvW8OM;B$fk z?KEaSsfQJVY0VcP`sXW1abz>vD?Xe{dLkwbV19QZ=nvuziZ}z~fz>Onw%^~x8N!Av zrN9ygTq1}_Ec%Vs;tL_BY<#;a6_{M8FS0wENp47g|CL4aB@;RDvdr zQc3v$6gJovGU|7tz3=7@zVMnWgqQTC${5f&RV{59{>If^rRjv97x%!U^cO1#H?~vW zBct6e{N}IaS%_+fi(;CMImh>-l6)~5N`N{b#I18t9l6`&$b0s~#&t?z6J@U{5kUkJ zab|`u+CpvowieLNpC)$F1&CeaLXd=FUDnheB@qk$43}B^erO*gR~S2DnrEnv-hGP< z3W$%50l937S_`2*M_;sV%+@bjqb&YES;VC?%wRm5;X#f*@YJJmqZFoDNue#UM24t@ z*wKPs-~W!fee1p}s>mr1Kd%O@4-s+1fcogwkz;Rposs3DQ;{O;8C#};-_!E^`?uWl zyk(1L7`#}o_0JVFYuRNq^|@-yT(*k<-+9C%j}KMZhVlzgB;4@B^{!Jvlru-L-;DE* z8sp*Qi~^ANB3DQVJRbVRSZ6_E7bht7wn$|vt8o^-+{*hCK*)RXs>m&kYO1p1)5Ml+ zv~TzA#+=4E(F#-Y3-UoWlS0vb_^+F^FbMgpX$@}aK7|kx=R}O}8=iWLa zJ=DZLwluA^yg%AVWg(Nt22yD!mvxZl1BG?yt17tCd_hQ6_$yn2_FJHF)5Wj}O`Av) zjWJGBFyT8$!-DzVm$N!dx1n;2ZP$>4y9+GPEBH;phhdB_uW-HBQ@!?cQcXNuHM0H2 z{!)7inUbFc!#w*s+yivNmJt&e1V8UBAB1z}pV*(ssl3u}iEnJ1`qyc2=P`0SL~V2K32MOmTV?bzZ}!C486C}@78S@yhVM7{s03hMvTKYaBMhhhb84bMidRh&$yQ5isDLoSSOhz9V z@kH!Q(9C%COQ{o!>D$F7T|L+OCF&Z((rn&lTv(;6)+nUU7iF~#16eEWpQ`G8yE%-_ zJH8V(SOIk*ZS>F)xAS?==hB!$INB>0-?)7Zn0alvdA`dqG8rWi@^{|SrvAVLe(S+` z^HX2+9`W$QJ(s?;Y^cu5&%0FV3HiG}Cg1U9p!;eU?9caOPZ|BDvRMWjT${haC93x# zYevvsO<86=bqm>Ers_ojPdBq#{kQym`Yt!#J6&q>a^+F_vjm6+$(~DV(fBK09cM!1 zJ&pl8MMJ=r_WdG7<)NeREBVwWx&Dh~dUilpm6O!p|Se$ZNa)Z@?P zm}{ej?1rT}A1j1`?%5})(aa

      d)rh<<7dmF{oif%T*sR!(e$G;0WBvH$JY8RWdc4 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 diff --git a/doc/_static/EX4.PNG b/doc/_static/EX4.PNG deleted file mode 100644 index 7006bf285a345bffbc117bca0e76c18c951ea3cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15980 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 RNPvJp+tUtKHI}}({{^OSF#!Mo diff --git a/doc/_static/EX7.PNG b/doc/_static/EX7.PNG deleted file mode 100644 index 5a904c690c45590168a440ddd6d77f44b47e51f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22019 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≀vo3PTsXGB3`*kf4Y(Y|)} zZ8zKQXg?um%_N*pM2dGYkB69@JKN@Plv6o5L1iK0#<>VytKvHaeLH)%pV>2lA^cta zMi9gxOb{oovR%4(X6Gg?o+nOo6omCe3G^&Cm|JzzK5frG)m|aT*-BdF!0|SXhmea~ z6(Fu)R*SdqLn`>?EN?4C0EXi~9BZR$ee?BSuh(D%YwFjf_wao1b{{yOvzn@LS;DQ^ zpD=F?wxb(Mk39F#6NV0x8hqcedRl+qZef1n_eqg1Rt^|)NCnd*bthN_59}5|q{L22 zg?=^;J-vyyz9NIMzxn6H8I@Os+Cy2TJpyk_PHzw2 z-j*_Y`wM|D?sTKR7|0p48%B(>W?qro`UpRtLg53XsDW~TK3Cb^dE@HtW-|q6Eo95e zp;#U%%2mX>u=hPm7#UC*iL zA+;z_XR>*lH%1tEFgKm|n!6yLfE5+~=-oA=1H0ULp{~nEP$gh~*)))W{|UB&B0dj3 z-~}CVkb8%>!w^uv=5elJ=AO(Ww)^F;q}&zggnsnR!Mb3=qk`yh3C*aAE|9mBhu%*N zPx^*e0%=-T#xC^}$tKbCG>KglA|LLJ8!z_3Lz&=Lq{6o~ocSotjVxGHqMgLxM$;HZ;wHk$% zaR1+?Tn_Xgq!dMbtd}_1q?XJ0aYJhi0HDA)Z^fKyT}0nopiC`_2#+k@M^pZ^6=Mv} zh&7cSLNnfmuz>fiO|J*Tf-}39wCnls@JIcR@9Uxx@VG?I&CKOmP!vd_TD9uJ8xlm$ z%-4nNp$r(+e32 zukN|^UB~Ws1>RHV3-h0xj*H}3Y!+}h_VQ}ypu>e}m$BT)n2#OZWdzpt$2VO=DDJnWVhbA?2>8wl{A|lLOBy~lW7q3#1>0R~pS5=`ZaIJQFi*Di zlJ<7cpX1NE_-W&MJ<8NWv9mW>Avj6OUCE~CH5eA~6pM+pBsPe_0M4rE{$zzCeMDEN z%5TMS*Mf!z(fHzBxLipd%C@1uX3cGnA6=r-xz21m3z`%je*My4Yo=eHT1Am>n>b` zRr0}8zcC}l9&#{!>2R${*m-cYBWJe9__~B7QXk_AG9i@%jx8D-lp|VYe!6ljYS{3W z#nKt#{62@sFrgtO*MD!eC$UAkVwll~+y+eVATUWJ?JizO ze=Bjf&(qNz$a&!~djM)Is7adD3pBjrMEJwPKY5e{tp*kjP6Y3U@sI>Xm)lJC+>dlN zxnw*TPktibni0KzSn6E37#t_dB}Br2E?Zg#MF-n&v%jlPz6(GywV5n|NDHxcGtQ*E~+fj{0IqH`y>oQclu vz`TiWDlRt@_8Gb4|9{*v4FCI#|MmynR^!#RD&p}%8a_+IB12C}WPAS$epUdi diff --git a/doc/_static/Sans titre.PNG b/doc/_static/Sans titre.PNG deleted file mode 100644 index 7bcdf6b7fb372a7b881a8f6d5945f812733be89b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10185 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 C9wgcT literal 0 HcmV?d00001 diff --git a/doc/_static/after_replace_hexa.png b/doc/_static/after_replace_hexa.png new file mode 100644 index 0000000000000000000000000000000000000000..3d9663b3a1464041af9ee6e62cefbbc40b94ced8 GIT binary patch literal 3262 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 ZefW)Tu-A^b9r=OCfoIOym)l*w_g@46C3OG* literal 0 HcmV?d00001 diff --git a/doc/_static/association.PNG b/doc/_static/association.PNG deleted file mode 100644 index 8a972bfc7064001b60e02037f25c9c169119b369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42126 zcmX`Sby!s27cV^Yz|crHNOvP8t&|Q(58X9%cMKh((xD(7gXGXiOLxxDNDd&NAc)Az z_x|2{|2WTi_S)y{y=t$|+H0Sa2!8c~h=7g&000nayj0Z#05GN=FJ>U-Bjv?@1N8BR z;iLCL8BjOHaP-)~c2v?)0stD`g8o|LJhoYEU+U=q0KuF9KqL$R`144LJOlvzgaLqK zD*!+y2LPb59GkNt8dKNv7q}!cNRq-DJ@_N3@cJ*#GNj!!lTnLR2%9@#2Y8%HN-LR(tmb zrng~v;q4HMj}VKKF4(+aLrRW(W9v!zk6PV{MMTijyLSBV?@+X3SM{JleK^DBu z=)_++^uxi<|C0X0K!oA%<+K;c|C?SupvbE@D+xY}T2VHfeybK*_kX#^Yq4v*$;ZT8 z#Ol;tw^aCl)2v3R!%VSEo_y18fKU4mIwt;aAOZhJwj^s)`YtKQZCV0%cSUv|Wv)CR z7H3w zUHr4|t{-e;@;pO4Fl-QtHKIPnq z{vSj25sOnSs1G6VJUl~R{%8BtdaOz87TpFY?6r0%(SM`=vch9qP=`zYk4uToC}4}k z<_=Q7s}55>6wrNq18%D1a&2@7=%DmX1x()bc-}5COt!vpb4#L=A^4~+9=?9%Sv&3v zA3&Z0YsdY}8&L0zjciT@(bem338=%PABNV?6&beQn-g~iW~)#pP)6SoS@g{Jjr-F* zX$_+fD7r0@r22-q5O_=CG0Z4!b%qIkb!m7G?&T9E8v)97+qAM{s|Wbd1Ye!Kur_bH z1J}C#_C$Bcrw#w{4!($AzP&qV4ZSfS7?T!dz0n)ml#pfC{5v!bxP=ZwPllG)Lc#RO zw%s>giLcG48GB>@j)mi4Ap^Tf+;BoTjBx5PNux@MResC;84qC!yZ`vjYP|?O+?_Vm zG5RI{H(gvyxQ9tss{O;b?9V7;Ibz}j%Ki(9PG&!jk;ZgO79r;!edFxg-9>CW4kacG@F50>J}?5=~dzCj?Rm({v^JeEbDIK~&2Vns!ad3nb7GBh~v&m>N=y5A0T z7%UrIGo|@KB1~F;GxyOq{yOMblfUIQ2_~&2O}wYOQ2=9>foiCGm4$*;r(~k=a+Q*L0QJ{+)nl4qzfbRepNJiQ46|QHFB|=49I}5ty0&%S zaJCUYzGeIobDCqMMrezwl2kba=XdJqj$Py%%)nMXb25Kcq26miFjJM_bB{@amUk%0 zCl-U$^D&Gx8w$2Vukdz{>4Bg?gKdLmqht6Jy;18?$f$8@9j_V@tKTo9-yi%w)rwf6 zXZx`RVoTOLe>nARhP`-)6N1$0&$sDZ2;%vneAxR8OP`vMQFLUikZn2@49P8Bj}g-Q zZ>9A!0{W-u0FD@Glw zZp-E6-^|HZic-|f_UM22dtf>KPngp3UIF~U=2eSF~)Aarj;5MpkyIAj2%vl@nbWBKkLQfwFd(W zI=^vvHTXQzE3@{TRT`5d_Nw<^W5U-!!M9zQJ%RFp1`837S{&?6D!}jj-abQhen;+k z$3FnIsZ=u#By32XXfW{ygd5-JRSnNol(C?tYw2)DtmXU9*nwIbbm>d5hH%>le|{GB z-e0Wdn{>iG$ycWsyC9>R^myEqgJR$eK_5Y9bbEh>{E5sIWW=B6L~oH}nzGkGggRD% zyB)ALPkiJ<*qT`UxV-al?El=L?WCybFyuZ^rgNlTWeT#@cHqcGQ7TzQyupH*(>Zex zV^T%EPx?r~qySzDSj)R9#2T;r!6YrxbTTCeq#~{y$7tR95qW{z6APmjqGS_lHYeyD z_Hnj~WZD53(VT(BUuK%3bpGV`)9@8GB7FgtPY5iF0>QRF zS+oWKGh>Qb=hZ+y>^IwsthLd#fX^>h_#+iWJ$Kl#xH2J|^wNoZZ85T#?^;RyDSet? zMrybf!rWU)2rGN>Kf_Mc10F;rG!kaq3o8_ri}fTb`p$Dwtq>tuW$3+chkLik#nfaE zRt1SOUcmekRe!(xc~L? zg!L2$?q6R+fMxM4+1XIN#60C`wz>$8nQhzWZDmB(=Ul)UsVb_O7bz*fFuY@26E2>A z@mt2~OnD&`(W1&lJBH+_twH&1DfnMr&V zuJj>-8;xE2?SALE-{`vN+eNIgcQ}KT{zO4){@@vE1iIN=&)i6RUNjE~`uIJ`h_HgH zV-PI$lQ4jWAg0Gj@`({3{Rvn^#noG^=g$1=etA67n8CH1#QwuS^^+HtY3n?qt!4@7K!a43f<>+HgI*|3 z$0mHkH+%eSt7+ zNvkhR79@ELHa5Uo#n%J#6~rIkTfF%svtoGsl^po0cX`{7E|l?s2qSw>qQ`C8r|@G< zb@b1q#Ofk>vZ$0Afv+JX0q>)O`?p{!T~m35@y$8G^u>rV8FSa(7k>qKH!-fmws*31 zEV&y8P^u>zmK_ zUwt}?z6C<#PPr@_H`GcE3_|W|8El zJ_ZV$(|bac@6DR{V1(KCJ-$3nLvGl2!HZELgx6Gp#N1mz2e)f4M>tlC(_Cs;hXL$; zV5PTgd(D|#(t_VpQi;?D=vAFZ?MQ=jNWX0vorIy=+SACXSWsc4%Fes4$r{Ey2ft{ z(rt#!UI)sf{N$F=^slDbp=F zk||5|kLb>?$<1}6-r6BUUMn~4B2lfkQQWva6n)|*5+3b6Sf)0sn&}k{c8x(W4g|ru z0iafhA@~v$KXrK2Z_B7ikwFxi*cEr_T%A7x`o8;17z_c@)>X9H5I0@pT`M?MY&CXfhjlxPC@J^T7-K1|&3W`e^QZ8ZT)^~qzIU8^wMQQE{(pI# ztfS}WJ(n(RCY-m_u$JFOy2$2}&Fy`8@<}4yfHQvtXTi>^>MW-=-2~5vm$;PFaN9uI z4Hsf5<2I}nKY4PbnU*!MhJA+P6V^A`jN>O%TJ891SVG0!MiibmIS*^*qb;O^ddYnRqbze`9CDw6>{}-&mOkF*E<81)Ms zZnY6C|MAlldPDc%CsVNK4|&@ZC5=|YN@{vS#E`paMuWZ)osDb}QhsaDoidDBp`E_B z*r9<2XGMEqk)bK5%_`H{}Cs_qR9%pMOJjb-L@6s*yQ-==MD z)tw(LB-WYN)=qk2{fvE+-1O|wq<73GySwbx02WSSv7N+xq@t(%unU>h_tPG$s5 zi9)Fgwc6ZqJ}p{6eCS?sQ+K*0HU$Y8m1AbHHtqABa|k&;Ez(r{shCg?lfzm{Z;ng< zGd}QoRsw`J+N1sfcHjU&OWPt(nf7~^RdH*IO|DYXaHO79I8uCm8U>oW*1Rs~q-$h>=B1U)|@g7^9|^#%rttO$v42MGwF}7M6HP%O6ptHe$U23$r7YdC z73(K^q+9uN7Jidp#<<_AW??+7NVAU!-Ego=6%ANWn6rjg2_w}Yu{VkipTD7n!8Yvn z+(d{u%8z&XOGxv{ws&PD*}*&NV;EQ0CEJBw6=Tdcrl(3ajd1o?{(Kg*A1Z*h^e4&~ z+3vz|F#7_0>o>F@`|k)RE{s+jq~s-Di+wSbPKPJE_~p{K<)s|iNLm8A_?(?4s+qll zra_Zq+>g_L1R;sEPjg#(gb<63yU9zK!X{saKYnkCE?vQ?rkPo31fp=ddb|g#Ivlc1 z{#v#Yc&!e&YsPX9_^y%-8i}D(-xKv{4fAZNKiplASvIWQ4J}?4LuoaXXx*)JU$VKG1(;wUU0$V5;9e`#*ShB) zAQU067Ad-|N55302vB_72L(QzKK|=@L7zVTxNy@@`eYNY^-D{}Z)$m(oYVbUgm`f| zskcmJ#VHf$YNGiUji>D>wljN;SnL1&tDFyySSYvzJ)jMl(rzh8zKx2}T{>803mLTF zaB;^IX8Vb`w2gW4@T70ZL?~Bs31`03l_0b&MK6icNC>kIL4TZgz;q~D3!Gq%z;MJ*GND~wy2h)o2y z);5jFh}H-SCgBDtNyaxd0bRb=KeI22?1%&29qamZSeOI6621-J&Q4VYQC9pg9srJIA~Q5f^tR;c8m@_fg8VREgR#$JPXclg938cszPjldS2&|AWp z2>{QauIL8}npqNch2$@M-=BM&zE_AXqSc;g+G?_qoRRY= zXK4fuGhn@K>R;w(j}yRmbCa-_Jon%@#jOn6%dO2q==HnC0`HJB?U`T1xw%r>lzaEa z4SOZztqsdR0^LVO><+6v+;1jZge}51|2kMv_vZDjQd`j6)L05&F7#Xse~x3z?7p)hl}HtO zD))P(p1W8yqk;T=N zXp`P&(s@jBi<4=*6wh~3SWmm}Fq$0Sf>Da#{EEu9ztb!ZZy)d@ai?tLf2Pc! zaBu%!osIVn@~VanAUSSvlbU22)J;8j80%j@f}WV808m84@0LlpoxmdOx9x%4AGxNs z94o8I7A8CM=gK|TlrD{|{dDmXfdcXHFC>NN<)beo^7n7|sQnf75G`F8}Ym$wOEQP8}$T@~L#6aaaC21sPa-6BTZzdHObM*C-S zUu@jxT&zNvUFa*Mv%Y|%%IMUFh`4fIfvCMv^+JN!45Z;KD2Hm7xiNjyeW}I}Uu4bi-#fcPp_WBb<8UAvR)a zKi}x~nTFJHo`vt6+Ix=FqEmfEuvhA@(A)lX9J8u*`x(g@3WAeX=Vl@({?aZB5%Dl| z02lAGfNk##7j%A9`q)gY^9GEAMx@{X!y^g!^@V;3gynA;S=Arl$L*MFCSsJ}+29Nby{=nA?I zi<OtB#oFz9AOX$f<(SI^(Kfhg;kx(mLaanuBkTxp{0!GQ(~@ht0~ER;xsVrEcIyd z5vl|%+Q6`%hho79Oy4u6t?GmmmjG!;8l>Lqm)Ya073E@mn6BLGbAI$i&@@y>Erh6? zRywiUu0FyfQG37OM~qT>3M511*|M_wj9}x&WJw|z!n3fX{}L{Ph{F@ll!Te4uUV*e zY=pU(y|M`=dTJUdtmMpk>ZL$4sBnl&`p;8o%uF@TPsBfKVBi_)L~5mm4bk^8Y8s5A zB4}_GJObbQhN6Q1r#T|)iOMXCedcN2D7kg&0Nv^do$-V3FWT_J+lrFbj+3b~^@Lfb zpmDu*#c9g-bqIH ze%pImpvWSdLA(+Ml2io=cv6uI`1B#54%>lEXaI@S=@ zljG6e69U{e{BDWft7G`jjo@AASQbD;$(E*2AZl&teXkjBs!T7x*DN8vXtp*Heu3u{ z4EtJw1_Y69}C~VqRPo}z0O#~js2%!7c2G3mWb;X|2PaE zYEf`ps_X{Tlv-x``0{WMN9i2?be8RUC9ssL**H=#exe z<=XQY!zbuH<`J*~nqb+OqvSfx{R3&RhH!I>?g1g7sgLM{O(l^~e(5~Cn1pm$M0#9V zU2#+M{(00SMhk7ypFt0gQxkZ^ItUs@00kK!NnI>My{rNfPr0TGHcQbXw!@#k4n%4B z%Q@Y?!n2(5ICr)@jQB(S`)XP3`v*ezCstm8y@D80UwG|i4dtzIY@!RiLn~BB z^V5}4o<&%*R3GiBz0e0glAOlXMVUF6t|cN-dg|aG+4QS`AJld*iEa_b3j89fF1PJ| zg!4RdIJKtVMYe_j@2HPYBTV4#`1wZba?gXLr>6(JkNMw3dc?zt^~1k*c7@B^l7G7( zm51HrZ=t@O*35TvUXR!LTj=whUDVsZH^e0h4FiX-PZA{dDP&Xc2Vb3jT5(?Ex=YP& z`3ZYH8to2HkoD-ie*>0v%W(px+gD^OoChD=ZJfE~bJgD!2goqB9bflK=I=E{^|5#v z>WXkV+xuoG8I>jU;pNSr2EG)fW~#NJIGi-#Zm4jwI?QZjHTjSYXS+pg{~X0cK92Dnsdu#FA@4WY zy&2;>b8UzJzQ30FVG51gTyFp28?d#(NxX*kx zVeQr#gsFBcVq5sEcl5$~y~odRpAYt3y?=)i1=JR#kX}n{nG>%82e#yt%$xtI_|r4G zFo$n1F^y;JF|E81ht+{>!r+A%#QwjWcK(oc;fATUeeMeRqziW5CTi>>aM#Qs$*`74 zaTa}fdikMm%~*J$5u>H)>kPAT7h0Ac&^QqO^Pu9jxzfc&Y~q1V(2<{MU$~@K_@UIf zzo6Je+};<#o0DAD+{sF8`<#>2AB3`ZLPwc#<}q7O{>8lz>z%|0C8lU~=8!?Q5k2LO zb5ILypf4mIF+p8{m6G*6C8bxN&XVmz0y8N}nU?j$70@sg0#7>i8X^c z2%NJiL#O?V(9y=9c+-jr-_vw8<1N!s9ey@g#)#=$TY%s)3ZLe)Q?3Ljo2l-Put+e_ zOllB>JnXI0dxWQpm`h?1W`24h*k%3YYuDXE^!WJ2YOk$l2W8&nSZ&NRqkT=DdgtO^ zB}d?w2u6QNLtM|+Kd;}8BvQ@djB*T=<&a{!(*~mn>}esG?Qk6*EApJlSi)hc0)2J$ z`gcTC&Yhc{?y$idoCEw+OTQ^%52wo5;K;+TA2D>O-yVa8M3S}n9e*MpD?5dLb^iKOKCTsUdc z{Rf{GAAVhg)Bsc-DMQ3h3DO^GbgZrcF)KsdW?H z+l{QZhOJDf88FDg(63+*V|%n}_8tBAddL-%9ZOrRE#>lwH#ax@SDbS#VM?>6bFvsY z&upIW)|<|!jmfu71-`Df?&ikX#MmG&gsWxt6(=mrGBd`F`kY`!-0dD!@AJ>!%zZol z$bdMRC?aYr)7l+l>yr9ukRzO*KLbag>%VQ|hcnzyAGYQO2YPVn*8t51wAKVuX@R>d z3q=>esXGpyWa03{6qaEjDQd^JC9@*NuWe9m;PGhVRI2aDB||s9M?i5(CPkff^mO=X z{(#HcI?;@Px|)}NB$f_Z*T&iFn||Wi75z%-sN}qEg;UNRJjOEe|0kAyGpl+?9zNcM8?}F zD|(p2lzS$loV3=L=BO!}bw+^&m`D2sc%R`JBZuns<+#iBAzRo`7hvM)OLhd1zTXjR zH|_Z6wwqZcJXVt)GXO+^8Z$s<8M!GzLf0@t1{!&x<F%D1-@=mYI3N8FIGS3Vl}UpOdc_Lgb@kTvSc^OW~I?!~4d^h{*?P~7}a+JL+Q8gCw+Po6y z1i{;IO1psAU}5;hSTs|M`=vxT7`JeiwT&m!kO$t@sr|VO9VtdjtE#1mF2ho1CwFx8 z9)@e;O}z8E#Wla{NSWT}wJH|n+i^>1qE(X^vQBK`rKTDAx7+6PAYw-C{@sw3>Zkj) zrJU8r?VU`!mvx^{O->X`g6U^awZ8f9$eIf$Bz~BV3A}OcVpXCbH*187V$Kcc&)@C2 zA;M+SIA)Do>-@xFgH-U2nmfkEhc%oQbrfza5?R&E+5pw4Jgw7o9YhS_ZXbpYvvP}z zodMvv&Y4uhSh;pFE;PGNDv3)DqQT2ipDaqqnvDldxD%Zd5p6$~{ygd0EUL%gccucf z8)1yZVM}h;C)KmM%jh$PZ#-mJKG1|)w2A)y^{^*w!~uMfOX>gf>2kLzUYmxi2bCwN zT|jnBnFAwoTnlEF$e+pXF6J$bTFax;SC4ec=SBeUc^?y3HO1~HiFtm);Sy{MZ2aX* z#~2u`9B|;aRlep49xYL^J??ft6Rgux4w{xq(|4M9(se@G7i`n5Xq6mr#tOwYzc+uguXrCd_Pw6#_)f_tmyZ)N@8Oq*>H1$pJ zn|+4s4q^YKa!-O1%al|_ErH$0NMqauo8vX2skx!1WqawdusP0#P01|XkOA^cLzhkQ zKtG<@jvmNnFxqqQ&y!F_?F5U2CbxS{JZk9z2_?yN8y}XCwRTqBNA`aL8+#`wMD-^h zmOI&}vL*B$t|Rl6AR|5IBW=H6Wo=N?4xQi9c3O7DDWsk#Hd>|4gx*vZ4RJyGzS!_l zVOz6u;a{M_C1tm;p3kpDscmX(CpgYP2ev>RAo;Nm7{Ywj>sg=q1O<&pF44f6f)7-{ zXT3&;#43t5uJsck-rFaGgIau}qSbSnf&xFkLKRA?nqAH{^^rwH zQc=jRPQFu_mufR{b5R_Axto9t$xXmgtdpW3Z3mFhF>`=-g!r}B3gJ{o#D2Zs?g&nm zgyz3?B}0s@at-%h&u*@X8OcLIp9?DoEwDS{bt|2gq2I)#zQIzxaGLJnb!XP>lPK2dmbu%AcujSl33HY5cVBOW~*rAO*owzG2R zC3bYt_}8OZ;P55=>7ZIdb|s$1ja0nYXF7*rEY84N$+Zm4{I*VCmJ%?Mo&QvpQi&b` zqtwJRsZattX%3nQjaU2d8T>#JjHJm$*sf;A7_qno+s`0UO0B4He!`xum$;5YNi(gW zomJM)mekZMpp`2wG&Oc$yt1pk04hyT{$SznFSf z8iz&qAI~PFuHF7|Q2s|GL@f-75US&psU=X$SpY9E%QAIAGDOstO?FS}o(5{r*AY8v zb8rM_UaS7%RFVhMQ;Ft^4r0DCuv++Sc8>S~NjU^97zmk{9QC;8n(1L4 zzu3${Qe_xMv~@2Dc(-J}^*<24{)@jL)gK<8;tpAPMKv7R;GJXS_Uv5>QD@ejJx{WB z(@;A&KDUDWYkwLpUm9y<+>l7Z%WBrhm9!hph}>9qy6F9twAx%VlyNO$3a7zP&#ea3 zqO(3#?=HoYFdMSH!4^66yK*IHj8>QRI5M_)9OdXvp10f;gF2+1atzJ3g~wt9X@4$00et zvwR?vE>WU{_=T}XIy{Kv*`jfCd`blyMM+=jv)eqDav=}V#^Z`mKQF3Z*RwCkoXx9e z9qY>D)x-sQgvl`k3qkL*xeMDAFbjAEe4JNV%QvtLoHOTmr}8vI$U~?wW3o${SxkEH zq)1vub5P*VI-SJiM=YZ|mpo?HWc)l4eI$TN#-_vdhU87C<>i^N3H@KBv_Jkb=hqGT zPE~4v(ULHEs_;@3L_WeaG92y|D)Bz)=(O(nW)go)kn!w#x zzp`wUSB|y@v9F>MvG^yU0|l@y)?(Ko$)hDA<*$bg_MhseoE|g%Sq1Z4>sQOvbjC%< z`S@NFX~KqB5)9tw&Hqe`9zQ!MjVRWT{pNz*0 zG%C$b>oq-$Rs8V=$v-X5{g*ns_T2}|`xoQ)rih@mMgase+uhj`X|1*8r%_=U_m!Y6 zNTjbAs_fCCh3Sa-r}qi83gvCj-zwR*oC}?FMyo5z{K)oUhxGx=SIAu&v>OcG!g&zL zsVz8A*$uDVQ%xX^qtG_p)%t~(i6xzl7Bi;8^HU0k7SV<4&zh(cQDw?hydZa!nIU$l zMn8rPp*$dH_LbR_!Qndwq2-jCjhJZCFKn5TubtnB(e@3wvDlKXWx5cG1!NmLWzNaG z$rg%sCN(0rOcxJ}n)`f=qeGR1;dFAdN6%HaBJIqv^yrlN&3a3NnfWm-_B)y;6o#ID zR;iZmH9mhYr@Y43`k}SgWs&BXbt))Q&qCY2LwK;q{2Y82(ep)nMsf(sh>R1BCLY%) zK;&i&T_(Yc9uWv3wq*|bmV-wZ?do`5XnW3@@|!MN{3v>bjg9?+^~98dSy`nXNk@b@ zQnGZL_e(QSsA=e&73+GQ02P=zmyqF<~5ezVVQT~C^_S#9#%EHE? zENqqDxp)rOmR3bGU(Z=A)p~o7PEnvn{o|ZVeDsc6uj7Y(BvA>K8%?(p7B}>6E_F8> zKew>Wd-tM7k}(2fIV2pa@DJ1EgCP_@8`C{rU})_Xgu=-GmFZ&8Uz|%RcfKuLr%q{0 z?wFdWRFYR60&fw+P#;lcUU!jC&Na5o_9N~JvTK)=)?FnR$w>ll23DuG9CNh1wDH8P zBA+$&xRDZv0tLg=C9tKo$rNC8qb)=jE!_}OR~JLbRkShgyZoBh)RyF-2CDMs8(3zn z(R1FMbwMO%O4{9c?L4W1LLx8axbrg-J`=H5aSLUAAnsB{>k+#Fb8Z~5j*4jPR?YY_ z{AY)+Iq1I$;7qyawb{&<8su|++3@X;{c+oJ3j?(ytaL0U7yJDF;+REO!1N&>i~>G- zS|2P(6wV8t6?p4%{i}-Po1l)Yv2i!l24~aA+u^qHFs~%svbGZ0V^cz#M5CWUlkKpF zXTDQ>?GIHun!l<7_7rZD7RqJ4GE@!E|H1H60hA5F6uQwn7@ zBGqyn!;TV7Iq`-QsLf$~z{>%$ON0JN2NwsnXUw_h)!WPuW-2>yeF^s%Q!~rIM~d#T zwZ3YrXE*BwL%yL;DFnTNAvsYqkVfZqLQ+~sZ@KpU=jxqjfDgP_8YLBkZF z)pkrxIi7J#5Np8Cy&khy#|!e2i$8z3gZ?r|T$KIAfD>l(Rro-=odw_IxZIHje_E7$sZ>jA56hz(%&U7% zO&umvcR{ltC0Yo|dX+3EpO~Z3h4;p~Lg#ghwZ&)GVTsCEFg+}g^2uNk6RbhhTm`Oc z>R5b54()X`FM*pC$0&d1hyu%6w=eXhSzdkALr%U~cKaBPzeM#_rrdI8saXrq*00xI zZUg7h>1-3fe?O<;s>Nk#nCBJbyiZwXVwCx+yTj*NqOih(!wIy4^Y3F|RrD1dmjZWp ztcOyHjqvvVjN~LVx!CZ9ipwvfv75{&q+1yOmlZ0>w~uLW6q-+>o534?LmG_@8Ee@V zHoqZd`K^-ZB2ft~h&G;Ag2F*IlZzF}+MH8n0KRQ(@8nC-VyZ$=r0H{&ly*E(MZ%0F zl(YT0G&=?BL(mn=a~XcZi_hQq-jMnnD>;=K7`pN_3-0w68QwRQ(^o2t*VDZGTtW?{ z>kNEzr+4A4V{DyasQPH;$dkluZ$IoBpFd?Cg4?`0Ul&+UCdRcY%yeb0s^?B>v?|OY zc|PVxztFO;AG{CN(B!>^UP0e9T=$#+W^<@rAyO_C%(foGeLvL9Kl@t46U(Khd}34n zY?di^^Kqk6;47tqQ$p5-xPfn5Dlfkyd#$vXm8G|J_e`IzB$-Qd$m1{ z#*HOjukLgW$z7CurBr)Vgjm99Aa$YtDve7Vova}3a$yklV(xQSPtOBQAPGN^LC2<` z-KvQ$`H~#JWhq6L?^OOJH#9fecxlUi-j#egiWxYpk&H7JwZ%_CsOU`Hz1*WpM-ka1 z?A>Q29Mq!UTV6*t3t$PEvuEV`@)O-S_2FLTNHogGdxg~czzmWXVt$l@)^gkc=LNiR z-k2#Cl5 zkqx~I5T}G`)=2MAMUf(DFV;~#8x{EC)Sff|>e98lF#x9BeY$=;*3ymNQq)XT$wcZy z-z9CxoQX(GvdtkH;`gk^OJG}EP?d2}s}!gYDyChoi1dlfX`Rmt?p?#mjjIVt+|E$X z&VDH?uo&a5k;vroCPVV5=SsjjTr_&ONiZAa88?NzF8h&6T^XA^t|TyK+51@UnwkC} zga(kr9v?5s=$bp$`jGeW81cq;muD!gGs&bn|ZniZ5-`L>D0FiI1`!f5L@4+cx?8H8`nEUgH)UEuz#Qt?WMa|hG5x1!^+v6v1O1Xq4`e5}* zWwV1EkkCSuS)0v?vCNNGz>!0`lCecmxjmgah5@V3q_`Q9#x+GymU)@2XIf=n=*@9# z+Hb+rAKhCGM3Y_b&#j`h4hW(I3L`?C`xv9^lYa;bbXPQ=Y|On6k)hsPY(JmE_MEoZ z^jgwkblfP441t%l_WGtfRZ{f^cad)?SWwy#DWQhQyTOcC)_%yDL9K|zw;ochjCPMxGVHh$diWOEpTC?zfopUO9VBODq2(0Cu$AmaRN z;8Z(DYJC7t{|3bLdT}o4OQzw5rKw+p^H5mfcn`Aumj%X}8nLJBRCn3#NxtkNG|F+#|GlEDkxpj!&7qhIlDAB% z=r;e;_k$d4VnSr3g<;YP>zf;bJ=hq~QczlR(c+#WxZYAHia?Xyn5k7l3u#+3*=yIE zT8j|YDsDoDQZx+M+Ssoc%Y(eSQpJS=D|Or~!n<^UEhC#0#r`jWEmOJ>X~l`6EJmAk zeP{Uv+&*(jTM=Cnuot-|`oAN5FRCuR6pVCYMQ2vVi6=+B&NyKFDZNAh5JZ+m-ly!j z!q9JVuIPLvrAZyuAdvv^;~*Ha!@Lm1G4-}2=*Ij|pp+L`NQ+BM7VPV4Nqhds#0g|cLa-B&pB2)4yB9+!A zWP3_wPND(Zg*J>u8M?H;XAE8GB9%OCsh5=@`nq4(X?WzW*j54jZ3#02ZfLReO&3eyj zRaWq{T$y;yFHh&nNU{ZQ4G;40WHH)mz7|J@d@4F+D>^+bJXo)85haIYk_~=faRTMi z*fg}U%xDxl@pV%=IjA_C9jXae;tU!pvpgI~AN&!up~sG={uWjy`)%x6^k$aO+d@15 z%6SOtaVBPn>7I^feah}>rq^cLBMnWV7}uq(slzX(#)he*2jTRZhI@(C5;YBuM`A1p zqLpXEw{2EzN`pMD7BUP*3@vr9CvX;IUcghyb|-K=evXBZydP1GK{i4` zqie!dpt9~}n~D}DvoxHNZ^^@0?}$AM1maLskQ{&`dn$|6U$7{_wZ><9RSd;%D)zXa7oKa}0zyrH3H?W%K|4iW! zv^ZwOn0i#m=MT`1Qw^>~Ldu%C6Z*7d!)bZonf(AyQvwLrl3+%^gL!NZRs(GjCaxx^ z0B1yo4#aqk{!DImGdY)s*JlwsKyLlzCj4lOIioJT)_1YQoBny%FH~9bSB|yo=r4Q? z2J2L!n4wlX8f^^}P-34toUpST{O0b^@zHDyXqhhbm=50>fMolCF-k~b2t*=;l%%I{ zv2)pNm+wdkP_!%095BRxu|6^F0f#p$NlWJS1so#RF0J0z!D2hL)yhNd8(qVS*eX&} zZQ}(GHUTbVC9H241LSLy{(t?{egmT*yij0^P>*zdae_dRp{vac?^xQt`#uHO=CJR%nl=z{)e|QO7r} zWqDSq$o4Hn8`c@FO()&pbvP?ROVLf2jlH3pcF+(tT31eQJ+57J+A+xm$3gZ;o!Wec zKiy(M>dyGD;yyx%s3hh)bFtX(8hzhn6*N~)LPvnr6xG7iwu@J_r5Um`tdU2@b za;sTH6|R)ir zZbi28DJeX$J>1M%J!_vbkff1f#3v0|=Vp;oZlD?RN)%%m<@|<8sQA%IG(vJJ|38k- zGN1{sjp7>(BStrZNJ&W}3Tz-q2o4a0(G8=!yHlhQl*SRGM|U@fqXsG=C?L`$i0}UI z=Y84kZawEY=XZ%=jyk^!AATXDwCBnVETG>F4>A8y!>G~uo#PWu=r@2cNM3xJM<>=V zDe8A@JU@}SBXtE?fvP$$oyZ&j?95wmf--ogu#bDU8byf0RM@Fmi4kYN;nPOc=R9shVQ*r`ue z_1@3mH6ctkYwD^gQdlPF=^@fbS`?K49U@Ps3E>l2z=sHftTIF)i$GR)ytNoD_&`$$!~H?r`(Lb5%=E1P^<^o^8mW;>5y^!0;gc z^zbisi#GJs*H$6=(Y9uZ{kp*n1a&Sxcar63GdGcIv$Rvp;3@o34l!$Jg(9q`Z#NhO zKWH? z+>v1*XZi)Yn;7k?U@eAer1euO;%FmU^SPfDn9!0j59Ald(nimJ6$X=PfV2zW!z`lRqXtv&#HQ)7W$SANokbDzFMOod{_erJ#-uexP)PD;U9C+=Z@-zB4 zNsHp6X_M{6!g@=7M2o~?_eY0L(jniIy_5_9dh)$VwLvuZw<}_z$h(bXbn$leiwswB zFCnJG+{C(Rh|BWWde8_7dILsuk?e6Fzj*Pb&0J-w_&?QR28kzg^IFJZp*MnliYJkw z`lmq)^#9)(i&~aIRw+ho${TpUlq=q{Vu*H$$chJ<2Lbl**_j>|Sx~CL!lN^6 z2{Cz(h-`;}BIkX8`$g3~l7aLQCH}VK=jHifLPvr766JMIjXVAZv;&uYSRxrlImN?C zSQ}KF22XCDy$!z;OcYKwPuKVilo{Av@|)^*O)5FCQ!!Q&rZZ+HkJx0YA@L4LF*%x; z7Y%b)wqMOC-|zYBJP`-p;dLqdNrhCv%iqVct zt>YzNmWsVFK`&a(EPF`X{~Fjca@r?DQ}w#<;cU_tgt36qx>cYTEk88;o|<=@#>}%T z()SI|swn#pIFeZOH{b8`+>bw4`i{F>r>mMVs(Up_N~sP0J~!Sm;e!QDWLcoKYgJyg zzZx-6s};dAHwQQ$Y$@W;w4j8}|4pi>#WwaZw(7ZgAw0Ic%F_H zX&Y3V;{EI=dE{o50}3UGQ9XpdnPo^JLWh4La3^1s zI6WN_S9Tq+wAvj9xjJzF$xIv(d4-3bPkHBs;cX{gct&qr@3Psnt368guq353xA+r=r zNsCraMf0&cS>Vjew|;UTdcO-MYzxMJAT4HKB#2QbffiXIT1roY2)8CC>*1Bj{Tp#0 z7GAC~St4Te=4Imp0$(u;Y4)xten3s7S*F!r9MobcFu5s34?O8W0{&KQ8?$@tVQ@~1 z+|D%7s-i~@XRf)uB0#U4;bW-+0ciKA^o3a3u~Q&gjyXpO1#uY(;>7nq$%f|Hw)&Ozi(_w!@m91)mFCf zARo$R8BoSsldXWDXpDCq!s+|{Bp)$tV5%|aJ}X+pX!Djs4>ziIbRTn4kBJgS2CFS$#oym9|&N0 zp%O7LT24}OLF`4li6p9H-)@%f@#$&FB(RP&|y~Aj!E%;P@R=P-e2RHFF|CmuVgF!Pjggux++#cFD&~ zYBK`u<4+q<4cJExs{RI)i1&X1uD5eKth(^jR#J9!-W>h`IO@GGy6N+M_dfceSLO5x z2DCj9fyh|(*+`Zy7zI9`iWIrf`C=hSIpK%&k{g)ecY9^@il=*@#}*7Co7@Ede$5)HeY+An1C`|8AJb~W@f;F7~Pg-~ROpi2gO0!_|9&nw(9&a8FZRHm|(IXRBrQQ@rBNSqlU3YM3A| z!I%O#Yzm$vNbg;-E_|ns2&|pF+$=gF$3!mRAwIdQp%?~U(SOWbidvA~sTtw0HkZG5 zH2}hAHIV0AzuUT(6xjOmb@9bmayX0x%^zFzAUz6R50~j^Acp0qzN{fYG^N6c(KOpU z_>93nB6s|`AetF8-GSkV<@5QdB!uDDbwWZ&m8D{KI%6804FlUn@i)+b!YzFFN!{c( zs=s$%g0_3jI(Kdkzn+-ap>7tPaulwx@9GpiE~MPdPu91swQm*%jC7*JvZBrF)ML(6pj~uD6j(+J@J0>XTtB3ik%@yUDrZ zykD2U6n74}cV=%_j9vCW!&c4t4+=k`z{rJ9~lxk7r2>YBUxSBFJejc`e z()|=OAw*=24nTH$=TuEwA&D^~k%n(RwTpqQif4{?^1Gc?!r6)K>O_hdD&UQ{K_J## zOqT5?%2<#?miH}{8|2%f+XJkk;g@XG?P>D3&Cv$b2+uid{^ z>x4T`5A-j)J6U|Bg;O^K=AvWiSkoLH!~wU9E&33#j&iv!sm>?6Ik%oeE74d9Kc=G} z8$T=twv10}(*_vpeLnb8Dd3$m%me?6Fm(1_v}yHoVJgtrXOKrotvB8;vWArml9tJm zbYE2b$c}(ZCudore@r#!c_M&-alND}`sqJqq_o^m|Q-Ti4q>8es-aOt<5YVhR2pIG75>;&Z777_Z z*JB7i$AAireSZ8g5;X6;Yv2><`hi{zy~Uc&cKcqQ9xB|%wf5dk&U3qE_WX@&WWh5r z=TA+Dg+!rzQVC%oAH$*xq6qkdFBXx^BgfkKn3*RRv`?M}VJg|TvT+@Aa^zp^-`^|7)F>ic?1RmbB*@p#Ht+@#4fR68=b5=GNnwWDKTs&w`=>#j%Bq>0$${V&XK` zvmbHxiL$KnEzzF^^(A^mzUrg7!^&u8znR&ux2x*awqQy*@8=>ArU5=_?|Svu3sGLx zBxqUD>?pWNXD)s}-T+R7pE4WMc^2n)+VEekcHCZ!n?KBTcyy}>Q+uCFStnlwI=q2% zTmX$g1(W(2CTQD`wy;y2{l)4Lkx$Y>BQFsen90y>-v={Ex%;{9C_6J9bnm7x>SJN= z-v}HL2-trI@|6X{xkPF`Tsqz3B7((Q4<$CYx$W=~=1~0~V=HcKUOVP*o?QAV|8VB$ zK0@KvL~brQASV}_B)h5_o5KAEvLmtQt{VQnj5kyT3}$aWvg@Y-6-C36DvX(^02MI1 z2$bUO;k;g$fc!OM`|)4Jte%_a5f+BjFtI3na)szsbk0V_N7^OEcY(te)w>cjXDY}T z(hbVvpnl8P4z?nOVk@TRQkd~O&$m&y_5>c=!Tz0M1K!;p-yPc@ zw@cN%CZ49~B8DY4p(Fu}hHY{a6Aci`m#j~QzDZoE7Qlgw{=3r2sz`y#34dK!#UHRt z6UG@NRf!cD*l(A_0P!NdlbA79+EtpcGdRjO$<~;Oa~ILGiMhFCy%|W$0B*KXNj_m? z8_sBIS)~F5{(PM9yM{VabR`g2ednu!<0fpt{)wXz+?+JqZWS{`6&7LIq**)(aze9Boyzibnn3ABGqezJN zBFbLFua{qq?1F3<5PVVDJ28-QuPbX2+?)eMbxbKkv?IM!8EiH7SvVu zcS112zD7{1HxoBz^(B~|X1!tt7Q9euuV-a*u7N#I+Ot`$Vwh(NGfTzY3pA2xL@QuOOELnSqr*gPe=}FPAi^E z)>H~kdQ|0R+uQFRu62u<2_NQp!a<8W{iQi|0Jqi4jeZhl=#(5e52(f#Nu%LPD z408^s`R%g!9B9Y@&h(plQ{XS?8{;fPWas)Oo;6`ZjLFf@e?EA4hN#crp*Yx|*bDJB z)-&-(AtU#xmnS*%5^2l@HDY#V)V||=V4O|8RfQ-PT?}bz>MfCAQq8~a8XYhcJhGrQ zKq4(C%FUHxcMGj+B00o0-hKK1?>Y$tQ}>%(O^J_))A`G(>hxkbpyI_+E$DP=V`QzK>c z#H7`R;YnjkyKO~cu}ls#i7o>-Ce^5mu;fQHJ^QHnoX0@Sdp*(L(Xs9)astY@;i||s zl5h|K>=XPQ;!&KZD(WZ+1A5cn8NGG-24)7%0~uV`3;WDJ{WqI*qt3-SC4gm2>|mi( zE=_1rHZOsaa5~sE!@wc}%lchP)*wiIHyWf#`x?*w$tu(_CvE;AhG;LM5&Mr>!Mw=8 z#q3>a8$I&8iD|+oNgsfABv#UCH6%iao!ZHw;g&d1P*Ad!)^VR*G(6mGHqp9IONsC9 zZaMieWcJPMhd9=&abil=#MOHo@^^|AGgo8L0=WFs5ia}nPxQ&z7S%EB8UR!KTju+( zg9~DO!m-Fg&mD>_yP6m-ZqD$+ij3|mB6RUL!K?@iSdfYIN;Lohr2?We418V?VQM4% z=vg9jtJR!&Dh=X9i*kTR#B4*h3QFyUY|452Gld$3c#=kjlnzzpbqxOqW+E3#a)9L$ zYs6X|G-u~8blEaKk%z;lUu9mwPlLENlR`yp(U4#{FrG#=ta>j(7aoHpv_XRr5_?dJ zBHw+=Xq1w$!sBUTbOYz2wV@l%-Bi}P_>q<7B`2>t?ISW90@$XT()WLVuK144Aus#* z8H#BC-L5xq9~-XSyBtzHmZ`FNW?3_kn3pnHZU91Y-YbdMpetT%eZ=|f6I8g&kX^`^ z#`8v^2g_FNGj67Ky7j6d*jfZza1wxCcU4#s%-a~#X(ZS29yhZAdAV`gZ+oIVCjgS(LuLmkSeWAhAy;{ zJE~bNqq3{H4-Y~v(O*2Cv)=Vwz}r1GVm$Gkew$ne%|E!l$<)J&^xk>`cr57nNzVw% z(o66l5g)@fZwnx6rXQj0H{4x$8RMrgP*!#TZl%`7K<#CD1JL2{gXsezj8g5kMFWR2 zit6$qF}j3{1T&yOh#cN-ha8ma{{Hx%#$YD6IBMZNOhWWxd^k%%RLGG!8Un>He{Esq2(ABFAk*~F8Cs=4(T&C!O{8S?=GzXqJh%+abPN?AqU-h#~2 zRsnjqqIUr&;?qLqv5F@LZgUJ>CvLn70qx)oJCu#pddjaOUv?z1y75FtC~=)xZ(i}^j)dgalUG1 zyqfUSdL>>1;ah@{{<%auVVR>HB4(jjoO9o2Bk&%JARXXHFGuGll8FXT2{7ni%wcO0 z=VZIU&+T@9Io5f^wM@sBJRT7aSdS$jHy7?0j-Ico%$|oTIldnB2RuQ+;IB?cM1V6i zi1*WzI`EGi0L1C1bs&aUk7)p`l06(OdBxTR8l&8C7Gw3-%Z&(^K+Zz?{`+}EUtd7A zgp!H)s<)Y*D+$-86fN9mVVlWTovp@+y&pD&IMBimg<_WORkj1UzyLjX zv9k~egvMrU!KI?%pTW3+Os+vWtZVVWp7z%d=6-HHSm%^IiidcMQI%NZops-=#kXMmwnZZF$I;y?(FlUuvF_`hmVcG)|w(_ z0QY+j56bkdp29Q)M-m!g`xtyGbWK8lLC~+20xFwKX|{KuAB|Aq9~t4XqDi>ke zm@~t7D253Qc$t@*6rI8mCN4o$ldvL4*|N)k!83D-X<|w6R(%?gtjZUW8?9#6zC~r3 z>6|%4`<*WARQy}KJ=I)Or^C&l`8PP~r9ICmv-};Mp~;3!eT0nPp#%+kwhfw7DEHoQ zLi^EWv^5*l3mjE6IL=-jLkcv<6yDn@VsMy@r~zU=jHHUjz(0Y*@gS=jd^;MpLQ(~5 zMoxL9NVxD7=fvdz0*FTLMoHk!6mbETIFsd=xxBee_&AK0X2Lz%zopN>hrGw#O~|_f zz1^Ej`b-~98FKZT4JcfP% zn;svn0IDhCGWMOt)Gr2_<&uft2aPRjC`4ziedLAVE=8sgVUY%ju+W=TX=Ar8v43;Q z>?U|}DJkjxcxKS2z?^5ZAE;-4E7|)UzIkWHQ`m+0LTt_UmK1LbN`iLytc!FB`x!2T zfe$kE1UcN-MJ~jOX%Q1+#65_3r@@G06j8U>DxPtBvw45L#zfnbpq{}>P`2iKq$2NSuWsDq64po{Ny$9o zR0%mRCo233?qbYYE*uHZ6RwyBff3~amTl6a^}IWcv`sY^vk{do?#bMS!WZ{&hdP|O zE`gTIy89^fI-z|gjd$SANSW^9?B3g z-;ajBW`6S1Ki(S;9aZ6=iIXOK;?xQRBH;_*%!QIE7f<1yJwpry)EO;~)ABf5csakH zc9R8;q<)rEiJd7kL`fz;HmGKa^tOyxE}1J#r+(U?5<(sdcvYS58|$VXEDT_5BRz}$ z0H`HX%YtD?V~#cp`wV7i@%f_&l{bdnJ)e>lue*yE{U!e`X8&&MEn$acC9^7k7lp*Cyc;QCaar;HCARBsrco%3QM=PPa)ZB9wi{?F4u9Jq45 zh9Q*3zdY}?CUW@62ifjsoNHHZ1R>>QN3QS~TqIk-7B%dSj^--HL8E#6c$Ia4HKtL! z2LD>c*h#)9omTO;Ko(xahi$}#;_%Jx--`^%k+$S`4_OIef}W@-I7U?o=_5umfOvUP ze0=~U$1QT^Hc$Yld zOXdgs0a*sCgAdLi`tUjqfITVtFonKgI9d{N5Q~STmvh^LK1SNUc-I<0icv!L8>J`- z7iH%#!fCx=Nq%I9j9&eZ4PO)+co)-QC{I4Sk|T)Y!vV$WBimNklw1Ul6Oqeen>HS1 z^IavhxMf>F*bu>(^UpZu6WQThSr0sF>jTt<$PkF851sgwFPI<^#1XaM^AuCU^V$#< zh2645g;>pzlFM;cZwnEr1(Bg?jFJd9>g-|rS|t1@ZIUYA#)=#hv16QgO4R@L1FgZy zIGO5wn{E-sf33)6VC9?g1mRymUAE5x+w~OD;h;x^Rd~h`^=(`vH}%Sf#SK&mp8-5l zPZI}+)_$rU3}s1*KAT$Oj3vIB($>w&KCpCXgcY|qA^-k}Km9k_0N0^XDwf8H=GLb) z#Vs_*a+nirlA7F*KZv(Rni#FX7|d210YLAar4tOZh8P}wTzg~<{IBob)hk&{f1_B$3i>|5H;B z)o?HI+dhGzP@w|Tf66Co(4Ytrjd2Y8BUhhJStVMamr;tqz&TOZiPkDV4xZsuY@rJQ z<3d*kBh5054oNM71|xIqFqU4txoog;(@Oes;_*HURJrdyoiP(pc-EXtM0@;mNIZ}L zxGsPcToH8D;{kMShI!nBF5eJT92>%{^Yy9!UXvFS-2C z*l2$`HO&MWAMfmit^ zVp&(!BIHG~c^dWHrz2aas=xE6Pk_KAr?7S2Ia($%D8wI!F}2voKY2+;SV9l5Jj6M3 z1B6lm!gya=X|j>{jPCAg#7Cz}=svwIDgN^EOU`ik`Y)^Xnkr(@SN&oGci-qq`9~VY zBxq#9MkJ^8smAO?IV?XC8ysBXPX$0f#FVTjH1Y-WA{5YmoFxh&%01(rm=j*Y)QLZ%F`kxj7k}zg#|yd=+XGdX5bjNQz-lPso|1 zg>qiZ1LZs_aobO8GJZK>p($R0EtEX-!qomLe>NrFbCiS7HXFJ*04l#uNB~MFLhrs1 z-KV83W`HHVW8z1>Lwr=`9dM+FvDyVT@K)#z&-KowzGKp!l~oTb@5KzcV@G`E_uf;j zxXoNIl#ncVbDqgzqF%2$;jjlThNY3l5$03^M0O4PBO;3^wBWW z0Z&UbT*dgzs^L8}e^l;en;NcQ-+fBGk@)pWg*jqnqt9ecw|~u;(92TWJr{Hl*a|jW z7cC>Q5W7oKikLG@em&>?Y|ikJ?eT2wmKrNp)11A|yQoylhbSc!jsSpLY(~uynGC^; ztW-*G7!R6FA*cYVSMq8_i>qDa2)#VBf~?6M!YX3%zE4X-oU|LwiTg|tVeMwM!ACbh z@`pvuR|W1EiXw*BDs9rZ%~_80wWj=)WOk6+LQxAPE=roPH!aioqjZn?`}t<+UTn)t z6qZb7nEhe@;%&&@=f~1re{G__6x$@*X_)-&kF3S94E~!wX+MtGqh7@=z9@`_IH3rm zHEEP`D;zvsEV-j%xV*oNL9FtjtC9^_b`L);BSi5#;FZg~YYZPAn$&X-F^nfpHN3Cb zNMtJGmteug2z>PUL{51)xcW@;mcqfu`6{&F4?+1tKkM5l=wexyxPIlxr*vz88ICAe zk~UXgz3LO88HPZ7vn=Gj@eKx_&O9vF(j?}_MTmt(*&k7^>0xW8lVqK~;=7os>0ohZ z{K2f{DV_kXgnJhnu2=cE8%9ltse}mh2u$nILrPA5-=`= zhl$>IsWZc-~y(6K{94J-`+lopoyHea(F(N3poHRNf1@0%3HI@ z;Ul%|#Bw_qzxy}1aP1%Oks*x0lYvx{e>jb4HDyHOuaq@3^K(*pE};@? zicFbWigOALzOj*=@0P#b$IQPnRw)=Rt{OxH0norN#NN zyu%IN9FY{Z{Moq3yOuF^K{}*Q#epIE6RG(7h$eU0Znlh3Iqi;`t?xeU5{o`lU2LFI z4`)&p`lLwS2x>229gNgnIU46j%%Zg9qAS7>u_QIJezzE-n~UMI3=r2$Tae4G8S(+_ za(c5rkO!G+5L=*MISQV0fbCH)ry}hzI{C|8Y~>Ve=-q4+9jf25K?~SP*Vn}c{3ycd z^+1x>DzcVaWR;0|X3@X)ATB%)T?9!heek~-)Zfq4Sg<9Id9F-@=b2k3-m=sHXU_N_ z26_){IA`9V1)?oybK~GkACg27%f0T#SDB8v0W3m z)K+1x+xT``J^;}j2$n_Y&`zEuXx+`4hu91GCb@Hq{;pz0pi=Qp^H5Gy|?F5o@?Z}V6Yr_R)Yz5)Jr{^A;zLbDRH_E zCwj#De(CyP^|KcvrmSFNyQS=u4=aJExk@e$x4O+zV$gE}@17EJDa-4f1VNdXaCE@Q z-n5AG9IRuRA8E^}snDt6Z7Dj* z8$xz4A2K=eNTa!|d1jq{2JuQ})u23TK(a0vI`wYIGZkxdg4a#l{F(P_RKH$1&(afw zM@bCqW`n|5;mCJ%d*8KBg$jdjuQ-=&Qc&eFFyh#mxJ#^WjV`LDRu76T%X(VnihDZ) zL)PK%AChS8FiXhX@Ifrgsr+rfagWJw@_D-BkS5hwrO6zb<&Mm{zPPk90XsQw;q6Jf z)ki%oV8rwl565csa-#z8(BfRS_2>gh&@<25lWAH5=MT-gMHkT^nU|(fggj8-r7qAU zZOuY`7ndA2#j7)Hi%4fAC#SR*CG#+-_+{f^;7}vJ0dh>cfg~=TPWp=fK7GH7mJ>KXF}&9SYEwL41lofXz}KgoJtT6Hof3ae}?s{DBJHP#~kJ6Cifin*7j`Me24 zidL_#Ek>y}=W;<$=_~n!(m@v`q0iD8P-7P=!TpJlU1Kmp7Kp>BQ1cFiOhEL2n{MFN-~)SfdU9h8|TjC!6n_#C561zV!AwaMndhH{5|72_8w z1aF;?@WgHiRM$I`LGz0Sizga%H|D`D%z$CS^rNmejl|V;HIqZRrz!_KS z0vx|~(1_5;?o$UO4`8#xl&y8NN#5{E62(NNyHM{=7Z8|k_^@bkM8rlM5#nAFKs7K! zIF5XOw0Za@bQ@J%*X5I0qsV?eQFvtJyf3<#f7!d%@bBKY$KSIQDMGhj68E0$K3Rv4Z?+gdtmXn)#zPgU@tm@s>mW7&v9`TQj1wi;*!X56M9K5=-?{N?a(RwD;2$c%+cEvn*1dW-!Spk$RSDet0Xirhwrc!_;RpOM znp~e6@mNQlHYI`v6%;f5k3Lhu6mqC9sw}uT;q&v^w#wA)QhTy_`xAUzNLY=cKb<~n zc_-QY#jSWVyNJW2q%rRU**?ONVu9+AaaFK!(LpplS(_mHpcL-8m~%~M%M8&oP^(XW zUmu|aJ_BUYeQ|gc>A=Z3DYhkT2vxCpkLr87RZ!pe-A#kI9g(XNp8w2A9#rX#eG!){ zwG~^L0HYEDboyLmJcg*iRvzfvKSC z6Q$ncaD&j^_}M$R}&o2@-{4!SZFhxy2Mm0QQd>i)61W zTc?fnjc(Dw$Z-ko_s0Y}J-ECANq>9|>|z<9vB{cE9PH2Pbv{Dj8@VH>8Vf9GH)~Ej zwC*T9q$T|wami@8G`&v-`5vb_X0IF@nmMIE|KNB~nZN|}+3~&En9?`|7GQoTTyYn- zzAk$*^)ctpR{4jHXjkCphR>WBrJqZgdCG#sa}$R~Qpl7fc7tGQ(^siGFGWwu?KnSJ014=i|V>sg<#5 zjlm7FBlYgz|NZzRovcqj`UL(^siKrCxwwIxh4D|;obefs05`*j)ffYm5RHgjglkR_ zt`p^gaOYHknmE1o~=MO*g&)>m2%ai~Ju z-K4{=$#GC~K)<-`$H3DeCC*e>{?vID+j-#jhiOW*ph3<0$A905I_Rj@)?eP)#)aO( zurL3k3g#7lKg{?y{#@~nS@Ig9Ec@HqeDm#P@W1Dl*LV%@k19iN#~J@!{)ja!a zrqKCc4^?8n?@=>z;cABBf6T}dD&VGQSmWp3&|FxO==ZbP-wJ=5f(ouyZ3V_Se=hJf5aX>>&KlYQ>i{V2p!(;P{4Aa zeH1sTZ9#p@y(wl#W;gSN6z@YWf!4MMiaRd{clymPI*Yx2W8LT$-`}MEne_MpurYt^ zdBHADqq^v%{E~R)ZZBTXZD}1U1mT;Zt>f@v`E~DS3X#91SKnHL=JNd^fTg9Edr!at zvc2tB-+lw-A3*D##}4y2el1|| z?{t0BZ~B*?qM)&A-gY`wzlkoWw-w_IYfBID-drL zAG8{OFp#Z%^Xs=PRQvDL?`3!I`2KdEfscN}?{0TZkMFF$9gY0wffx<-?j*--7FvtK zlUfKN!pX$uf%b!9qFrP-$gnNxQ$O5g3*t?r@K9EL>y@d`bC-o+G*|8O;g$-A)viPr zc7)X}+dzf20s&aiZVBNrH9a?d1zu}ADRH#sw>O?({2^XO>%8)mcPLw(9~$pcJSt84 znw)MmQWBS>Qp=j68G0`Pox6By(%xjin^$k;K)7C27VgO`X)@9FD7t)+=2)0hcd>k8 zkKmEpYGi3RP-gF|DIjfI_Y;H%q@O5Y1(SUAg%fOVOX;eE@47S}akdUm%_;v3x3NOb zYmi-0&uBV56y{4<8B(3j$xF>}B0+og%-vgJwl2IgUEQ~mko}wg^2?K8BFS>89MgYq zDe{j8sa%%vqBzwgwdWasKP~et!J>i;G8Q%y`b|pci+vrEx-oL~C)pQNfn$gza&YSXje3SIaZwycsb0XWQ!9 zb&`10Y!T@fk{BLw^%4&hg=4b{z>uVkFc;J}T*hqW>f7MANYPmSGU>$WnlR3Y!{+@o z=Ygbqg~()yRtNn=&Oo!+)S7AD5Prf797y_+Kk3Y$IsARFrb@u4Ey9QoFwga~;%+=%R7|kWyJbh(o_|m8oIaH=%>}`}BxB)@=%=m^TF_B&wsvOv)z+_Y z4C?fs^jGE~0>pa<5`}HeEhp1C#v+3R7esw&TTkSsp{)DVJMYJYqc7*r&&86*X6)vo zKQm91pe9HNwT)+n1)dozp_tq0su-E{l&bmjEJY!H4JiZgc@0UQT%EPl>Q6 z$lS`9I=oI}3xI1mU2js~J$ z>|zH|&Sjwt%Gef+?GXN$M(=@(TxQ3UzI&tM$|`PRQCmsIYzf_eJ?_c>t6tW!M&M%a zrbirIXToZzT0k-GY)GIv97-&Lb!MM(U!+3V++8}VjEf5tP;k?R@YPO%x4@o(j$fD> zfT{EMDF&%Vvx1qC*G0|lx&4q>?`y0MZsy|}rSz-slw4>9T432ue~u3}*PVQ|aUQkA zzB6X&-H!Sr=SURw>TZNpK53EV!^oM>3#mkg)DxF)5?CV~CadkL)60W=m3g?DdCJOG z#mQUQ)?=$g+&&)3T+TjAp`d1?{1!&uDqU~&5ojM1QxcK#x<2`tZ%la89jUPBTE5%%oDp#%jE{PWu_Xjwh*Vn;!l40}L+7azWag#?@n zH3g;#EXHxdj!r4k2c8npjan2F$5?v2i0Ua*&uL^_3lt%8|J)gU1~&)YS6&y3XLSds(;Io3MU=d)4;k& z$nFnNh|A`GqL`nDipxxSN4aZoKg%^?{au+x>0PCz<~Y1wZtXFgQ1hwzb0NpC5=UE- z_GIb|Z+KVl7}G#diaML@uxBz8n}AUKMiUTvZ?FHIDPsG$an=T9=pvN5K zV&pH)lzvhuRyRvjI+(kzvIJEv@gb^n$0`-g)7ay_y!MEGmT#Zzi%ko#EXbal_Nc6k$VS$V34 z;b8$0onzF@^H}>m>p3tESUl>YrS9GnBAve7=2G%NjVQMR*F%2PEG1}2i2pX72TX(XIkfk=+g_pdp}yqJTw%Nfd2Fji2m3mG_+sR)plGQ5zRa|Bg(4bAxj zkTDub9%pUt9vq_Ymq{AFl3B?Do#K|Mv0S)vQ{y$tP}tNQJ^0T5JCSJWxdBw@c0g#= z0~{|r@^g=l?S0v*qCVT{7CSX0V~PzFx2tg|v~R5oHwnj%KEL0k^&iXY%xo<6)#Z8!`qjzX8pS#Ka^AjB;Q_;`Yxx5*U zq{;$9GGt3U^Y8Y0!>lQPvK z_hMfc5Zc9(*yu>iqnHuX=PLcN!zmRtW|n${ z?~iw(5uFuJ)HMC)B0AG6o1Lr&Z|8pJfcLY5p7J_Dff#Cgyo zZ3WgnJeQdY{Kn#;uy=re*D_bdLtGv^d492$Rz^9)X$)cgL|My&fjI2%xr!8`{L95) z=;4pn#XpHP>07fbPg$B(MxSVeBo8rslj-RB*&x-t9sRrrCH3YpbN|QK)$d|X2(Xo) zu+7wK?-CbgS0@w&X)A@C-}_uJmgcUeUy`V8iY`Yf46aWSL+Ck65R8BJy^UD&A*c29 z>EhFRmMlAb!wUIgu+1)Kg{)?pRDms~?Al(!2iNSGQg6=d-^z3#MCAQ*DP_Rh0#;k5 zQ5MZB$$>>tmCgK#1E+B^po++| z2w0zGkE`>iyL#;q^mk^)vR>peV`F8MEQF)#Q@dH}V`b0RnzsiY^TR)Y za-m=NT_{4(7asrm>s(O+YiHY0GQT(r%tUc$%g*4B&@0uAAeF70KxdaoRzU$lkeo}VgDTGSt; z{H&Xs;~-IsuM1xn`YQCAf|eTv!_KYqn88u8&^r5BJnZ1!dO6D6D0!AH$y$nVO;s>e zN)0N+&CMy!HpJjcaNq#5!bPHsgnwnHojQ+Mi|a1U2H5D~f66Z9Fv_!}p?J8(X>Pko zP4iNTH+>`%_l5++1V69MPvM1CwskvoSC)Xvy@x-9O%wtqo0nh_Xl24>jZ8mu-HU6% zjQIF(k-a)ZHmw!2cGork!GRAF{24RnHGbMwQOG=+*Od$32UIeS^|aaFD{g-0&q*Zu zjCw)txG40CRi1q!$11kirBtAWqGaAqA)<72Hrfj0^@gQ);1$7AmD5JzqTH2`QoebtWLLd9WUi7{zTT8xiioRrdiaNdX{vnSnd%-EgV>tA2jwi3Bg zG=(z}VM)XadDrK@XZWv)B|;eZI8s5UKK0SFB~!U>I65Gsw$ILQGE-v7d3a>bS!}=( z&>naD0LkNKEe<~D5>#Go{2Uozlw8NFUx5Zu!=ZOJm|T zX<{@**7*XAu;F$o>eSn^iQcO7(!&)Jm5Lc2=ItqLJHoh{GAqQoiMHv6w^WKzY&KK; zVR@!5`(mmEcN7K?FBhbJ&0eBiafUYOz!$u?gm0hD*UAN?7J#jyL9=PiMsj0q| zsmtA{$@R4()vE8$U%#pEW2C2t)N6a=snEy)bHKW<-%w&`#nUq$;ZoWzYD3 z<#DXxOr;v26poLEXH7*AtZ8P=#NT~_|H~r=tDHkExP)q+D5(f*@&CFy&$uRi`P?;^|mCmd*3Umo@)jej$K0iQhpR_Rsb{%{?o{y$I&jw6>ZLCzq2{MqmbbOZI9gonRxsy`v3SV*S&;!ahVvS9 z=B%nNTea0fxm@s)WIN_Lxn>#LO;R$QMeC^W#Tx2yeR1VW{a!HKc_VwcKo&4Xy$Err zYI!O>5c;J*t>964BJQu~MB20nRTl3{7htd|F+L2lCMj2|kgO#<_rcEj&dlj5AW;$o z%Mk*Q%bEillVf5exq7_uYe!FyJHw`=Nt1Njc++B&{>JD-eP)^aRq_w zZLhq;(5a(gk<1(a6BzU zqso44PUUIWFWB`OU3a&M;nT~npuu4OMZFP`x=zOTnso)Sn+60v?XU68;OD%or&(H{RvX6c(l z#`eI<0vkPr$D;+v5#$C4Y3x`=OFk&FH#rY6a3XkUtK|w-3zY*m==Vm@vC)hCfHEes`ky zt47V-{kGH{tzb@Pw^}71E-BkdUr2$^XTP9YPyvZ(g9Wa5$dMtH{15;mgvZHfC z$X6Nqr-k#ycO{=c`7!oPNU{S#k6`s(8&=$^AJD63Kp^C~Jv3Pm+T`PZDIQ5!Pxn8F zOZ!8K)Yqwl_vs*)n8&anH@ccfN7bbFAXa9?8^Tq-f?}uI_wUm#r z+7(lAh-kL#>Sp^tmaTUKHR$IY&Ze)!kznEG8Iw!PbSLd4QWZFhmXzjEjbP=Dsbm}j zq8AYpLU9XGGd1>==-yDq(BmI9*-4R6BPQCI{Jx&Tc5j9fl`C!gfhu;T9<2`PdqgkU z9Il;GW%m1e``G)HzPsF_E4Gx?5{(*HC6HMdWse_M+G&$X;L$pH?(ZJ_gI?>0v7*g} z@$pZVH0)~IJ<6y!Wtq+7@AKbo`tY>wMa&`K^8Wqc36JhND9Yri)yBTKLB?X3&F@?2 za8#~U4^rQaq&E|BanO#RyiRPo&0{6@GA(xDdiGBiqb9d+W!bFDp9jDV-0^S*q;|>L z{ELF0)9CCcM+*BPe3b7(cp0OGK^xgYb5E z-gK-77`!%mANLsbA^n&RHnExj)k3T(GbPRi#uK~!;LFD-?_{N(Xk^~0$NJ60q~j!*!ZG9TX#&~Eox z`c&TgY5KF%L=M`@xm2v5;~U65s|e!#nP!ZVL%E4%81+Fa@2&i-#$VW8V3nBBK8(As zN63a|Q+8UYN3XNly$Rj#G39d2HZslgIjqHk58J^XMt+HVHMfL&bm1DGQpL?)i;XJu zalQwquMPABms4nC=)HT8lVk`xJuONE>>7AT@gb5r_uJovTNYA%Ycx0U>`sMEC^&Vs zfYWO>!&s5Vu4q{#yHh22c0E!qq`(n&zv z7hiUxGp<(7h#Hpqbaxf~VD;&Sy21S9G{P~D9xth|;XRt4Z}Pd{ig*B5R+AplIcPDbcBxv;p^n5?6a$V4Gy7jI;OI z%;sv{B9u2AUI>+|Hj~8f>|=fpqwGl!j0U1xy3yOtKxE7c?vp@*bnq~hxXEWIHVec7 zvQm;1Z4~~#pJn)Kqx;)3u<(&&L6yEb1{W2Vgq|ny9FKzFytH}K!)q-Xu9vsJ*N1v*U-^m@JGQ+P{S}+A!X4c(!35NX8aP}B|n6_b3St-TQ7NI_| zgN^a;Zn)FCybh;~k~0>s9!n~R#s;7zC=1{9#@<&K&-BvYNf$d00~h( zpU_3UmW?&1dk^?69@AS12f|*!tSI`HdamUozKVgSgt|STb%saSh4rOo0ra6SDW!wQ z_}1Loim~M+TPJSi0nsFBi1V*?K?t^r944TeKlS7_AwN5uUMV)-@xvu~40 z)2X$Tgwg%5o3VkL0I+)A%AX&i@`~iJ{NXM|X%4zZVWZWz?~;XOeVUB#(*W~9g9hqc zEx~+Pl8fQ&CL=8c4mUpXJ*MCJOjk$mt3#HLFf)L!1;uZjosM zcOTFQoeUD54iMq)qA+F+9)aG`z3Ug)9$I4i0U%|2OkkbpGE_y!SCT!Nc2iEF<(_aO zFXP)Kf}-M-fk% zdz5l%b*{jNW<%vI@Ac6UmO8)&&BPi-$^KQxtO|5++4Zfc6b4etdug?`xj8Y1a;Vl? z6T3ZGS3TP{hm);#x*v!N^~iLseU(EyG9>6lT%shG4gxzwz03Swp?gvVQi1jpa`7x`~f_}>P zGzmz%f1RMv?fx1f+b15UKSCGe$RgrmI*W(hxf1_yHpBtBME->wiPJr@?&>&DBPe3m z)($4A6cvif_z5_BlBK+$43hR?%=4=QX%uYVhF}%b^il?VI>@)syBaxe@RlW;?vk_s#z8$i}4duf3DeS8y$~Jmm;DiBzfC^gJ6Q(i)KuL;?^Zf!d2WMZW+ClEF!G2fpPA@7qG0? z3OvjYXSLBaFH$GABXGjCHm%eVf!>Iy)wUftna4l4l~onuU?^sDmrZA~BkPL5+p<3W z3C4ego7UEkF0B zfL(6fPB*^Pj#2+vw(d38^r=deZV|0b!VIWgZ)tkJ! zh;80z1h6vRq`9@WPlZWFK7(|VIJ$Ne#_M`mz6hw`i6ZD%kj|m=U7m_ zD-*CykP_WzM>1vaV zhu7c9q0uz!3j=bt52X!l1h51Bj8bbXj|Q6X8MC*K7WT=!Hoo7xIG+FMu*?`ntt@c# z^-D(xNyL4n=ow<7-Nk(_oiD>M8m;K7bLT5m5QAYNEZ zDAs1C)&1GKsE}{fhkiqtiI$OzsAh9t$@SKY{lVO^XoZv#0CxSu(p#QVaoC?(fQ%AP zA0IG`&NIuR3$K6@rXD^-(ewn2ls$U9QVIWr+ISfoapeVI0g}@uG}ul6?ei%oyB_{N zMk&yiBCZu9xYfKp;n3oZE1;@?Strrm!q-OKzt&}5jX>?{rJ$PeOFe0O1(u4W?V$a6 zL!b_NJKC}FJ_x8=g6p^0h(a9NOQMZgEm~t_grAE4V#O}8!FZTa}A@}`>>WTo0j>DDe2o%l1mv? zorOf|ejUbo-pcdmJyI6Wygmvcz~edbC0Q#wbvn=)aCIx*uEpsi@NaA_%KMGwbv^-!P2egARLm z8mybAr;|thL0*S%pyz<}DaTw5Ul(;AVp}av%CR0@fb&msfzs4X+VgpDFjUbt(rhX^ zPtnOM<4Jhk`JCy5k-%IQ)&u=vc+gJC;h4g%EIWjN9ANGKU_U;dYsrr1YhyA^O?dgY zf8!u``_pUv2hYxygFF!Rg4F?J7WV}r00=r;UA@fp5T;EU=bjHV=Ml@2(dWbxZ`qKf z1oe=aoZ%bi%+cn8j`rjU<0H8AlHh;t6am&TR?orxJxksWM!7m0eQZDwjN2+^RYV7v zcXKG0N+Pc?ajquoIl58d5hM4c^3B=wXq)vn^b~a|q*<_j@$|uh^(-VY{ltvCMQZ9F zQzDIl-)lw)8>_2ps!bc2*i5*07$(_?f+*`e#Z~@DBE(~2{D3!QvE!!n`O7n0^lSoI zCRNn7IjdTuoK1qi{~0MQ=Qn&iYxyx{3H_VXdtb^fs4Mki9HXzymu#NvOsq1Gg}QuV zPYb*1g{1`%Xz5&c!o_@HWs%v=_&F|j9%cWaSyNqibd6BWEhEi#4^4Nc#x?RL1%fsS z7R9Ssg{Z<<*Cn}_Fp3b|TbqzPWmEbm!J2-DTuE!TWE5V?K95XPg$wH+$5j1n12^bz zLb;_jftB`6i<&>wYEDcqc645h9o*lPKTJL$^A&Q4@|)Z7!I;De>sy%|Vyqu?PjX4I zm?bf`1*rE=W#27`LlH(Z)a*(o-1eocc1KD$S?RD}6#f0__2hn@y&spF_EtG1!M?)* z<%}Bc#`36lrJs6zVycPu3B-(FH5QtaYW7TP7(sICf|;-|$yJ0h!wd6ATI3{HnUL?C zcf+aR*%SWyli3R@eA6tIy3D>@Gg?+V6R(;sI>Pt+mJs9tT0y?U7F;K+%(Kg};0O4` z0N=x}ezRSFw@+cI)m%1_{-=`7l{6V`J%}T4Wnw(prBfTb{?T|ybPE$Zb2x-*=xOUd z+w&!xz?JW>|MZ~JHJAhu%|7ewv6KgaN8tb|Cf9+%gg2k3&so)eR$Nf2Q97QrUmTJ@ z=E&RWibP8=MYNG;!+;)H5{>q7BtO$&#u_^%Yf!d`?)LtX;qT^jH%5P@zsex^EhPrCfC-%Y=I92Fm#;iM9wx(#tnDJfD+5tJtoJNyi4# zQ)@)ig1VjTzGh;42D{vh#zGqlN|%NFtSO>F)u4#;2dg(tZ|)O;l3MR;(<6%112ZUqM}_avtjN_u;ySM`zc&vewR z>JC@&bMSx=B`If8=3a!mSo8Gb!-sc@H=td(IIy$utKjjZ?GeK&A#qN4_Wnv-saojo z(`QCmyKOFaTm32`VeQBD=$M`R+hdQuJjNF_^CejVBr-Qva`=(i{Yl&g8-NBI`Ix84 zEVr8l^a6eo!FcEWr>w&%e@YCEet}r*8Cy|WGFCE%q*aD4B{s7keZ{3P=bv}`ENyaG z?>T6CLM#1gyr3p&Zar9~fWm_!Bg+qym|m?wSpC|(^mlZ>B0tLV97B3KhwD^rfJZbL zbH3UHRvItOGBsaC?YqeRjtKc1GPiQ6{XvessMc1Wq9jH|9Nab`ZfBYJ{o#|PgudU# zJ4=a@#hEI&o1%1AxXVj((ep2Ug;ih{8?Rk^zIy$)K@xo?O|xj0$kugQ)@TGbSSt9+ zqv$=xSVFokK#WKet`Lr`6)q0#ql|vuE!&+dZ>jKeQC0}tNM^*rbGV}2E#mf;%FlpR zRaC1inev$loTOk=a~-NDNya99jP8gBn5EPLye?c;>F}E#nPs1Tg%3vflSwJqQZ=+L zX_5sCR>g(B!|Yv8`!kZ(N6lN*l+>W4WR zN%hrub~7v7NOd2WZ;G#)?lwirK6Ne%(r|mvxmL`nxF0^Xp|?&GYf2+Z#;TWl7VbU-5-MG_s+xFE~b`tnpFRtwlN3oo633B=+g-diPl)IhBk8_FF8>9JN*rLW*R@ zfhqz?Udf`N@jgMc9pqy42H8ryrcr+$MB9T3# zQp2Xr35_EgLkO2mAIEoebk6_r40U|QEmizFzFCQD)1T$mCfPU*SO8fxkok#3m;4}& za_3n$^P+Yd->zTdjUZUgvumM)LdEu_ws+`y7Ji}C7%I3LwzW^k61yIT8snz^6#5t9 zNIPL##rYpt^LelGRYcGvzh}qOj^s!<1%f3@13cIUOb`iZHabp}Aw4JIzO+>g_plOZ zLWlp!s2t?s9tmya1+K1rk-=o|VD^rXX1~yStlReeHJ_2GbviBVO?}hi-U{J{@EzU? zQS&V`9!b?Y1DBPT?8Y3Y{1!LleTANve#b!6<(R!DMF<>bMDf*5dP8gOS&MoDYYX)7 zH^u$rE6E>%HY~LUq5+0qqEVBw0n$ zHm#a315C%-)CFBxP-QHCQVQR)VceWrHi54#SPPQ&u#rB5zxoOu(w|LFubhB5ww4M+ zZ1Nrm_XXeL!iaa-9(CvilDj%4lPQQl=bZ$tlArX1R-xhvp}o=R02MZIjz1ZghYfs{ z27!iPTLHK+-}XBD_H~L3RqDsSpV*S^T~BGt#x0vS1haG#Y>cW)>_h=X+H=ZF|wOY$?c|-Dpj0-NtOWfFQZERCiMWin646Y<%dB{dT3HQ|6rEAUH?D zD@IB~TGD5UmDiPHUCc2ecgHyO=J-M(KeGZ02VWXGnMKKQhNVwGD-z zO4gqONpy8@8@{zgWy3JIauD{7Kt+HUHs`oJXE}LbLb|Z2xx~-u@Jdx)WoZwop-?4q z2aWdtH+Km>un4Er4EF@ozbgD2c_@-hvWopXn3cqBXQG+$w38!p@u#2^T*Pb8E=j8a^@z(4(|%6w^3gTk1-1jA~@YWOa2{ zaLitNCUCoFR*fu{jms#32+YZ@w$PKePynpH;B%+L-$npOTeMRZz~DLsn0B)LegoN% zZ38c-046TMWnS4DwQouLXLI_Q!6OX>6iXf1B4k;ve6U)Yj9X%bkw5_MXx#%lL|?^} z@-xtGs%Ji$NsH-z1CKkS06jGhw8S|?V?%3KmmEih^LpyE)oN}`dR4Czxsx{_`YXqI z5}K|EabiC%Umc4ZZJvF5wC+!ZYXbh?Yl;Unpaf*dLt&zGe)G{#<>layp@7~(y$>uE zYzRqc07gEd%AxcsEuPSQfO0XJf+mw)%50eWOdc5VQ)b1N zj^)1(Ic)&?Q#DPX#bb!1e7QQh`~ed}&Ovb3*8M4T18}kxNRsbz^cvz0w}g3d6sNES zPLei1Q2SHycv0mrdes*xk7b#F9S152@yCgsoUFk@n|R!ohPf8vQrZmmUi{!GgJ0h} zTJN*MBx2w=9{1(zW$6WmzsC&nVuS;usxr7HWb8Qn%!S`UV+yT1iEahdS-fI+n@02$ zTsR6_V30p&ke4I`SyfGw+Sl@0j80vYe5x`ur!v%O0$%f6V)43JJbhg!#qxskg5ql? zXK;Z;P{ETz-0niwr`oEqSvJ9MM;M6j&(XZDi(Srn3gdDN>3$n14xK1GFz)K`sx z;DW9~j_U~H?+!fEXk!slN8R5`v>HmqLn3??57 zb{=6!-8o>mQ(X2hPTM;gwcy8j*@W2tSDsXTYgc;S&O+p+S)LpGo|>0(|6}Jp-Lq1g z8giQ&rJ5uxufpO->DJ#3K#l)ZG zb#Zb87d+b{ok8fizuPHzMjCb%g24rC!38UY8B-Y<6%ChOC50_ZW$3R7uc1@QzqX`` z>z92&QrVDuEvoQb24xCOIg56WBgM`|0^6qUw6k>C9~8f*Z*ht;uX^XDO_w83hM=2= zNV;zw@%+CdN~JneMiJo4o{*YgQyIcyaT1D3tv&y9C6Y>npsVEj|Axwcq29p?{I5l7 jlE~oyN}BBPA6<|iX0&UzDg1gyM*8XN+`Ch*<%sz|D+^0~ diff --git a/doc/_static/association2.PNG b/doc/_static/association2.png similarity index 100% rename from doc/_static/association2.PNG rename to doc/_static/association2.png diff --git a/doc/_static/before_quadrevolution.png b/doc/_static/before_quadrevolution.png index 5a826d19ee5fa0dd8258411147adf274c5638788..63a6b90e19591eb872f9bdbdc409ffa4b6d2dcfb 100644 GIT binary patch literal 52269 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∨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 I)F(#s2Y;jZvj6}9 literal 22124 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 diff --git a/doc/_static/before_replace_hexa.png b/doc/_static/before_replace_hexa.png new file mode 100644 index 0000000000000000000000000000000000000000..d31797e286596194c7ea3e2ab8ec80890502d00b GIT binary patch literal 3002 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 literal 0 HcmV?d00001 diff --git a/doc/_static/before_replacehexa.png b/doc/_static/before_replacehexa.png index 8d2846521920c36aabc2fcb1d75328f68b5a6e6a..c070fa1da385f5cbd38437449e40e3c4b3e77dc3 100644 GIT binary patch literal 84663 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 BpK<^I literal 25696 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 Z7$?~80OcAO1PB1_+~&FUzT45H{{l7ZnQZ_7 literal 20409 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 O2Z&z&+eur3 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%0ApPwXiAj zI12?4T^288?vU8DPfp|ZJ6OW~{4aFzVLHI^vY{icx_pV{p@Ag*+7^9;QsKp;ZXQ?8 zZ=yhR`VJXJ5`FDVb>kinx8w4>122IZu}UZ3dG8YvMTI}EbAT8B;d-J~{?cVt)=gO4 zcQ1bNP)5;%d9a%p1+9+G9xTCuJS#5%y@^Xdth!NKIxJzY>q|8EN=Kcir^K9FHsBb3 z5Pq6XPi+8!{$5gXvLNKKsO~eIUB8Z2yfU{QDAUAC^HhE~df&?>DQ^0eyE-c{0MWia zP%oAn+|hiEP%}ZMNw`6M%&$08=IY-|v-(~RzX%L8{}ez>R91{QRK~InFs%n&_Mq%8 zluXCBNU>9TXc<*_R%kAAeZ!8aiKM#hXE(m{wW?~YX%ZYT9DSdXos8Xlu-DM(g4X$!$Y_lKu%L|f0g z8P%3GXkr;XvD#q}?H@I`DK6~}J_Hbo0$>2*nV&E5*JkAxjnO?9=0BgP(ja#RW$IV$)92M-=oy*U^H~(1FRCBaoYwMqm<)T#eHr)cH29#SeQn z7ZtT)Qfsq(48co$+jTo%cE#LRs~ADE|Eu9n#wbBV4LNa_Ywf?hRx#3l2 zV*cEVID#^cC?jW&w~~#q+Hz!EdR2IlqhbFK5MtH}^kP>PBc)gKHRq5*6nZwdH9k?E zkjkUiW5$R@MIR4<6lKsdVEaa#6Yr%y>OH7!KAnzr+Kt%6IN}u&N_{<)IPn`(nvhV( zb3=MKypW_wx7%N2h3E9g*3Rf|@b0~iT)^bTarUijRS2_r_#7X1fuS@}wu)*kQWRCo z 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 diff --git a/doc/_static/bride_model2.png b/doc/_static/bride_model2.png index 6c70938d6a2e15d6e88b234f44666cb1c808ccd6..c939b7b5590d2f591206be18c57560f43b632d42 100644 GIT binary patch literal 43089 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 diff --git a/doc/_static/cad_bielle.PNG b/doc/_static/cad_bielle.png similarity index 100% rename from doc/_static/cad_bielle.PNG rename to doc/_static/cad_bielle.png diff --git a/doc/_static/cartesian.png b/doc/_static/cartesian.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab6c5b96fc5da1d4d7c3379e31b5484637cf110 GIT binary patch literal 1586 zcmeAS@N?(olHy`uVBq!ia0y~yVC(>5Uk)aq$W)g6G9blV?Bp53!NGC+q5lIQSF*%4 zq9iy!t)x7$D3u{SFF!X`w>Y^dH8rm|BfsQ5^L{%92G*mVE{-7;bKc%D%$njT(eN;o zh5Mj(N9?Q$X6gQfg{6856-w3mN*!~1=SJLS)wy)D^BC`%ckll1H~#;*tFzI);KEngEM5dw^&J%)a3hpx+WJWndE(|I+d}I2-Zhk#{|NkE!KJMNc z#+0t=!@T?I%6OLUi=3BRzOi|)mFO_YZT;BQ$Z^@=oz`i~y0uXo^%9f#w%v>9yFcr4m3pmr^N&m*zKMW-vaMjkS0c*r;7oY&fI z4l`yno_&yFQ+?=6-n#W?W-ALVv#JlznP6aOxqGJ|r|<-2ABR4JrIravvysx)tD*xX zHs!2rsvt>5%R?+rID)4zt8F{8Sv@d*|K9(<4=?wR)7>u=G0&jaW$g`)M5%lCqTaG( zZ~y({<=fBV=dZ=F{&$|SEOk%N(n8M5+g6A=3#jF=ofK4im$D~G_t263hH)Di5+9lL zgwL5^Q0S(8?Nn^zLeAie)6e%`i#sH#yIC@1=|WCnQM2YhNuf;LB3#zF-5xV>W$sea?{_ZX+-~i>7&YL^54Hy%X z%-(VNIAF^^ohxHv{zX)C&S?Po_{yX1q7A}o3LZ#GpFKP{Ig>;9^M?l~P2iTyVb9iY zuz&M+)%4d7a(WGT9oF8EN|c%!WoVc<>r`xiU5;XeoXyNmgWRT%T^l(rm#q|yJaj~U z+aAd!&ND1JK6a^c3jfc~Uki+!eRb9Q|0K=mG$>5sm*2m8$DPkRKXx7F6y~;kopvF% z@g#?E_9n>`{Y0hXX#$B!690^M$R0X!V~(Eh$!bJ2K_e6rXQP}a92A9tJ!5CsZkGvW S%kzMxK7*&LpUXO@geCx7Zb-EN literal 0 HcmV?d00001 diff --git a/doc/_static/cartesian_grid.png b/doc/_static/cartesian_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..351c69b6d642e6ac5e7739aae3ab9a77ae785988 GIT binary patch literal 5245 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 b75_3t_ON=B=^JqaQNq^R!Kwyw^WJ{}axe{C literal 0 HcmV?d00001 diff --git a/doc/_static/cartgrid1.PNG b/doc/_static/cartgrid1.PNG deleted file mode 100644 index 23333c67f4f9d8b30143fea865c2fe2bc6c1083a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5813 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 diff --git a/doc/_static/cartgrid2.PNG b/doc/_static/cartgrid2.PNG deleted file mode 100644 index cfcabfde06dd7e3d68b3aebc64178ae16da30282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6001 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 z 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 literal 101352 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

      CVV;=@aRt6to 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 diff --git a/doc/_static/cone_mesh.png b/doc/_static/cone_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..a03b1e938a8a09f07bb0a455af43f623cee28d88 GIT binary patch literal 15178 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μ(ac$!H768{308J zqC+acGhw7Qg8f4qe7RRspd|jt>_4_#FY^3x@NWS8rQ!Akb@KeD)M@KAq!BtHoTpcV zNJUq=eN5^#U!n;hCp(7{GH(!2`7j(DFvlm`Ytd5xf?@T(+9$F~00XX`p6eg6{>#d0YVkh3aZ3--rvqUaPIzO&3E-bFES(#7$Fsp49pU1C==(=O)y z3Lkv@;ylNtlW$Rjt%m2JH%_Q8+HmmmjEO3qm}|D@InIZ5NgCMcIvdqK%Z+4uc68zL zoP^t>D>|GX6;H064K=cV?RwO5_C2%ABhjN5XUA^BQw;F$@4Vc9q#S$t8Wgs7uFIyK z@z?&_Gigri!poKF9vHkkN$W)QygTkicoebgD#m zOO##KInAhp4O=+W}6mF5_Ea3I5>%NiA=g;aq zInH&n>EfH2Qk3xBmGUS1Iu2$Kp5<&<9Z0p93yTAv-I;}u_uSrasWJ?M?PDv2{qBV zrOkFkCk2n)`I3l6-ZONx@zJ;Z@5OEHzC|-9bGN5U6?9A2-RBW+XWvdZL!~f5PSn-a zr=){4+TzT+mK&uPG?J}3Ha(kMsT@74 zR!qCD4!=U-hO{qjy7qzaZvSYQ%uovC*mSQhcbfP0CS zXCuM{=g6J>&h~pSv8@cV#QI4AeoN}%*{{K&hV!P7lR#h50oA#2XHtJf#_9Pp)HgX| ztW?fqCa%*JVaZn)&qzkg^fR6PfAR(>7In(RrA2Yy5x?Z}?}l2Cr|Mr+ZNmQtga}1~ literal 0 HcmV?d00001 diff --git a/doc/_static/cut.png b/doc/_static/cut.png index 40abf2bdb3411bf457b054d2026733060ec86248..f6c7b66da3d5a76ee014c347b872c46b7c93d196 100644 GIT binary patch literal 37064 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 upqUOZtNbem+wZQBop z3#kU011Soxw`k-0G_vgPzt_{`O@~4Tw+7G|m2zozKJ}o#5S5)uR1@RTICr|EYtuRS z3_vUO(w)cr$|ZW-X>m!M-sS<`7W3DwW+jVsRSS;%TjwNb6>59w4dc`tkj!eggSkLm zGYd~uRFA0(YW?~`e2pc3d2em=6o@p4t(9p2oFF>3p`BU*$W<5s(FrНzv5O_ga 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 diff --git a/doc/_static/cut_hexa.png b/doc/_static/cut_hexa.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1c662edf9a57b220b049f8019ee90eb0a3e7f1 GIT binary patch literal 3897 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 KqDI{@>VE(@APbZL diff --git a/doc/_static/cylgrid1.PNG b/doc/_static/cylgrid1.PNG deleted file mode 100644 index d18191bf3d38ce381f62134fd3e31aab692ab638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11385 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 diff --git a/doc/_static/cylgrid1.png b/doc/_static/cylgrid1.png index dea67bcfef829301c5c49b640c781259abace251..3547fd1666881bcb5d7b68d01a05f985eee641aa 100644 GIT binary patch literal 26676 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 d z;9RNNrLZQV=A>)rINB#j{Qm)oIUNL_!S#x>{N4%Cm)qDwtEXV~TCI*n7!;!8$R2`* znLEO!&0o}bz0uT%W0Qk(9pks_mbjRYZiY?h-O!N5d38 z__Xxt&hKy;_@2^aDBn21uq6a@wHxb`wr|Oy zmcUU+;E4v)Om*}Te&m`{P~b``E_Vw-k}5qtaR)%6GnP?mLCa1Y$;TBI`60BN{*l*0 z#w>LO=1n=bOfXX@l<4q=^B`0o+7#%^hA6fDpHIKpi@qBTCd9T=JS&wx*K3AJxDN=D zqL)+>Ro*~AA?3(0b5y{&gPO?$B9W=?3ppgPr2o&SLYmTus-DfW3Ianq8Garq#Kp)K zN-b@Jg9xDjI8)b73w#-XxMC}N(nmHNt=I7bhd{#iQn;5YNnF1(bhfak&?{SW$8EHB zFqwb3#TzZ@w6jNhaa(XIB;P>WD)4QvmiIttquq(|Ff^ZO|D|gHT90azI%zk!!|x+W ze240lWVd#h`D_EJABd&*>z5Q^wb8G9= zg+uPtXB&>MhwOw@4w!zmHp?LN>BFluAl+~)k>FgIublq;I**hi20)|;R&WvP(yT2a zvv4$0@q$DaxL4knMIH!4bR%H4!m!t@Q&Hu!m|JGD|2*)!#lN6tm*QkJE-F=Lsc-M` z(@2$gO8Wxq`h;9m#+I1o80b_H0KMb3)5ZzqaAsvazH)qe*%WQrbux7dU5Zij}_#Xr>U= zh?r6q$lGwjfX2a|BXRV`j&Jl^Yt?tp1h@gy?O&NMZ2kDLih3MYlcJVL*Nx+@uY8Lo zR&49enI^uUW7`_B-8dQQE8X;$1CyD({Q{#EDx}#nHsJppNLPH3REeNB1JMVZM$Xfbx z4+JQx6Quu;2$xZ3h@z8#5Ixnl4yvCC2w%O&9q}~z^#VrifSSSGDYgXPyRY@B0m|zJ zR`G}L24uc8JaZ*=gzY)CuL21C5D2{HFtBjGpTJ+=E3=@nY_X9K%sVE4c@3qTGvddZTHs z&*RI?bF#83?4{XzFUBT+sBl2%4{gd%`AL?<1xnrYX!C$OEl3!K*9OiV=j;P!of>Zp z3VWLNc>^0GRVnskud=p3g7MgJ>VT~hctsyW;m`gZ+Gi3+f#RsR!1O>~f$0aHqpc(M z%9D9-fQci}0K1CmL8KP*PGXw7y48hMRcO zIeWtu$`qAG3_?HUjOYZ{KX;qWxG+O8oa2{ZM$$KQ>LEYzYpn1Y=7@#!)7s<>P zF~jUFORCPf%EEBj^&@UM4F4iq&xU`Lj{fAY`DlGgq`tT zz3$3;yyqRaslaKun_4y8Hrq!O`=}u?S_VW3L1Qp62DLmI0V88$GR6ewV6wvP)Ss_{ zk3WWI8p0K*CJ+-|G(T5Sp@d)*-;ke`S;u5PoM*j0!&-DEC1{RAc>ecfklPVjp9egZ zhJk=dPF~I|)kqz>Q_F~=5wkaZCyIbQ;R+@26ClH0FHU#UE5Rc%R9TgSf}L8V?DCu! ziA_BGN{)WRI$Y5mCH!Az(*vFVJq8nZM0r48`0kD3qRbPt8efXrDFEvM@3P6=J{VrD zPT^mBd^4Nhz48-CXR|K8eSxnslROLQ)g`@i3aXtq+vMwV8VcL$TVyWS+4*+a2SRWU zKRChv$si*X`pWn}A-OL(lQST42jX1FoQ-*BXS>1eLpp*71ke z7@qL;d-u9G-V`DS)&){;=U&~*7f!d|ed3$1$?lr+NrrOfLi3RzzM`qm>q*uKqOw54 zKhVq86GHI}g$gy=eo%##DEW!R)DnVAi%XZ7(2u|=h76{$waPr#ezp3lI^TIGhS!78 zl9hys%Xhk@4;-L<+E!Qm6b}|MeZaLp{{mDa@f~6vPpFUl$2zfxRt4!TEj=<opb}0T}i4tc(00++W;k~v8&YfGC966CaaqzcfMzJ z&hIwsM10xr$qbv4Ddoaiwp!MFYSEv9)pG6bbFvx(5aN3{XVyS*VPCBpnG4ihBvRGav@f%0(j7lGp)Tmzurh#2`JxW_#;;Zpd zb}O_pJ8q|WNIlXs7c9=(c;bD<>GSOTCyK5aX?FT2+t$A!8N+1s3M9x#ob*Knj;Ga- zUpbZ-tiOW|JR>@4lw6PrTC=1FXEqkQi1SC;B(+jLcQlhJU2Jl+fP?Q?wt&~_)BeM0 z!u}05d)Bd6P;X7zt6)=_e9=Y$#x!sSV`Ipb#zr8bV4Xlf)g^PEjEUF^^CzFYavTZW zxXSf2w}zX*t%l2YwmxY};1zCPVT^v*qX(Z~fHG3~GQZl#&zO_OB2rZ7(bV48AHRl%l@$%T_@^>zJ^ZO0v3;)Ul)vx zjNYPX0jX*tW~fFh{LkKIB9q-}>)&dNc}BYkMdjXqjeV>ov4v>`+8&l&+U39%6DswO ziBFSQUx-{&lI}-!o#vF;jEdHr8rFxdrzi2rgg;kRR`(*mNoL z3zukA9Rl!B_8GWxvmvY#$ln3?pCe1J+rEu7Yb_Yx87anI*4%lrmFty7hX(*Lw3P%P z8!(}-4UGKac#;}cAYj(J9uY**vdBJT#-3;) zz8}+UY^8)e9yk}%IbWewPO_$;CfeZTPd!EZ-IzN3I(Uo4l=9L!z#j?yeONtw2{iYA zDM%q#%U~0MN(wFn^3qj*;Fahg5JgGZLsso3Bi&|DSw6&!_Enh%cp7GXd)gVykBvrvO$h{)xtt z!L?)izq&&0upIv^W8SfSXE*bqs{L=!Md>iZ20s!!Y#6ucX3?51p&ex!>3Y|XuEe4{ z@9ezyXpTAZU=P8sszfnF69)qb3NQ?f>0&^*cPS&yOty(<lHFfbe(;y?wlic9}A9ng+RAku}2=(1=0fT5Gz|taoU-=+UVV z)&Z||Ru&l|zwTL7!LnFkm#>T~0pHun>4ej?>%Zh@l+>a3}$>BJk4`x*@~ z8G?cqXJbn1&C$`(J7e0Zl!wI(A%f@QI!L%&KJO(9InjTS%q;inc2}j4IN^qx@i_}?YXOYKA`Xa< zwX>%bECOp6->Nq|Y0$fc%C>BG5QE;AXyZb?6Hm0!eXHVgA0IJs!A^l<9^(;6o=jjCNkk*fS%&#w!43e3P*roiR1GtBxloOC6N zU*e(d*}}cz6zS#WcK5G>c+A1F>0#(G(c8+RGRkHVd?2xBvjNZ+g5#($qY@>AvcO?! zJda;juPN1vHoU<97_4$aXxaNoogKFYsV15rHqxRri-yvK$WOqn5$h?z4a44~ivv`q z8r8g+`OTM7TA}j+%B_H>y${Z(j}6go?e8j!rij(B*@;6rJ2cDWt&(>e-FfB#6_Hmr zzfB=R;6}S%uF{vc?;_M5>ryE8QQio8``oKCoir$-|hA7G~feEzynU`mG ztQPwZT?E^7%&m_)ct>utQ2QoJRNLTzuKk_IG{jTUsRrJh%7_Ne>1ennx|xRhRSFgL zHl_sVu?~8=4YwXv41B2`-lIhSd0|{;&Go#VZmPw=>c=l;{w@=n=kLFew~@O7LI&0n zMHnk80d$;3G6Cs|kf7}PI}r*U1i6+@1?(XQGvEOL;*lUFo*XHKIcDe*jafYeu zRjS}fgyH|+BO-GdGYxatw7hm2N7?1yXOT?G2tlSAe0ZcgQT&sl2<_Cs(1m)X51W8N z?3I>&x9nM(?kt`pvdfi!odePd70f7(D_o&LyWm)sRle2Zj7akJ%uf<+$PKSL_xCQPkaT`pUdu_^!CzxvmQeKR8@Rn5DP6bUe`7002A3y-8w zPVn*8%10y101^kBh?uQeAF?%af*bx}60@h9H-Me<9;I+YuO1fmJ+B#uXega3%6Z z7#Ii#gaKRp%)OJ2$0#Ud4jolh(#t+zV4HcTpKI+QJ@2g)*?hl9Nsm`hbYTEeL_&oY z_IrC)8t9^c#WXT@q&-A{D|X)5i<;f)t;g=nOx+<~tDb82g29tQVQ);V4Vtt3n+w{d zkr<1tGfMJZP<4{oRj_6$4b~|>#WTU{MWqDY9{Xi&WiEMaK6HD(B~uF$p=mzjvwRtA zgk(w+2xIOQPMKnc7lzD8pU)el;p^jBr>$V^Bet?mN3Rm03i{?2B}T? zPcTcegD9?(NPf{Pzs;zHVnU7y0L%#jc2sSlgdU01Js3J;VQWi8Qmt^DKs*iEDybr6 zpG;X=FZ6_42ni!Gft+dmrPm;hMlV4aew%C{Llh@k$4-WTd>tG-OGG6ErQNoT1XH4d zCCzI~G)si8zF3)O-p4BrvOINmLXw;Yf1D2C#`i|fqG!T|$0DO?iR?8My-fsxlHowoIU73KRT zZ<;PGt~JqYJZdakcNH2#^j%enOLd6@?~_!>E#y7r$3raN)|S?IrN|e7kQJHK8`0wc zf4dbPZh?yj*D2(9_?l=#rmnsLdXG#Q%F4YYa21B>jPMV;=RTv}LrU~kL_ZMhoeW;z zy!83zCE@fc5tCZAQG6Z|Wq6X$G2e5yvD2BKZF0H~wwIVG}FDD{5JGS`oX z2?ez8BG+o(D{9f7;Z9XcT> zBz+|NT_)V)L-<7G#H_C@g%S*{6pWJVcjz^_T$>Ixt0D<$-~tJ?m8|80j(~W4iMrzR z+?b=|{iZKmo_p?EAM+2VF?5Zgfpr;JTJNm~=nSAh0f{hG=<~PGw?h;LHPkUR+@9np zC9!cZK9KY(Bzh&YhT|FndZUno3IeL4|MZyQF8k8iP;W%l`Qvs4mr9xlU<=q#a9JSn zxCV=VJ;rZ94FGZ#7W3$5jT-uTqvogYj_+Lg(@_>qYCN3Uz~1bef5&7th6Kc{JOvDeJW>}0ECk0ZVXJYb zLY|EXl~6GetAzx|Z5zDyS3YUA1!U70d?H;vVd=e&w;JYhLP+S)UrG;Cgy=gvoXRzb zu_O}4Q_&iaEyPu$j#kXCYBUdCw^wk5I?t1QLp-kqbD!3{^E(g>MV_G`oi6iGm5hZXm z3BQZblc>tEHXG@0c*;La7}pcrte@`^b#WL=6DE2UlzTG|_#?yHmVRsIv?*O4py)=d zYnk$m#bdEkK9ir-uClzI!S4WQk0YKU`ll47g66k^o{9emcv8rr?bh#c#vun{K*im? zaDbxV)bv2hDywH%otxu|&4~$nQ-N&>(cL5>O6TI7ftE#KXGq9#NEuPgK8Fpf!1tBVzV0ykVK2pt4pfu``+ilHMT}%~2 z5pg(zJHSMYG?KXDrr*xC@NtACw_4OSHx!%1e~Rh&{JHsx-HgvhA}z)K_xjV8NDNuU zS5yG!B7~hZ==%3h9kG_)zyBs=$53JpU4R37J`q8ckI?b}U$U zNA{UU{=RT5YQ!F>5N`Gqa7)a=kL?XHmWlaR;ccXx$2Vc?ve1b?sY~?_m%0E_6qL2a z$ttB=zpZvBg{r5ZipBW^-5}IzI0MMGs;Z&{{6@xq^$BWv%G)~0UHWjY@?OhEAJ#GX zB@AlsNP*dAPubFo0Z&=zr(wpe;ql=@mk7wD3a%5G%Ui>59>z!u9Ic39pcTq!+V4Jc z@}jlD#f`iEB}Hr~PMnsGk$wzNw7&v>f()((V1{lOUO0eTu@@6tcvQAKaHFn2yjLS` zCv64097ri7fuJ-e$=Lr>ypj1&GyxfQ2AeKqH10A3y!w4AKj#|#p#tAOeu@k02)FMN zTIZvQXs;1x-YkR4?%rDq8_y=ilslfD{Q2`;Z?8$X;D}5R!GiIyNl=VL+^w%-?Yfg& zm5#_S6qu51TP$-LiEk9s1(u_NNOR1PNSRn=+y&Sx`fvOC)92?Z-dmZp-5Vi$s{piPi=@^q6{I5d7I} zm}&&bAqD~n7olGkLx{Q}HXRcCQZ|2~ED%Zp6l+M<%Gi2-Awo;gI!-@ZBD26RYQ`L% z{*>Mpv04pIT^vt%6@_oA*avhcW)B&Bg;DbndK@JCD=LS@j`PQDh|4pwUOcgYV z(3;?10|6!Sp7o*-_K2OS7HY6tY<4eQ7p7i$u>z%qPWvICk)XourF%B=rj51?F0?zs zGt|M+jkjMQi|7xg#9HU(zsk6tfz&&#in@Lhh|wUnFdTp`YjWZJ!(B=w@$E5pAcs1$ zF{!)4{yX2|6d<+0Vl&f7tg6U>{AdbVYE$@j9(oK>1H6OsoNo)=+wnPrkDIou<|^4S zI|7Aj89;r}Tkse+E3Py^oEWPFF&eN7u$)DcyuqziyPPGPCs3H-^u+apm67JUVQua` zI|Oz>5>ixBpqt24xfc>Rl0blXL#%kDsaI&;-&D2hgI&IJ7>_d3fz*eIkv^ZQ6(c^{ zN}<+#+m&a7y9C|;C5+ComAe08n7X=_N2T+KwfZ%Fo-=7GN9mzGLw^JHj*wiVcB(G+ zae_?B7JLhwsi%WBLv)bW)yOfpGwLY9LhiJvB`AV(BZE)LREU&TqHQHF21~DSOU>{l zI2r|Eep9&XRWIuwnRo1U-$Th+E4-=eS{R-H_XH+PphJWJ5)TW`xtp&x&Wb z17C<;fX4@<8oz*Cd~lI8)4Et$QQ}Cggh&gD97Om*v<~ao$pMzr=z?ew7bK?;fNX*iNpTW1 z9-;vfYG*5j1#p+uHTRR@jYAYD%w!8p@F97hcRWZy(QYCj6x)D5f%riDJbWZ(xX8S$ zWf~XVZrnAKRRpD6kxP*?Dt`jNOG_&!op2hnLuxsQ5EDUru*%9w7_s&a3pKO!=Mnz5 z)Y^DDYi}ItdO!&o@}cb%P#h5jGXyrkwTM)R#9$!57>=754Sn+yO)o@xd8FP?U3^`2 zXOBawNS<_Cc^tWbJ*m>(CF*FZ3H*{A^^fM+q9HgMTIY^(UcOgZ=|ce+X*8HYq~1d4 z5AtNl958$~94vsE@E>QkEf9pYeS;xnSACoKKc)JY$GWrCVTahNK`29gb&1s!#4Y-) z|34-tlUWX>mR*?06JX;&Z;Y}G-iu{^v|**91V?-wKNHh;iM{2&sT8fY(GBgdod(|q zvfJXY{g)32>pnyDv$UHm^+_s0#94aBFO}`b<*U1$Lg?9$4C1L-iwHy4D zT-$5e3!P&)ig&YIHOV*9!gjF0{8I;XU6L{*_#Qm9${IqD$&iOFF>EEO(oAA@ilPse+ELa)Nb&w2#xVn43HRJ zVBN-H^~qKWZPhc4uQSzf*Ew`53y z+7g@sK|IxbR#H(1K%+xygiTz`6>S)Yw(FtCT7akk&q?CH6GAi)d*=K5$SvwizzCW- zw=o0>-T?0jv3Ek7*1i~+s=Ebnm|lHbJzEl|6c_zf&8dq54`n6R z*?+-Jcw=bxpx}cwjU-Ex{GXwBFGPr74OM(|s-Fmko8*`4$@1j>6imJKAYh=SD8}gJ ztflplb#&($bS_BkPcyKb@taWR(#E9mr3w{4FcCaTAQ*e<8*aBiG6DXIIA77_VRu32g}FJ-_A&3NmFPml)cLO4 zKZ}TTIU>bek!8hPfQk3=u2gR}G63Ntz}?oX-n{60@pt0ZA`(rY%0r(0f4NZxBfycI z0^Qw4QU)8+dj0Q>VXP=BnUwGHXAtE{ze^LfVeOdqX8F?)l0v<$1Slez(jPhnHMIxg$hP*3e>^C zaF9ah#LC(w)ThZZKQThx(CEszN) z;X>Nm{u&?Nt6)ew0o@aaLs8~=H74RdJ2txtpKfsDi@CqkqVAq9wkhAxpU zR88+09nZ`kbQH8vb!1ZTK0SN?rBfWdl_b{|p%;W~op8e(N~kq&%rW})undCneOY{bD%*LJ%zWK7XM_3i<|+Fv(>TW2FSU=3ub@G;3;y8l`Vvp z)h?DcF-IU&4}-N}LC!jrd099~-UO?)wg^?JvhjUopM}NQbJHFr851Yb8)E2*zBofr zO2)-Xi=ToK2j{n-J|aatv~8qkz^+G)NEylcCakEL-H*ytgw3yK0*SX31Tn4N<4uGa zGRWI*ibX+!)h&aqkuit9VW-WxtQrLl^5&=S=}9=>c$h54a2B zJ6;VgitKPjRgdN#HX0d+-b0W-qaDN^X--sZ$shgw>(|n1&w<%a=}E~JACIG(cWdyA zjz72Wx@&pBZN~wHcUt%53=drV!1ka^%HhWPbMKSYdYT+)M4lhgF%M;6>$1q*^{U*$ z-HlfBxt~K`?GySBacptglHqN^jx~q9stT;?KB?(2tLZ%Pa9Q~r{QH;!&!gv- z4I>RHOEZfHTV|J?zrIg;F|6+l`8m2{9O^HgKQD*y5m*EQ9IP~{uK!4HTNKG%0vX)$ zV7RuDarQ$k)ui@u$wY~px6?I*N8I#v*J(AKlN@xqCu!5{1e+o3{2ZK|fV?zbXW8Av z-1AZBT?y;xHJ53Ynwc5OsJL_@^XADqb_1G#T{mdM!q#jufX$yCDH$xRqIks*^ssl<&;Kbl=4W1>RjHvwhJ(UP;TW_|E!Auzdl9Nn~xsY>S zV75`S{KRp_*W7we5Ub)i$O?{GgfD^SRo}0)1k8&)CwkV(iYz`j!m(@GH;`ON>G-VV zyXVsFdkVsUg~!uxl_qn5ZxIi`xVQRp^4)LClTQ1A3=bXoz<*@)$w>`N22W4>xb3xv ze6~Joz$r7<1GTWa?DtubC*Z0=Vg$)j`Te(nGqc6*K^HUK!)x=W;Z*ok22vZ$2p~fY z6Ev?=emXDIKDLKD0_{NF&pF9BO(Oxl`e}3Nq3bf6lRL(cL%Xm6g&|~{QQ$oH4EtW& z`7y=fXJ&vcV<5=i^fpB6gB+KuZ5AvOq*8jZ7gc-jTRe!ElYkB&cf zZWBk{bbq~mZpCO@v7&N2YX0ZJEdkkARDvrVJUYpN$B zSic{P3o#PyvX{O%Be9tVk{%0Txyz9V$9cwK3k!|WKIm+`SrS{GE}Mwg_$_ir7%hXQ z1!kd%V6iF-lh;l+M!8z7zvrfK#thFcIy02OMje5-pkD)TO?#HKXO;meb!+Rz+2xdeW)Zc#6Gw}se z9HDhkiIG`A<=HHr7>y^ne+mi;_I>OAcG^B>lXPv# zu|l8Km1oLN8Pct~b5H67shEhx!ZZd_3*7@O5@M%2LpbD)Rt+b-x*F4S@E{_A?~%;M zxvO18m-z7eYkvmbiO?M1fj4_UY1T$zmIGQ;n)(aEYPOPnKG}V89IKAnc%s@_Y_BbI zx8N{t@3@!+q>FAr}|rtNLxRQ~Q<@O_SIWZR-)0K=)glTUv}q>If$Z^D{bFRc0% zVm&M`piviuH(>PxmB@SfQq|0i2TG%wK_`-~g&qt28h0bCXNX{3|p+=;SZpxzl#07oNO1aY`HhFTfX5MjV1~B2F=0eUJBsHV;`I0|WuU>rMe0uu{ z6rMR}Ji`udSm$S4uy^uztVuQYv#6`|T#IhvDzeFN{(cfQkF`5+H^lCKf<|_|rWb!a zJ5%A#N4>jimG5i-)`edK#Kf-urORn8QLKd7MXBl2XU;sqnHE}|yv@^^xxk)5u=qr^ z1Q&zkzI|#EaVCbXqvNeHD%m00T78I<0?c~ej1Dad#mnt_?OTkOXEmc=b4I4y#C#8Q zerG!})%;*-TC!y-!e{k&BP)|@yvFwn_qF78*`J%i91X;{`0}_xYk}prv?q1nB8MTkP;apSBLiERjDLqh!vG2OH+hwr$~sEs}@3x}O5 zspH&maF%iL78>y@lV?u1-S4VWVeJNOgv+Pv)n#G8Fht?O${O#baHqIegYp{R&?i+r zxzA5F>jp5qUn_}4qm8_HNOYj%7aK18h9>p;Gx6QuHeW4?JNotG+0AM8s#-$R9wxMM z2Qh~eu^7NyX9x@_5r-?@%GEU*PNeJmVvN(n`Gr#FpHY1ARa&{^{ji1WVEy&J=B`Y` z-D;mdc$#+k&jUCH0u%y8-1O)kA6dsU#^NIxjn2g}RDTXvWd)}dh#Kxb9EjTn6=TgX zYFo6vT@VhU2N(~hX;@EFwm2q$lO78TVs}g4J@pzH1!7eJ48`Nyf?hcO{?3)8?%6&IJrWTyv%E__-)W4cjrEmSKY0j>mKu&49j z+x2KFX1?UJYLwQC7~;hDQSH5d%dWa7E%04{fqwd`_VRNB;eCD;1VgftIM1pl#c2(Q z4E)Rci}Q1H?NXsxoXRqgB~_R|%E^hqaFbcW1p>;!_$SAb=|DHvxKPcMnbBX*KFKRi z@88AF-sLsB^Dw-Oy*w-BCJ%q>12_Kkdt!V%<>^y00|QXbnIuu^9MO((n#F7Ud3az= zH*Ok7>C}0|>wz1GiAIgy(#rTT1LfLoi$b~P9B$KBeGcG7aT#(1DSqrR!S$AKP)I2& zpxJycx-?7%1k-~lp_n~^6sCJX3`Y;%ZII#8-HkJXWqA16ReAZm3+%%N7n)ty%pI#i z3yn|drqB{sj=$gGwlFp5yS{nQiNZFbXr$J?< zLj92R7ft6ZZEbHZE-qd^D2^*cgsttzyZS5*8iA+-8oQNk_HM!BhgJnSrqV~#Id|7s zh{Fp?mcLEQ!zPbtgGQ$#`#_|^h8lV5%$FaBdCp%e(o5J#@K=D1F%{#`a~r8WVYX*zJlQ}`um*NIM=23-j6ie>1LC>X*^T&0@Zi# zk4sA>2CcZXaa0oye$Z*}!GldGu9`NinbCI*$lj7R6vcTys@qI&*a2CdML*XSCk#ev zFjGqgWJx6X9aY)h-t zkE>hoxv+ic)8mizcZFm05^KFa8OD9uq{niW_40z{<;zHI0e4aL&Gp5F4zWj959Zo$ zzOe3Yn5Oc^3+^w4WVv*YitJ=L$*^&v+~xSe>dy8|lM**AmKUl!l2XkLhveG+It6sP z#c4iC7+#GzvX-5b2WL_$XJ}vXPL8%~J7~YzJf?l#=U_IrCGpJqKVAwjAKFPT-464T zHczE`P+?v^=!7BarqhFw&b9n6kv;VGw&u*o<_As#6k|M8;X>RoKW$j;dSU=KpAtD; z_C7emYTSJ7O7drRUcDe-yKUe2Zy(w0rMfwy=KO^VZT64# z2$nGQ3m-y#kC$o!!NEm&`-s0*yfjGN;~<-GM#VE@s`HjG^@%^IN#O}4AvhRBibfwF z2q1S8-G&CEWHHu!iHXTc8yv>nv3FrGfmbnDJ*787y_lU&V(;E^w%AZx`R0Oc2Ovgf z?Kyc2(g6ucNfi`e2qm!b_V#X~_G`DZt_-Bd6i!?LlBM(bq9+9Thd!-6GWuym&o0-~ z$te;eaW5+xXCHt3DiEWxKP_DW7_`9;j+So;Z%uM8t(aIDa~2w9L5=?ccL??|s9NN= z+(z;Q%8?s~NZfS$<@ZUQyBom>)}4I1Ff_H-ae0WnS0>J5?14LoWOe=QJ?#a;Z^&}j z0*Po8mp&;zecPTMXI6rSsGH5qk4*nH&S3Z_e_yC%zU~%(CZ{m1=h?@p!vaTH<$@}~ z*ABut|7qvn&pxZyuwbEdI16KdfM|W}vEq~W*z)4Gmg~wlr$F$!a-&UiALOnie|5a_ z0sh%Q**M>Al=bNq_asfeTDXAmbqw}H+KZ0XFEr_ugV3}fmWX4^7H|mXn|8RRCM+Yv zlB893Ar=l59L^ocS5JMqcuwvWc0aBbyTbt)>6b)zjiJc#SQrdK5(50Tq`d)vfwBt- zkUaPCrf^=E54%dPNP>t5hJe-wqYUtdM_7H})@c~EK%Ybs&%gfQfBxca*zDLemtwdq z*Eu1s?C-fwpans)fU24u3f<#8HK4?OWrPW>^h@okTk0w277a2}?2<}r9~y^7zDm&- zOyAuNujB~8c}S_TvOpzUNt`ZtzQ+D@NgO0G5=d?9aV%>(?(?VZnfC6OM|XqQq^Eg$ zBDX8P>B&JKyBJw1DMH?4xUHTzb^mgyPd}7FZQmL>x$M@id~H1}9^Yj0XTfrejz>kcD&RIFS zP(uL%x(}!kcOd=V}dn9t?K!DNaD1*aZ*t<&N9naP3zO>!|7f1NH3 zG|r97=bl|>#>q9(_w8FrfobZaQuYG}4#dUBlT_BS{>15JQH48ML3$3N{-j;7%YB`a zqT<4Uz-8QmP*VjBapi-&8 zP5R^j8S??Q`6CU#-gdWNWQyylY^iXt?*Uw!{<||G#l*W=RTZ&57#*(Cl?E5yhC}XKGSsqJ@NW`SE zYbX^W>+j6-eE<3VHLus)`?>dXKlgLbd7pFM=NuPnFXyn)fcOq)J81@pxg^i%umvld zRG(k4GZ5MEHl&P5OLv-E%&u;7s_T;`4(WSn$8 ze_?9Jci^c)_{yi=lk1N~;@)yGudl}8Fz-Fm5GjP_%_Rr@t zTZo*|mrv%{_B49dU-9+?>12y}EDLC>e=DYejP4lmClxoRp{GlIp~4eHgdlb^_0wud zGXG+bLo{^>f|Rqv7h*~=qrUo*X3-zN`q%JqPSO{qY9=m&z1jQ@^U?vo)k21)HIE~W zLuE281o|s>7*fk=v|N5JOPQ9}UYPX$ZzDC@ydb8JN4(B;EzAtrO*nnjLOLz#_eP~X z;E}rCzU8Q~x82FfkJcuPr3TZ-(>t7jWN+9~8J(1E&oTJ%W3i>-kF_ zc6_&5sKj>9YNVxCRgT{%V0ToqWmq${Nvj|TKvqFxMQMGdTv(<&X#0+ z8Py%TXXv_~!5tq^Awbr4tiMrO0$`2f+ZOfcFYR#oTyliJ&|%7TMy|KeRG5DCHz)~^H$v5D|33=Easkb53wXd z|2x*mSAN^-dcPMZz^>p>+wi3?m$=rkN5o_>;hnhjw}Y}1JY?Lozt@D6-hB~N2txqx3G5+2HiHM-#FBLu+PtY<0g;i$qu(-*i0CyPP`bub z>UsTd48OQfgl-*OW^9kQOtcK|sv#$OI%FWxawvKd97gWe^PrhP?TbM<6rce>(y8ap z(J~DEpsV!qMY*LDvi|+wX1fX!{bx6>S8|txvOg~J*21-$oQI;`;-I0R-PCeq{&;JO zDeS%tzp~FhZr~SW6w85~;Sb4kq1y{iyik?3(E%sdWgDlP+1eX@MtH8N1NUI%x4&1P z@VJnWWTvrm&3W((D(Z{7!#ni^(xi@fQbjp4y|e|Q*;79;QPo9*F<1c<5?HBjK-LBy z8Eb9X0~zvPgEdzqj4$&WiVM#z4wd&_5B$-nacg9!l>=&N09ywVYJ8gH&bjmGP@}Gw z#(#!v^>zFK6Fy}iHLk4G${tx;?FoAm)j2i62-W~X1HVbl$~UaLReY62EaFOe`AC8J z&Zp(RK^MjS9ML*dB-ehG%R;31&!pmRaOMmzc&BO_D||TRcnU-~R3OQC3sX;zu~#!! zONiS@g_zP;I=!{Nw*8|!vHj=NYBMG;oadT>m;^*^!BhfbDO7uH$14J7A@1V4j|eix z!Ukbv?FUXwaHQ!i<0_Cdx-%H@Pah8e2LRkqF!6VvF5H{++u7G8()Kszltm-^VX)~K zu`wv4m<_R11}~V=$8PCO+1}MaJ@fKuvJvlClGT3jtwgO*qbh(>1Cc(H)50L`0W;GzZN8w08O%UVEXFXmGP(;` zyWla0-ogxTZe%xJoIn0+v!Um7xWLyo@;-4NtO-xvCZp6Q0DXppW@OX6zVz_voo}AE z0rbA8#=NT-8c<`wsh=KOJzBjhW2~Z zex)I)At!(MWFc|frq}jaI%WX0szTmKkkDBYO^23_P)j*@Bu@8@bGb74e$(;Q4e6Pq z1EqyyK?xFf8eGqICT9q(_e44+P;_ZaX7_Fn$|E$w1ZJ|lLVipwhZPPiM7SPMC;Oi~ z#0iw%j6?uI6H(Z6Ah8Msi?{`}H+)0%I+N`Wt+z#fSz>GE+G^=Nq z65qAIjriqAk4KBw^Wyr)r3$La%(ub`=KBV+&?j4-y!S3K?|L8|2&pB&#{7T@tYy$= zy7A9uS%$mbi6z9f&&>;D#g0i(Y?+56zjTJ}vNxDZ>E5OcjOx{Mk3{%C3TC^Ba=EYT z?m!kq+kP^NZ0#4q+{$f4ce7L?h=8(y1o5eTSl}C#3hTT z%mrz8t;kI0SZ;`H4SJ#j&=F_vY|F~~j(%(ve9c5_h1KPcEjv znQ2S%q06FuiglDYiOiJ>c4d;DFr)XL%ge{LbW=Nxr1i{y^xQfhx)$Ve4p1abN21yCpXf~*vk4DDSav*1{ydCn0=%>s(&;;-^3&~ zkXohQm0+Vu^{3+CfbxNy!Bh;PA-0-bDc=HHQpG$?k1gURU@|WIofNBcOd#y*sLWE@ zR^G3iXFARM0>Bf_6lDlUeVwL{}hC}PB5DD zHTZ@@{})j8fb0fb(#a1Gf6_0L+u&81s-GZzLEM-Yl9=C1#@?Dv(p!hXtQIiDS~iBB zu0yI-S5FV)vBY#i3@K0Fx>&H&*&YMRwgjcL*GexKD4 z{>lKU)ql)+%=%Q|aUaoZ2ef!rVpk?SB7HizrcK0A5uxU`fs&df>hpF~tAGCxPU1IO zb>HiU2!4!;$UQfWEK{HN;S&{nPH{T3zMYd7<0!RA$w6cYZ>`ZHck6~XnNbn_j|!i1 ztUS39(27XcrRG+v82otMw=H-ueA5;^L46(K^hy*Z6Ynv0on;0|znZ?-*0>Mzwg#`> z_~5t@<*v?!;#X{2b0JO@qNr9xdtJFA=Gzm5(v|KAi;g1Aex@HSVdn~71tYb1j<70e z9y9pPAOA3;xRPr1!S$OB?FL$lg=rV*uKmYmW$B?*l_)A98ks}X8;lo3Uwh#v(vG2d$N(tbpy*PUkfjdEC(3(%XpOg^H6k0L}d zQY4v_IkOOdY^X8C>BFYDM>wl*0m|--FH#lZutyg0KEx?k6out)MJJEB()=ihiVvIl zM>11XQ>+varZk=(EY+M__C%EjqNoUA9=+mL_v3y>9TDPz@m(3(Jjgp@cN(^8D;n4% zMCT71=ysbJaS~B*TS0arUpTtwuZG38N}RNc77sEDdFDOUdyVsU z%Q_vFIC$Vaco0O^HGDbOm(U983Yv$N4VXC4YEMFR+f8_oc^&#Jr-Zl8eXAjj6WJ~a zODecjjSJYZ{W~$4e?)(rHso{Dj%Bip%w*O~w0PST9?EL^-$2zEi<)4wpoybsje4u_ z&B;ioT{%O^5*2)|4&%DMEJA2!SK8xHdqKDa>u7ianvW_&bQjV9WCJVV+{-d-CS5Nd zM$A_vKNBPS9-=ZCRV3Fp?s;QfnUt55R;+xmm58_x^ z-g1dUmWgo&lG*H@u50)k^pFDzH~nF%oB5y{uLdfU@s1*@?;Y|LP$gJ&20?5!o>Xi=ErYXnp4Q%$lPI9vkJh&zz35n2pvBx>{1ng9zF>2=g0oqlfb%Z7QUT=!}#o^sO2h4adU8&b&nV6U) z199gA@s|T#)UWuvzz>t6yn>>Pyqb)nij};YIz~ZVUg>XnMRj@kNS>7Q|8IczHT+fA k;QtL!l~Kf4DX6N$7$y1t2CSmxQ80kX0B5RGg}oH literal 36207 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 diff --git a/doc/_static/cylgrid2.PNG b/doc/_static/cylgrid22.png similarity index 100% rename from doc/_static/cylgrid2.PNG rename to doc/_static/cylgrid22.png diff --git a/doc/_static/cylgrid3.png b/doc/_static/cylgrid3.png index 56e284dff142947e413bd4cac6f1278a26d72c1c..c6147d5dd389840eea6d9617c7de5b02e2c30fff 100644 GIT binary patch literal 40493 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 diff --git a/doc/_static/cylgrid4.png b/doc/_static/cylgrid4.png index afd9d3945ffc2044ec29de499e98921cf59e02db..8cc5cc5504779e8bccc1734028d8cb73f806427c 100644 GIT binary patch literal 43238 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

      PP7Y7b{}OqP8p)-0YH8Igt*GIF^u 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̉ET#6c7h1nyQn! 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 literal 31866 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 efBL`b;=dyy%Kva}86pQ4azx{vqq}8wh diff --git a/doc/_static/cylgrid5.png b/doc/_static/cylgrid5.png index 7b04914ca6c9783bcd85d934eb39914447cb9615..8b33b0762e00bfd9af060526af8e595272e826da 100644 GIT binary patch literal 33072 zcmd43WmJ`4^ev2nNU4M%0-~gJNq2XHbW2HxbP0$O0@7VlA`Q|d(k0T;4Fb|7{jT%- zzxR&&<$k}zfjT(#JbSOb)?9PWbwZRCrS4%6VIUzP-II|PS4Bd)RRcekXsGa;(VHq9 z_y^TQPD&i<2Jt7eDL)2&gYF=$?F|1)|Mw%=V=ajIrK^L8#s7Le65&VEKS)S#kz~Y0 z)ZM4HuRK2KuDh&<`!Sv5mcQZhdOnFst5QK3s!(3XE)zmd)prp6Ta|$?ou)Lchw?>9 za&mu4V}Ux|&sy`mXc;y|>K6qJcNM|syvmnx6CY` zJALrS;MO0^1ruwe*}?p;eFVRK_Gd5`d>wxt3am@N{V4nl8x4gRO)U2j;y<@V3UHRF z;XeWQK45eC!-F>5?`qLeZu=Xxk+m!Q_uTtrcDLb?-wtSwc<_qW_hP{*hZkYcfahBJHFPJ8CAp* z33HQ}o0$a(KNGgMXJ$$$9G1gHvx;$CAj1ComyHrvhaTHTcE*m&>vV?-H>AvdUXV$z z_U)LJ+4|2kto!$!wx>9vK0icrDi3PEo*Fp4_F`rcmZ0FG*z4#u!1vE&W9Q;JY{ye# z5fU0aJ6tcFM&mdtye$^M_yeG*$dFr&w-Z_zxmwQ-0=r zi;nAMhi@?Th`s^E-{|V~>(`5Wi*2bq&hKmHJmq{EYibfE47|dXY1;Sp%CLF-g)z}B zQ3dZ_vh6W0=;c0&3;pekXG8Z)xAr>c^*?|A=9HF3Ha81088-Lt z?Xi?=6%FUpV#kuA|HdFe7QDkRZ6dUN^Wd^Y-P@iK&ty=cY|*h{mW1E^lRN*qFD+L>EeXd4*(bm!NOPs+$x->#WQY%;vF;GX{jY%El59i3j9kGDkz7E$is z%D5|d?@bJL!=txCpFi7m>jif!lx4lPvs-Hq!Tb2})aciFdZ z-+s-{56Uq&<?}h>8<<7+mxR< z@USU|o*&#uDWDMt-=_+=_a1idSC*K~d~@0(LvPmIqlLByLRjCEURZ=0giUYfK`8C) z*pWE}Y<8d?Aw|Z}bT_BG`{E(@ZCK^^t&rQlo*x7Nc7lL=P6or)d+1pGu z>F=%!w{Y#cNxv(I&h!hvd*@+_%dPYoxko(rQJN4WJq`uW$ZiwyA138xE?XL(hiKqT zzjAj^v}D&Q(=s=KfI*zJ(Qb4)sgLj821(2J+fkEwhL$NH-H84WK5)%_q)Ui+n~)*P zocw&LCu%W~6l_mqq8+$Ne%o*wxG&zZ;Us>ckrpO ze#?x0W&HHp{zWu)13GTNiNJzc=C}Fn@q1);0m)*H;=T*WPZy3hMkMg%<)X!Xd<2*h zFf#@}%0nIYkRUdplsBot0%gE56fwvGdB)GdV6UPS((>RZ;@=HYG-t zeN^z&&aEA!U8MOt29#t09HH1;A_`gD+f@O2Jhd$*V5Bde=7H=?)==-q&$%>I9C*> zE-DI#RZ3BrRL4JGI)_3jMp{DlJ6nk5PX2dDVA}kMwG}BKi9*sSj9XhXCy(kTGDhBW z=XY;17*Kr+M}BjYZpiXs=|ouHDqUE2h;czc#V-tgEIm{Mit>zV3(-95z%>loKxNmYFAwljm1hbQ7o^TQRDkgUo_ z3QNm-*CMd77;fq-ftjD}V7dSmYXmpR{YC@(pMScxjw^gFTn+rLj#Ime-*vmZdE>CR zAfkfC^y`EFyD!_w2IS=}c^#-;#ORKA>Qtd+Ndx9TQ+Wah*XjRhZA5hIy%s2)kki!E z9PegKGmR=NEoBa?#Kk4&;^d_6y^C_L{BA&A^f%{sgJc851w=sDLwwTrCMEXZB!$=4 z^X|0V_?8&9q}OoMlGn_wB8#q|Snqvu5byL?Q{Qg?>jZ^g`6Z(Mlt=n}?C9wD98NJw z5;eJZamBy)9a&yU>CwyrcayhpaH^61>pOxN|D^kk3Wr4hnqVK!pu7xZ(>sdOG%&Wb z{9-A!63?iMh8pOBPE09IK@eulP87zQVaeV*GeZ&<7Us@RIyE%~n1X?cDgKQTlaJQs z_0`2>wQWkGV41ecM+zab!|N$(VR5^FufjOhh(g56Th9ck4fe$ zQ61O3cT7aY{Rk2s^4`0gc#=lX9X`FIaKgh(apGy#+K@owWR7zZH*Z^Y+P7{wv7Yg} zxq?Ch;U()-651WqW=upx)Vo#`YnC)Lq@qGmlf;4~CG+Nda4mR79B_~NM_FF-%AwKG zb_>D7$M;FNzr!6MR&~Rp%cMMXtQ$RQ`Yla_H2S|=A&L~Y;UxAdzm_uP+}zsYaa=+n z2n%{-;O;*(G*t1ixj>z)mN35FU)ohX-B^uCiVfDgY)3tiLKRac+S1bU8BzGbT8e!I z)Hbe`GX*SEu}PB1Oh%_gheRy~jp22iHdQXdA2><)@F^}5uXA0FH(y?_8eZoX36LKO zXvoQhZ91?g$-@RZZw%+Ulpl+I?dIU*G%45WJ>WOd+C&w06mLeEF=}&pM0*F0%9dmm z5BW%BRc&qefs;wwkFDe3+1X-OT5aYo3QBP%Lab0Co>rZA6slbCWV3vtCs8_GvU8^~ zW=Z-DuB`0ru?HkutL~%86wlx1+Bvy@qIC3k*8{}5wndb)3PG}gR$+LMQr zp32EY%PNkHB+7#VqKxzF7*4^dmM2EtMBjexT+jkMhz}3mL4+UyJeV|Ce)4y+t-Biy z6BCmsvcW*@);K*Qoz==$l*M2MLiEK-oLIsR?t}BK(iiOP>an>^iKI~-B!wj<5iQqS zEz}P&_Qy(n<3{q8wtPvc*xvA_nQc%dUGlp&JSm;P{Ql#|?N*~Q26OD1X$3%Wv$L}R z%|e^wwnPpbRLWa4uq*!I2<4swgo+Z{4^ir7WMq_h+GkbOTU=aRF=nNI`pR~;{w3*? zCvj%l@h$&4m{LI&^PuZ##K;HT-qpHkFC) zJL0)hjbKF=f(BcBhsp`v?iaFNZ@0%Vkg@84{tqq+n2!nf}daS;3r)QY6lMb4{p`l z;w#iNp-w#H>+9=bp}ZK5n)S1G@V?Ugr0ahtD+$9T>+9>eT{cIFoP$O-Rshg?gs6E^ zY8o0ER*O2YGE{Z$J%g*33{J^3lHCZFxAUt?kLX@;_E-ve4rq6MHNj9a-i*}eNJa2! zLuq7uyfd7bOG`&bRiY$2J23F>1A@`F+@z6}_4TssM6;hboGwmx^Ru!~^8#dvI=?tLI5c)9qX(sr8D_g~x7ug7*-%E9I3 z<)5?TWXHNW*x8NPl0ri(s<7KsF@=wU8HnLPctB3u*w`?hZ}y?u#z~sH{+jq|W1A~! z0Ob{1Qtehr1Gm!(T8;hu+U40{`?4d)CasyQT~preB2682EV(iNKRDX1@3O=*i33}| zXNi6I-R#51-2BgE2(E5`bTY!MW*U%cy?y4SJWHswBsosH&xtmo57;VgiRfGXvFKo# z%r0wIqWm+rxj7v+5poxf3Q3gycO~o}8q}~Izk-*H?Tzq#7Enz~b z@mr9qigFsztSA3_m4bsl(<5jvl-KKNSCTQ5zxw2d>!2B6h$$*$5lS&3my*4+eS-Kr zY3fJDWQf#gt!%~AdhFQ*01|Q7tx35wN7cTfwr>eAjP0I=5!I*^b?`4JDEJ(a@Hd!YoH1dyydudc_7xmsGj_HA1B(i-JLjgbudS_(7pbsn zeygh5@1-w&I5X5{RW~QzYd9^wem}v`xt1e2?leW;qwJ?cW`6#MkdP1#ec7Yv!mGIW?pe2aAE@h<6&2AF9DQ*FjQCq|1jPj* z3qNqQU!sZiP(PoP(4t$G<_we+?CN#9?Uv_EyQ0;jFPrYM_IS>H`JREtYFrV#-RDGh zfUW@FtV`ldN`ANa3E|=4Q9UlN9HI_*WZg~6V`AkxM%Hc{QvrzL42w>|e${0{-wjbC zxSIFxJ*(l~5Q%&i`_=YkuDD_!qYhniN(ztfC3gjb=D0R3Nz}_Q>>34Wj?-X4BVn(s?OH(e~$QX=(hIdu`s^)`laO4XQaSbYxB);^}AngYS!? z@YE^`NsVbH#YY1uRCmiEH}#uw?n6Afxs|?d%~hu3^DQ~i+*k{3@;VJQE{Glfl#RI< zT!j9v))p7)n07bfC8Hy~a`9%a+f#9spBmJg9y?dH(7hycr}~gv@}c_)kJG!(&dy<8 zde|{@?4@e-FKeVxXQcGHk%&aK`NWP0Bk0fewwaZctY(^Sf#-`gToe_wl5lb-3JQu` z#;4c<(&0WxfB)Hfs&kb+rj;AN;{Jl8LRzCFR&gwSa(T>^V#c?szV%)u{H6u z@=ud2T%?TnO0@{B3w+G9p&6e>^A+{+NpQc^?*m)RYKuWqXtxeGm2c69 zbyB+XmWUSR5qus2nH}*br=wt$E7Wkku3jlE*)a;XE4>4b)*0tP0SKwWAIZ#h?FGM< zM<*r{%(UoM6vN^}Wff2cUw7lc>xtm?A60qDF?xUq@MsBNt{S8;+@0a278(BmRdEreqDXKE6f*xm@k z0^@=p$@H^SwYm=VzE5~M_ZBT(7cRfVEYv+aaM4E7y+;w2F?I8QEA5Pv zoaX{O2E-BjUD7}H*VzfW3CC|gq0sh4@*f0WP7eBN2zvi3vtc2`(5dV(jV2~0UX6%|2$)D2JhYjv zRzLs;1!^_z^e({2)77>yH|M1{I_Zh&pA63uG*_y}t3&-tI+SpBpP+CINIHv?^1HJX zQn1ZOP~=)+n%7J}CLu93H%FC;mfhS0dLtb5a3qt}bPrxtzjjMgNPKzpSM z`XpOVlpxOCi$Q)hW#lDG_Rzs~Ic<9$lE@*;SOlDS^auza$c1sa(;*{^rqkoL04YbN zMrBPo0)|W(Cim}bMM}$!vk(vAB-sUMD@mDB7irKlw_LJ0J3G%b3$$-;5>OWSD|e%y zNPDX=+{-1>jp^nFuzwgTavo(&8Pq;fk3L`6kG^V6#!TK*|P73+wEex#1_skOJa zUX3H=e4VXlDW)(#6LMd>$@5#7QQcweoXPv{Q-!=#30vIdS|9!WZ^7Al8MU>w)u+31 zlp`VMVSAtuM%OW;udiQ(s!_-9nPl9>QohB?o$>EU{)h}a5o4W)MA>z4cX6lklv306 z`4-l_d-!8#jj<-my^EiN&~`krWUp2Yed9;+OIi6Z>Az!sj~sVVwkV*e8(?7=vt%D0 z9{vIF0D(x1jNa<*&YASGNE8X7u1jxlAN0Q%+&h`Jf5FGs_wS#3&jg*8P^Z#k`zG7{hh8+a<+2K68I0vRp(hWFrCggGgnrgvT?a_u{`*D8#P$` zHpf_s3XdW;NghC~O39LkK?`wTqQWGzp|Jz%6Ur=N5ur;chu)$m=DEk|cmqQX1I5!% zc*oYSi@%+ppS!Q8xdnHah?7TERFUGvKEOa{BVW3}8n zYC2s;HTR$Jw-)v_Pc@Cw)z+px=jahH82%jhH40c6`GPJ0Sp9=>{Ce!K{TKxpiO^6+ zuc~)_cD)!F84Gf;va_?P{A^LS0VBvSsZIN2$;?Yq73iL#J$8DE~gC7pQnvwK9$ zM2=l{?gzCD?x5fW19Tnaz+|;rRULFN`$pX*b$<(lito<4uj1dPv1g()bkfk$WAbRg z-(jq+jo0Tc@84s!o1Df-%ZwwN<33Hn4q+X5L8+rJpWr?Jnqs`$#npA`*mJVN3==BO zOs!*JULLh*)~AxKD(Zuy0g9ULJrovs5w%J_US4j%c!oFU6OP;@02G}6{2~LC)DeRB z{9nI?Acct=l(88g>_>}W&)cdz|WfEojDGv;dpS|rlx?lbqv-{xUm5VH7 zr8AR-H@wyrl1wq(R~s4Ew2%&jlqhi*4>NA~6PWZ(JUw|!2jBL@mK{&m+xG7!J^#1- z>_FUjHxBr0!R!6V!)<#%V(H&E_fU~f=e(FlMn-_pe|UWMP#twhx8k7=h$!fS4^72Hw(_Ab)hkjJ$4&t$@WZ&%+NNnt%}l#3$R{`=PyIwmOb&^-5o zJwiNsq#rO7b?7P`4=7U&DbSPP`UQvL=(9t0w2>i%i zWyaOV#YN-e(^SQL-s{fw!?;T#%-%@s8W&M+@=75g^*lzc>-B?M3oLsz*69tn_k#QM z(F`ng*z3Z&K^uAT;>9Lwwaw%YJSG0t!$G0J?rv${uwH1BPKXi*%wLv~MR^`wTv>rUo&(IVu`!!o?*{6b2fIj0z9kk>3&%7apZ4kwO zUG=>D>DHVb`o72X$Ep*scq06yT}CV`HJKz4(!~?s?P^}J5Pm5vq#%ua!Nt|p+Z*bc z27Dq*l05AXb9SP!ExicldjZEH;&x_vu@T+9$1nSRnX0yfQ?1|$Y%W+?3qYaG&c@u}YF1Yviy<0Z)4?op7}uzj8pHuPA<2f{OyfYa=$ zwa*1zUV0yhO6qJVRsFFI+yoB6LTrnkER4YPfSb(sH4&B!Sz=z zF8JE^$uNus>n_m1IVr}1@pC9=GEqgUmG$jHdh%_K;y$OYu{Z@H`e7Om_20x@{5|LrW6B#Zj2`iyI~;Q zsDjiNN}2A8qI#RS9h!hC(O}&W+A0bsf#(X=X>v@gUpS;Fze78d5Uo0}UXNf0e!miu zlIt@tJwx?7lJfg(JrEQ;1I+c|&OjoQlWw&Qtqhra^=Nk6;xB=OfsHqLddnZ9)|YO# z`iQJ3KKAV;GL~}_IKT3hl#&V&CpRTO<8Wx0<^Q)32N-WTzxkvr8(lw8{}@6|MmkgT90!ijx#M>bp&4zL70^oG<`L=IXXr~ zZhcpLvux1lo^;Vkk~MZ}m;hVov|SOBJZ`;kcxL(fwMaB2wB%!=eq^S^cU9W;$ptSa z2M;bl>eXM8?+1<^3rD@z;tm@q^6EfN`3P}=mtpIV0ZrX(}c+Xv?WTC`y+q} z^DK2(zd=_1H9jus=jSI9w9tFFqK0M%eB92?THw>mXAk)IkbpOasEaPtEH(GJSB25q zw&)OweR6#42;v{KIIJlHS_}jl8X9v#()8kj1g%1w&rei8qS_;yhdtJg2hk_Lpa8va z3>1sh^PrqxgI)W}U3HKW)zs7=l9rw7KA9y+Q+_U)grk6l(yOXOL&Hq&M2`a{58B`5 z(~HR#Kfm4@8=&_V7BV+`Q&Lm=YZFuf-vakWrg35AC=T=kMjewZk*nR$uHU~On@*yn zs#*l#TP>jliOS2%n|}2C)_WJDAPR_?I|r@;R#CK!^>7SFHYf?gScQZhdc3kua&Et&u>Ztmb# zBV{4^_h7ZWPwod@UhmQX_rVWjEgrgEK;HY+`zP)-A>EI@4J5Q&n!zPW!wwy2jIhtyZ<2#zk3cMF3JNE8-iFRE#=o3+CG04Wn^f%faA6}qBd?$UvWMON{LO_Q^TsiD z>?6b?Te6#QrtrA$J*!}FK0n$hYRT9_O}5v;gYs9HHsD+y#sl z^4PbPKYwT}ex_>2jC;fK`-{ttLWlL@McY`RrgI(#=2qbs1;(S`qIc+d>aLgG)+;C5 z(_LMHC#aK6(Sjky?jriKQQKKGz|OYQ_^@v8@}Hc8OJ{SU~6lf5Tb)96R2gkHW_hTpsTzhn8GY5Hl88W=V+b^{(Q z*J1#iRc$}7$UyMQ*w|l-A)c*^r7lxa&!45uXJuvi+xuNiL!Yo^<#rMmhyPJB+Y@i(;&N;X7%S`4 zmWD%&vIp+Er#x%8`J$289Qa0HLI?`F)7jMpP68&HTn(F*f`@uu{G_CU=Pc`XX|HU$ z2#0pXjWK>yvs6}A$}1|yoBp$^@1`wqF>4AXu4rf=P8oPlDPyIHm#gi>Ci=^Y7~&Qz z9Yo=hsCVx|A{Ig@d{|gWTk{lb0>vJHqXZ9=2Eo5j=W$34?cbm5NJt`}!76v90Hwfa zty4*anyb;wsD)OB|K=w!SlKz_!`X4d&%QtK-9rYdAkS{Pnf()bzB+*=j$md-e=D;^B<;c1w!VP zN&opLzD~(dJuaphFlB?!l6{8#ebFIUbcaYRSobl4gakDVB>I%a#l_I0V0mh&Qyd%} z)}>AFyOxci%Rp4d!!y;0xb$%Vu16;)CY6)wft^2o1niX1PyW0^_kyMhyHbXSW~@7T zWm&6O13~X=Xlj;EVuUeOMlm2T)?&KX4xo|S{%?8Bsc}On^UR;#iJ5peWG`;ud!q+E zRWv0|WS5-hc9poRgTp6jN~jE`0QlM2+2N1^HV6IxrDaSD3Z)PM7Am4k1uloGB|hMQ zti8CMW+>v|X5QyipVWI##Ko^rS$5JJghl7WH3h_Pt{0zPlP%Xrk0isPgUSSMInETu zj^ZQ+Hrdz&#$xRfk%Fy_;5QA~iSqXn<=t4h+)}iPYX5wRC9i?KnYCN*jidicW@>Dl zl@nDE?WxY|*>1vG_52k(ZV&-(o5bBL=bRY-f5N@<^t3Ii1M(vy%G%o5!*c2&{Bfx3 zI!k$aZmdxaC%|W!h-P5}(hqDER#U?RApilx-nh6Fc-fz+Zu-W60|pwhYP;F5*7`kz z84Szmpt-sck&yrDtGZ0GI)MGCL>dSG-%XEqE8URnQmWF73PjTX`cZFwpatuAFz?XtmILYeSfcJghEu0Qf!n&Ks3;$zM?0TG=#CImn~+>bWk zpNAOudhauz)2U8up_|OV>hhWmvlt4TNv2WRJM-S$rIwQD6^vKSEcqa6UPt?T+jWfl z^Iwl~Kz{q~qwjlKjj$p4H%p0+YNVh!(v#WMq!`{D8zL~n$B2lfH@vKbSn>d58L9c6 zA1gDt{+K+%%nb{L4p$298tBJ{QU7y`omz z2ce;J(}pp8X19efuv0NiDyM62t`Rtow(?%pN$t_^ov^gkHP;5UJY1SVV!(u2THnnp z3*M(H)8sTOwTtgei32zZk<9L{_z365+nWTuDYmv$aFT&N{vdQ|e7*nlMn%CN_=|xD z<~+|GKC~J4n^&IiPLvw1fA>eGUDDVgjp~v3v+-IXtm6l`ZY4D}6Q+J?;#6A^#h!N( z--xoG;|ohh+r6sc!=-cWXp~Vxnv`;4?XLNW?Yug4cKQZpzPWK)XSy zf!kFo$m(C8T1oNj7k3gbWD=0E969CRcI5-n(Mp_lbIuAAlD;XFl1RVHWx)2g{gDs} zHe7o{3)m}nt{E35yQ74XHC-@d66uy(r?9erB^ zCI-BRksuN@o^KY?cJ+4QXkS+wiG4>mJyVzIf9Bc!60IbWFLo=YAVQueqQfMsygZ6g zx4Nvc@nher>Y$2?fVmhB=i7w0?1lpoPeQJ$!M4fK^fd=LrnGqcn2G&35xqE=Ks87s z9)S+Q69wx%y}h>I^)$b-G6wL-MDq#9(5nhbIO?J%<%G-2%T~Oq z(WXL;LyUzA^?Qs7oiimIf*V|P=l3|~Q%pIH(Lc1odrsPz1D1kge6lm!2Q4JDas|IL z)q~)<*AqAAhVlvu1^2S7jg_rwpok(r;LmhzJG(w@VQw!*+#+hMy zk9TmAA}D3_T71*s@Ix6(OiD5~HYQ^RabYSz#KZH2Ie8uS%<_Jj^Sa_k$>n5A%B!h7 zDTx}pS=GA%bQg-+6iQ~bf9@E)<@ka6Yi=%`{M%a{>89G+V9=nz{l$N_60;c_20|KH zpHpi=mwb-Yx1LCA{fw1yV~Dw0y^=<2o;z_8P!yE~rKw}kvxmO;J_GKF5K1IuM%p&{ zIAY850a#8J0fFM36k4v_@$vE42RYH>>O_rToq?KH87gwH>@WPbpnw({i&`+8s;nE( z8Ka{HLgQ6gTPtm0@f^tEl9H|F=0Mdr;@p#!FRBW6x`Ph*;Z@HwyrWxNMRas^we|Gc zH{J~Y`jsgu16BO}dsJaQx?y||YJ~xFw!?bxF=i>#tTyH4Ji}K30-S{RO)w}o`-3-^ zg9ssoF^o?|&N7CWf}Uog%c=@DL_9GqZIyWbAF5)0j01P7i4Cqg7{q$t9xSSds>cZN zZw#f7u4gzM28bui$gt+-b3D2KVTxkdywaF6g<~WcHSku=bTOwaoEg3PHzAQ=Uf7(| zZI0D}BZ~=VPA-ATaj88db?a+?=4kopwHrMPh-Rh*VdS3x$2rgSd+7lC%W_<(@ z5x=4C!&aG9&RXD3y}=7_H8S$>NCK1b%Oh}Dq6djmZTr#Efa$mQZFDrGW-xI=L|S=i ze6IOG>KP1istV8B8_)s(7WElg=QnTEuaK;BIlw2s=h@_aeVCCC9{N(htF6nLo0EAY z_H0>!STQYdNr2Ful=Rp|iDjg|cQv@*R!=2eYQF2s40*oREdGmNRm$SO#tI4wth~Hm zFWhOP@+Sf>DC|r+3F(FO$aoWcnxZL_LmMHa5EW>&UuKQr6aQ|5z0h1^>sq8$(E-HOX82;z5tL&+~0C{Q*Y9&Jvk z91WcjyP6S@5)n$rYF`4dRBztADFYR6+P-CA@M>nTK*daO@Ime)0zllYMp}5=)M^_d z1wo(sA`EGCG)`llE8$`U!9~&D?`Rw+j%0J2CmC)OzuG$f#xsS+ZvF@%kDF?no0tTE zAr(sT*kJ4L--&djz1EB}sxtBvIysoOPFpMzrg75a8*fS`HRYK85RBf3eUJzE3?1iC zO2s<#R6l{FL@2laetQN{2^2rR|KY5m<$^Du^%)#uh!KBC#z^QQ-k1Abbxx}otwt<` zx|K6OmQF7U3JbyY%)4x0Ms+urAdK8ec0JLg@9wvv9jIUyE-rD9EN7nxt4ceG_ga{G zJNn#Ng(ev&Z!a%Ch@*_be3*D3U^SbUi(jpHnv)aGMCKi4)6=wt{%h-q)Z3{O&xLYLW~Ho)>x*?^%8m)-dz2F&F= z>=+$K*wWCfkjd=KgwGrZu~3)xxfdM>6Z*iYCtv3ev;z1Y4hU*gB_5Y+VF9PZPpUb= zFCS5gg1| zx1UR^vpiBP2a}n3&qjfiOtcnEUD!YSg7fE=XU}G^y7*7?N+8;AQGOH#?FBl3pXmZA zxQtf0r?JTus%|&ZiUJ4{Z@Du(mLY`vT&Gm*{1{I~*A^5^temiv4wF_e=hxOI9vHX0 z*}#QHz7ejmUPw4MR14}X+(2M!nYohk>mzTdqNds!_Km&wx{X-AeEwR?0R)8VuxyXM z=C|SGpjvwS+4>GJNwf{5aDhEeTg^M=K`u)xVL0x+dkXC)_r$XmP4yx1uA`5neJpyqOkp+QzrIaDW zdjHUo2$~dbS5#T+szGsX5(Bl!{30-X?wEiDCv)LSfC@upGYA|Yh{_AtdV*4*7xP1# z_eo{OYSsr*P?Gj{Z?0PYn=x{9WZgRMm85+V1-%^0-h-PxsqTaIT4#%o?@^hfP4!L- zkjk}e6cipeJ`GuEm7Jn?kMFAcNl^=JV+x3BY!5Xs=z*t90P!^~xM3ZlK@ zCTHR*`s*W`5dLBeY04NFLNixl3lW0TA^-W~<=gfF-AN%LQc_ghr=MY1Dhm1T{k?Hr`&_NusT1hpCSn8rWZ%fAi#~mWtX4+5&>FWnPJa0H%6w z0YoAuZZogM7wA*4uQV-YzD-W0eF23ZFPgHL7F`+mPFfXJVC7-JZO#8KX=ZV8H~`GG z_4Su-X4NuCL8I|zrYD%*wOVoPLN5F3eY^)k-U+f&X zRA3@x@eS`;@%%X>xcmd#78g!^cTZ~pj1N`LR47nMO9oGOLLZtW9Wgo#R$&!YCov7} zcn>gUOjcSvxcL`(lUVWm(`#H|>OvnfWW_iYo=?2D^y1B646vx~dE&NKE_*8tSIyB@ z+-v=B-aHgs-WKea z`wxAh=lAvr$A$K!sxQn70Z9h^AXHlZqhDhGyqg<|_$@?Bf0^SNsx<0PBNkWosmv;J z^qe-oN2FYxf5gX+W#FF#&KPbfV$HFt=p=NZry_OYty;=}BoGnhTJpsl$*HM&6rDgL zkqCIkLb6M3Vv(a|=%I-}(cAjE<{Pt`h>>aLl0X>(1DhamLVxGwI@|X2rspZ17W!W2 zFXGFwgzM0=Adi5;+$4wM%+c6^!NI~vv(UG(S1>3PMk#|ReILWa9anqt0rARKq+*WNq2&#h2Bl_F1l-RAf2!KOlw z4QFXcG*GF|oSsY{8q|2+S4c(M>W_`sv+?DoA}&+2BpkPC@V!NO!`~2-D|}=($>Wxq z0}(mPk&Xcy&cX?ejW=MadHncsE5zpbjCP>+JB>Pnp5SWTDkYC82TXNJ8CCmEYPC(b z5Wpn>ryU(tuCNWj-37i34hb!qUf;;*VG=?@BcSxk%UOZKgoN{T>>6MoP)oyOV-n8J zFU%_+=Z_>gHR^5262z-UgsIrMx;CUK(;ON2OisCg6dId5pQEwAuM_>;X-f*HZgNt) z(SRAoYPm@w8tYAtj*h-`Qr_X%WVy{}{Q3s>X3Ot}`DdzNo08wj$mbFT&Ilo%X8Iwq0<8u@6HW*;zF1V-sGp@QMf^l+GEZ1;8x|drbJB&9fmm1ILl}n!<0HUB zylnG7@W%`i-3+&bL8%q%(5_{1a-7dYG=+tQK*7W9birf;j6A@25#*+^ooDy%-Gc`p z-vRfDum`lZo`%C|E*P?)eJ2qHVeG;zlT`A_y9v=H!j1#nl~sAo`QJ#<_vL+%Zx6T= z%#4^>kXM8j$>3rlME)Cq8~#>iU3>~TU;*?HT02#QT1P4&$k1kocE#O3s;ky`^>f;~ zJ~1|0>Zwoc)vb@IJ)e6(7=A}b3E zSXbM@*b>$;`YjLO+_ozWpM%FD8!{D)|3#1r^scN>0y7AsjW7pcRmCPK*v#bhaKkIk zpj4BQ(~Xl9~{UahYMHZ35j+_XbwKE(EtawN{ z5t}4W4Tj&TB7_K`OcOh-!I-8x5&Js)W@wsF`=Px(7UHUN=080wY;r=r2W57ja`HHl ze=c{Xe{gWwwP9k$0d@~yJ(^&aQLg z&03m4pX9kWzkADW4y6nj8W0mqd&jbF;u;5?dBHQF;DBOj^{{m8sp`n)PVB;WubX{? zNa?_#Ov#2-611=08^7W05eh5=1I&p>&hKgl*$UX4PIlh>nbd{lCa0>q1+9m9w0>Bx z@5>54CXd9|Y(SAP_RQ%r#YVAzs(+q1qs)^;uUYbIYDyNs5V-XkuTG{n1?N^wKl`c4 z$zg)9jG&VP)*ZMVc+;#S^6#3FgjO&~=g{FxnX^tnG=J6S7`MJ%Lpm&B2fjKug?WvV zO-)S&uRAqZeA}guG}v>cOnE49s2F{~>JL6Q@OuI|%Er$R2d9^)Rp)_YALq3cyWAXq z@Hf-Pz|aBB1c3#7Ny~ic>#9g`a>&B5ogFlHhOlI*G`bTmPBSU=of2z+n= zYQOMRllN@$*~6^okz!EF!Ga2^KEQ!-67#R8o^j(i+Lz)x@}=R!KN#!0g_9&pIOTjx zrE)f+Lw;G()sDcW)?oa!fVA`Pi}Lf8;WEqdnPFO zQGQpYHyjPF+b}A3Fx_%BZ53-=t_3iBldE&(52MGtans3M>=mwAwQimZEp=jop>Gm` zLad$L`M4!(_fbzCr@qxF6GT=xwP1Gw+^;&K(ED&*v_x|suXcoX04|g=;Q{Ch2(1Cs z&k^U5GQ8iI@10Q-KX6Z}sL-MYSRH$+PxYK#UB}Lk;YJ?+SxmIORAT$Aeb5P3QN$tw zRApgj7k~9CTgNRM>#l;G%fk@yvPm1-;`&(29B@6sP+Wppc<&`^?p^b9-$2|Zm@@@a zfI2H75fPoGKCEP4g}k*j{mq%sjRmZw`*zjDKjxd&mM?him?5rx9K`lb!IIe!{x7)r zKFk_-?Tg%f)7o33iK~CLJw+>|9gj(hmRy+SBqepXg27sm>Q{;{!%JRnA37kkHiFH2 zh(Vq+TUqIe0XK*vv|*Bxl3>)`bjKBL3ZZ`@4)+Z@6&$ByxBo-$?X7s4BfnCu#QPEm_5^ zfZ9P5dAh#Zan?DlBS?biI?LbO`o%SG%UU?k*>TT$)i9rVrzsnZb#bInt>e}}7O1MJ z(G35EK?lPpY)%I>@pG`JYY*vXf;8VEdpR7Z;bWVQgpbw+_$L4`s;Oc#c1NC&ra* zhZ@nCVBh~RW}+JeVlT8#V9g$4m|^Tl2DlDzX~pkm_XfUbW8rwhQ0Xj9-YX7f&Z?`c zIT#CMIsA1~Rz!E$=1KI+mb>pOHap_}3{W~L&_CJQ+*Acm$ZLwY-NdAyKYw!UDl}aY z$<3nYB)`*8))vP(q0uZ9mcW~)6*3l zS>lKFt1Bu*DRD*O&7gnM5kp01RmL!i5&G9^^y%v26p(g!g?#fox-S^L zGZjZJcW&Pz_54FN=Y6PfJXHfgpSJ11`vr5!CtWVag=~kx=dN2QtY;5Z)fFddn)j1lUwrD0+B-TAqJ1d9fQukhIC>kL*YCq54;+6` zazmdqCdwf7Y{^|y)AzAKri2h0l9G|CcpkWYWy7jkSqm5+PBb} zV@^qefoLuQ(V207`3o@}F7x8Y4pGwYoY#L2O-ytlrkjp+-N|B*zDcKdr}bEsy4?5t z@IHQ%sMCaX>|=~~)3@K3J=RvP%3-D>nqo`mZyDcMj{)v<-?rU{F z%m)1a{iU8~d7m2y&#yg{9{PZ3QwHJ>etSyThaxG-%NNxd=xpg|X({KwrSDkf2w~G3 zMe%;5^=|G}(|__uOCG)pd<_ZY0?@{4XYG8qYJ9^kc3Yl;`|eTm-W@xjevTNpip_gG zgR)1LsFSHMqY+oKg4bk5WS&ef+gnpDA8)3kqw}v#=u!*@RuK)J-}Sm*NgnNp99}Hy zud|Xu^$Dd(Az8OKd8KkmDyNWx5nrAH8K6#azFSVOyI9j&Qv^J-_CCcvW41(o-bmsjlqtuC|yWH)8I< z!=QMI4Mto$OjP(bnVFa>VD7Ujo|fc3Om3>482wl*)4|jHTaQ6DJCx+x6nmlz3|QuH3fKjCQxJ%z4Rbwown2YvS)ktD2Le?<+p%digw#4J(Q+8udC#Trh#*EZ?~}`BL^a<3V6kXOk7n&c~wuD zO=Sn>s$m<2mo$&_aX;x=%B4jYac1GGlakqOeH;(hrk}k#H8c%=U8zXY-0WP-t<^@M6>h|eHQgSj3tHu`ZFxJI{n%HWp=E>3* zcXV{bO8)w^nabdHWX|6Et-78ysrq)O`eN_@SJijNQ~CaJODd$YqB62aM%m*VA$wIu zA)}1!O)?@PD~XJ(NJb@OWz@-tgp^H`5tUI138g&myME8}dOiKqtDJM(=f1A{x;~%x zx;z+AIl_#+2u1$cD3%&Uq{3kAGNWj$3sBd*Xlhuw*O;2;S3dp_}oL9WXBiC{h-(@h7)g z#JM?tl#$e+&|sq^Y+N(?I8^=42|j-Q!F|j$4RkpSt0AHHs+>{mK&bNGLl)LFnITf3 z%A zFU8atO~i=F?d4($-1K5HR->GI@mGWO4=Z$*|3YwxBp=wN2R|>E zx)nWs=Qil$Fgr77vh%i{dy2Ur#(x_;0GATwb$)apa1i9z6KDyexbzV($sFxVp5C}yTlyh*~{U( z)a<|IQ1<8Rq!PM0LShD)90z-RX>9+yFXxNm8g7)bOwSFPXy5Ma6RtH-5xToGyvCT4 z6qYdK*CDl2qqLSc+xLS66%Q_R) z7Jd+LL(BTu!l=IZp<}&!|L=sazI$o5 zS_UnsVO&-L>6h!svRb1KS&a;N0pLU@pm-pc(aT<$?vX@;9{rDv!=*RExER~nSsNyv zMGmSu&3ONev4aK_;@YX8Yp5+v^bDye`eEUrPMmrEfLAm@lj25OQn^(!E3fO6uNtO3 zAK&Wm;M3<2pR|H^x3QQL$FhUuA~^Jy=LWF`&2>dv(@uB);otm?GTLZrFTJmeT8{bB z)LuW>G04ZE7?`au)!3yGp)I9T!i3qj3$yL&sDR*`&k4HucdD1o277wwiM`?#QIJN$ z?WH$Z2ZU_@`uH}uk57SnzV8yt+ahbt*Ueo{dDgI*OJR3mW;K1|^2!SI`F%^GAEJ2f zbemLlCidbBJ3OwcMRRoazKHhyAHITt4gmvI*Z`m*fsS3tS~|1eNn|F#C*f<9aL;3U zN{Z`td*fU0IJWGHd?rYq`jp>P*vvxzJGI8WmSUpjvY_-VBCm9N*(NcbxW9vu7fVX9 z&i9i-bBh-a!%P;=#Q=TFFIrscOVdpTZWgdP}Kv%lsg*n zDU!>N2;^GIF5s6`%J7hZ9wt2c4&zO0dB4QfwEotI(q*C*d$kgW0E2<+2D)=EzId1R z!jAzXjVU>8K9}n?rW$v;A0!aL3&T~;mDL2DXHfpB|Gr>HU#Zx|v7)}`DSy`*sGYRC zGQM{3h!VaSBC4i7dT_W7_kqa&B9ScgItA^R=bi=99WA;ifJ_spaN%a9tY2WMZ!EKE z?Q5;#N`M}g$g|qXCT~O^>g?{mO`xWLMtg7vPe#|d7zb|!z9CuMANr(RYu<>hYie4M zb8054`uSCV{q$hjw{dt{1aL9}EwBU_@TFzw7Wl@F>b}}-{<}Mu6_9uYNJ0?Q&}ty4 z0}edM_y~l->UY1@2fyG?eg@4u2B;%}kRk~KF=O~7tI7t)Wse6&dTA+LG3VOIw?M0| zCQxPCwqKVdG2SjWnr}9kZ`|+>r5RuZgmTT=wAUpqCyo4Z-ElFyHRMrygq^Fa;XXzF z$Ls_j^i(Mic|Rz7pc=!iK?#=qI@OE)&4aI?r<`uD;L*LAo}Nn^Bk@MQipJo_B!cOM(`LN#4i#VpAo;Doli5oVy_6HtET~ z{?ehjr|Xhwq=(>~vDq~{`f(8Wife7h;Oz`UAlHio?z&+&FvGh=Jo*QOYt0JiDeprD zZLG@I*!AD$67v%VA`gV1kq6lNkF#o=@u81XH*7X>JZT}YrfTjvF7I)OX;LpczT1Rm zb8Upqy#FzM{ri*gJNGNT?7pKxKu529%*Du0>2)UFuEXrUh|v>Yj83fV@#?1~6|dBx zIm33EM;Jpgw&RZLCYN}T~ly-oO#z4Ie z{!zimp!Ktkun4)YKX)hAOsp=3PUAfbzkciLKRu`sp>BSICx|!3v)qWh@MV{`EGq^1 zrV{hoCMct1eWqz)PcE1L$#t=cltPm{L-F_d(homfPTgi(HK<+WX!?Hlf)>Hrl|wAxRAP_HF5BmypJ1Es&o$zw?j@@;P0B49pdJ8 z4Un1VkI$y?O{>9Q4OyS7y|F%@*5}5HQ9U8kNzQxY)cq$Smv-fsyIe;( z5I!10`;N(rZDG2+ZjP=75&#~p`!VU|#Gw0vxz!ew4mfRQW=$ZXaj`md#yfZJEJp*C zJ6LYhx|6IwC(+U3FSdJcr>4krG1I;(ZZQuQZEla?`fQ+{QVCH8z30apHo;Ef%O;eH z38iN$MOB;=06wy1T5l!vQB9IFtA5#u4^_^CF_x(y#?krxU707&nWesQdG1z?42)d; z4a@rT=J%SlKG!QRkXNHKwy?-L$Mb$^jp$b*ckLf|m&}vVu>9jk$;^bwz4UTjm7@Nv zEr=#KiDg>s?=tQFVb6az;%oEG=Vp=FU~O$37p>}S0eK>{GF)WIlDm_%#}nN@&d8j< z)BR#<%68PXx{^ZFaF+)9_>L1#M9@1Sh^x50TWC*OaCOf!-Hx&n2syyP54;_(yw&l+ zi;j{41`+20V=Zl756EduQ>2Q&g7MA&a*~t0(A*jLi(86$J8o}=Hpg9Lff>uKQC=B% zQ027eoLM_jm#_zZ79*$zxpd z$s)>%sPqtt>6FgP%w5Sb?B>b@ijgefPM*urqe6R0$zB#Ha8Y{NfAPwF(1C@AW~*VQ zulk)bFNRtv0rhbrzb1IaFC-O=aJ?3tNHL?uQ}Ry>7Y=1~et!2j)jfDAWBqZ+$~?q| z#v2y%qh|O13l*?3yRVGtskc1kNU^tjc6HORYe}WNH;;x^eq}@HN?p?P7h^vMs>}D0 zqb~dFI7#gBKWchPfbl?W7xQH<4~?;3a@$|XnT4TNAxzbyq(H0~f+sxrluzWALCbyF zoD{GdaAUz51ah(cPI_yPA-+S$g^UmAtO|q9c8`>n_5E@Mw&479$VeNP69-?mvd;f4 z1vdv5NShM+GZ-j7qBav0iFLBG*m_yn_38ur-)1t#YF8`bQcQP=FPA?tJk@HMldanA z$ErE1WoBu44v_-IOFu_fo@&5ZIO79hCmGa3u$s})Y=se1uqpq^PUx%%p9Im@%E@WL z%ZgtTuEOc7_pdGW`t*uz6oO?)k+D5u1d6PL4|MOaMIHCoc2}m2C!r2c0=I2U;`di( zhPipLe(7f`T6hCZn$>o^nz#**(it3`hcoO)=ZOvp)LK=`bHmDB6JDi)p!egb8KH zCf@Vo%e3-cJ48MZRmrxUteR;hSyUBot|Cn}IG7#v)1aMnMuMGx=gVsIy!a=ZemCW- znz#FEmh@^fm(ZDhWU#RK{B`E6IJ?H&RTz5l2Oge%cePX!&3MiWP>KT_&s%>y8urz?%PHkSwOILG_mLoMhn$tUc|mo{W3Y{!Ii!j7 zu5-O_oGenUxgbt!uVtzpi31+*?qW7Ki;}*ua2pI@gY|!W;Z)h4er?Cv_Eg~x0PEe@ z5*E~j_R>5Nm(^U-IXEGJ~u?nqkBd7ywiy4uQ3+3zML@QD}Qv76tKd79jUS zkS1YaK}Fy1Z4#d@4%{V;OHyIWyRbN7YTmgipyg=(BxEBPGKu?q0UeKs1%#OWgxD@q zhR<#cq@UDW9f3LFfk?~9m_*wGFt#}QFbZp+M9`!!k0t%EppKwSMRf(vE!8qWi!^bL zUUW0nWi4i^8(JkJi^S4?&~oa3A+zYqGfOkrLv?}`pdcb@N|*s=$Iy|zJE{_UyRgu{ zGdRN`MfgQHu93U;obai-V>;&TQj(Rd1UUY{xHkog%7jumAi&J^alW7aNM9f0r`Oq^5XHJa zt#QQ6d&dp?R>9Iq+^v~^JytC9!TW>qYi4;zPSWH%q?l`?>44DB>1q%KcP*Q7`LklI zy2~Xxj#nS>N6h-jLt7z8o_{#C$J<~{dIOBZCBISsNH|&lV)>5mB6L=KKm0cJ&`wiY zr0)GCq@8Hg#nCe};|N@l2wa6GJbjSUR1%Q&PgYE>kNu~tcB8d3j=+uJ*F6uG$n-gc=jjPQ!{xy_;|&zc71$8J*3F3mM23aYX}H}* zx)(I2*hEh(m&a>zhK9#l8!4>Df`hxMGb)SMgT3lb%$f1eTUnwIA$UAIMjne(ZAtZ} z@ep7k;ZQ*H(p{$q%8dU7mY;#p==1rXIQ zF`(%vd-4R|%Dyi|he;HWy%mrQg-_|B9mZ>)YBp`rDurwL^|U=lpFh{t zpO5GvKdhoM&3A)+3#1d^#2y+n-JA0$-$K)QGgJ4lvjC&Ee85*ad_DLGB>sS{r0A}{&pqrhe(9%7{@1P6)gyy9Rlld3 zs4o2Y2!tRmQH$6Xq%&MQZDvv~wA>yV9IO@%bPpK(;3E&G7j_h6Gx9=O-Ct=?=Yi@B zurB-$a@-WWY%?prgq9PN!?nb>oAZ^4o*YL;Ex0}Vxq)KmX1zBnF{)g%V}w`$D^rqi z{@nS;(Jj`%If~*x^zJdOd^emK^}J2$>VU_qpmPm7XlTw+C)oHkO-8X)?*P_71R<<`Ax|OrlBNczH zg>`)3!c<2^Rw6_nefPadtc>E3L)%!T_EEXLQ3>>uSyHspjSVDHo-VJht&c3N(7mVHinT+>dRlk+8=7I z{??=w-MZ_7rLK=!DKa)AkVe+*gn?qk0OV*VQ#@tYN;)7-L~n(99?Gtldr$QD_s?jH z@xAuZu{>4$rP@)9>PdfhBajP3>Hh(WdZ2u0_?VIbuGM^oxCwKuub# z*42mYq0tvABJXv4tNOv}B)`Mp2+_}Y) zDjn$JpvM%zbuOy+)w;;P0>>W$1X1O z1^NkbvcJFF+!DNlKoT*~eQ({NR6v3y2r|*zFCz^onI9HR#=KuOg5(1VGO}ov3y=l_ z6aRpEg78zw_|=bPCpH;}>m>338KGzZd6sEN0RaHvLx2rVGcoTxZ=11wihHqzIAk}> z2vXGB>zlXyR60%9qYo{&@Gy}uGkn1q?U-1(n3Q+6VD%iU5RJ(yyt6$m2c1X|MBRoV=M|jw11)#Du#0q%;{J|~j@946{kcaV7GU>-O3zi0DOwdd z8g)8M)K%;5Bah+;v;fKo$1%X|*d(i1UP4NSDtdMdO40}KR+cPIfhH#+GLD2Oe)yT* ziPY+-I`!gKGASDl>KYk-E|J>M7p4>sbvB?<;W5k(}{{{>rg z00h+x&$j!FvGr8NNJX-=<1s_u9dw$A6k4mA#g?`d!`mFZ;4roB7dhXbB3w zcvNCemx;<#U@KA*H+2tB8mKp8)+V=B{uqU>YL~)yT0$P$Hi)m~zu3l47zTjtq|cEP zjW3bYi7fml3(r{qDOEXNv978%5hgAYSPWvW!7VhMtH}TCE*NO9n0>6O8I~**`+M2g z?BMd8Rw!|@x3k-VwJn0+`a!D=u#y}SfJN3lUj zr~w5PH6_0uO&@Y+p!6KMgkoBlDR!7dQN9wW%bbb=nMgl`6}IGJNzeem4N(|=`sG~H z29`fpy!HY|27Mb05xBtat}X<)^e~EI;$sRDQJuQ`V`^2SkHaj2e`U-*M{F@lR*jR- zG{w^>N)YYld$hn$2woU0YT(-@a<`OV-^3c~fqdztPnx&x-dZ>Dnkrbnd1i?-K*#NP zZufLL`!%!Q>^BTksIlxIO!Xlsv&8e?VC={C7Ku)z;Y)5meN|0&+ zTcCT6V)j92QaZ{T`siu#OxQctgEtC9XGPS%pQL(RcJ^!6L6UsWI7fEM;p+VIjys;9J4YZR1f)z8(V$vba zsAROBIKTs~XMYM#00Au1GPeu?W53Tb(x+d-!PoHV$c8^?Oya5r4r?qbnkk|M?Ti%I zGSo0-NS zs1t+cPLFBd%jh*r?RUzDI17duU*R}7{qU#L6ZKRg&&>Un-v2O3t{?NZ=QVS4b0d;6 z2(MGLYG1uxNC@F8gW?x{CPZXU0ZeeBV2V>8{OqYk;34nP@U=KdF0M|-6V?A{@UJgd zOTp#m;X~kU^+Fs$)j9pS-}kF?PGdl^0rMk9!K`}(7&oADrP252a1;tU$&Z~G&Z?Tu z768}@ep5Q5;%ls++Hk;#=S&vQ@h^<>$%Kh*VPQe4Gb`CS2*5NEZB5wZl7&tY;s9G8 z=sxI?KE~%ezZlJbYn=bc8WmDi>e9Es2>ilCpk$9a3NMKmm^E#@yyzpJmGOD$Xh3^& z#+$3zl_5uF2i0({jF{MM^%HA8A~UnIxg?T;9aHK+9fk>)1=1WU5mdQ?bJ}D3eICDC z{rxA?P4-T=CZ^x364rjDd*O(}#r|YS(Kflz_4e&m;SMA)37TtDti0fk|Avfb2!-L= z+jsl8rotmGb9DPyAYis@1#tiY@mX72o=~C7%Uiw0}?T10Ah+zSkFeNA~RXdhK)i;K1pc zf7oB=(3>NS)Sk<;{ZdUtZqm+!BuMq24|bk8gtKT+yG^`ri6t5^6#kh@lN|NW+uDa! zD{PfHQJw3BB|2&QZJ&J?*iq@1LSlZ)M z*)+HOoIMlTw>B5*R_Zg0;y45Pi5?cxY}%Jc=<)HiqhvYpUn?jFj#A~k+I{@|udm^n zO(k`hcpw>JxP9t{(&HPEqh|~7cpUyQWK*|q8D$An=QnTOG^r4+c%uvS`hc5THH%Ve z&1@FW^*ApopuI#&PMoBzX#w_X^cq*KD6~1v1KM~!h+OXfUI@(J0H0$q^W3(a%G|<& zO+-ZG?bC~=y{GRE1e(r?HGV|p&&PG+`iyVxO!O#^*5AlN^#HB+f|nPCk>G^EgKyvi1@m`(pcN(AGRX4YPY10q z;c@rcU{LFvKx@y>jHv~AGpkB*1wKCa?To_= zVqdh=$e$b57u-WLn?5t}_N^{JO~cgon^`Uu!)Jbn3+;;|e2&Y3N7E?uqwga@U?8t< zJ6#P{8!2voMo(l9G`m$79*#U2qtN@y_@O`6);0nA?;nv>@GbJl%k2lBEKQ zbD$25``@Y;G5m<*`;;9Ltk;|@Y96x}=LV_mz6TKb^JifQ{V(dK(dRsT6RvZxoudco zzJSv&twh+vE~=NxXBgE$G$J@L1!zhXeAcWxfs*clOdg8+H>WGiiUr>j+p9M*;07hr zdh@qf8&GrLNDgORp0>H+N3JXc0DfV){}iHG#!mHF|Ie91B6?&WNeWaHYP7$A;_G>@TGV3B23Ke1AZLHFJa8Jx zPJ~H^z&UQGQO9^-J0?6jrl!OKU&mDfG|{nldn!BXB>$QGR6>CQ%rrduXF&PeWqUFkmeD;TD!BT$z^zg0|E0^2WweSmeSG_(_D&|^n_OM=@r zO<7w^tBlVqIt6MdZ`3pz{-hs1dYi)+xpr_v%8SyZA zPqBPGCMjuUw8QY2LJL$zW2?_)ykh=`pPt&HFUa}A=*S*G0S*p1pv&^}^OF`S;bgCE zcPVi-8~%GOQ;PoB81z|KIDfzW)=u@$&3lU?WqRW+2YhI20S1z#`qYw=AY~} zkBIBrMIBD2%Uiz&9G#yGB`=}Nf@$YA zZ0Z+ttE$hHnGC#4WT3>TSTBktI7Ht{G=q7KP%7ePVOjtvu63MEt1pl=)VI8m($H^U zGqucfs#cW`FdhnfLEqpuk}$6ps^W#J(u;9~R1XP!i0HY7dp5sfpGo=z;o7ZR$Y7){ z>}?}bFP^TD=Iz+Te-TNSIFF{Qr>Fd*j$uGjO6L&Q&=VAb%~RaANE^)B$Ul4@QelFs zMl2PPC-RW}YcC0f$HQo4?%KjC62)d9)MoLIQ-({~QUJT`kAf z^f@9GMn|81yihKTF#`+@5uz7P3=*}d%aiusx%Kki7ThR;e};?d&OoId_nJ=JNdk;B zy-vmHmcdGL)HKO>ei#BoAbwa3?B2cflh2~K-1tPj4|<0F?t4*A;^?h_pgI?vE zLYsO0yU|(c32i<(vUXC}5+4tls7K7Rx)EwRz41{&YdFW6t z9@wOLkaK!=w&~N7-Bs*BET{wOel+(WGGNZ&k4WvDmf$|_QvNwXbJ0|xPorsL^T)L4 z?CC{GNx2TEW6@3=5))JApzX4F%0+vLR%X*$GFe_KEyy7vhi%_JGw-+78hrx9(gIb% zz4rx$Vv7L=q7w$Wh7sCSsg~`W9&MAp#5SxLRhh?OvkwX+@Mr^vQ_NLpV_U>Wo0r}& z^rn{-Kj?6fQRXJx*BKd9-L;S>VtvAvcdRdQ?uZ}8+DcsY!(WZ)LACVt$H)LjMQtuW8TqM4@ z^*hxm8=J`j+L9mv;~0Z9Hkl(w>f!rA>t{=xyr@@-f)C+2V69R11#=y4LZAh-@gk->(|alofqQ&e$)+Z<^-IC6p0+|Cx* zq0H!o%MASb-w-_XL3h8C-q!1Oa`|@;XE_ZyGaB*ZgcLzrhH~9N_j2JPnY|xIDsL$u zF-qQoO$X>FF>1pSW)cuFAk5X^r|VallFA8KsmDN%gy1M#9W7sAqPp z(MVLiaUrY?ii-M@`&vGD&D?kNt~Cc-T{TnEBXuV~e+#NB9{RKBwP7t?9#W~fznvuI zIuk;K3S(td%#Md$36MqKpk%M*L!}%X@%8YE3tys7H#9f|@QNQJ*bC`~snL05WuBd* zw+2Sj=#vHMM%&x9wJZ67V8P(1dqOM8MAq{P>#I`DU1&| zPwf+569egi>^4ubQ5-Ns94YhBN9aJSB`~O=z3lYA1b0Sq&(*LfyXNGv>|&E|#`!OV zLXxldSM~nlpN-g~PSIc)}Mu&us)sjJ_Ja2}wQ zJNozdb02qTO|hN8Do;$E9N5%gevxyIS?s%K2sL4z?w&za8kf4`~8=u|AWsGh^vl<&7oGFw45|N3dct<1#U51z_a?HK=g1RaCN z#N~FHkmvO8kz?o|!0&!|t0|wEL|(|~C1l~Dy6{M87ng|OiM& zv$%vR+TNfeuyJI zFBxhT1sP@i?=%v6W8Y6{W|w5e#aVL+s@EJ4v#m6H@n~D2?$lP|I+^j5)OC5?70hL( zq(Ij%nDOVKm>!QxO}h?X=*T~k4ErClv+sH`OsV3Tt?SZ0dH~u`iKF5;5~@I#CtrIv z^~8Zp7eQ_GScln}n{e(=6h5_$k%ZX*><^Hq(^Seay^LFFZY^9~CBrJw;|Q6w}+h|x5+H=5N=m!oQ&*m%Q!5ycj!0C9dB z$r3=35J^%w4o^`|hRZ80wYPthnG?XR30<7>k*`p9iRkkPr7ek5f)Wt~0&$`!f<_4Q zApW4+y!*X}LJI4>vZce{`373P@l1nL6_*x0P?Aq&K(6442ixCfdq3^HP2%ow<4yVaU7dohWkP; zWGn|!PAK`&2w?x+yWQ252!Aob5hMoDUPKhxpYJ+W4X?a<7mN0KNn)D3$# z__EKNhxMEg!UMtS@ptXaIaB$3!ZsuENgA;UXOva6^H7~-Am;}SFQeQjP+Xlvsy3HV zBT2lYnCG5d7w4wXClrifxtiDDWs?B{P@ra@DDh5ud;T7AY8Jzq?_78V$_ufnH4i*v={Sl$60rd2O+MFI4v7Nkb z`s0q{Th6c!QTvdk9w0r8dxmWK>AAUQF49XM4u+&*M2w$=dr%Fq;Pt7U$tg6~FZhLQ zU1b^H*c5Cwqvk41h%9a#Q*6Ugc2KqGMZc6jI!L4JOZVyGT2J zs8$d1aMkQL4miOQ3ql%5E>5B)noB4vv=3@MY$INLudygdrvAJFyX@q`1vDI}_M#ON!|p5R3CJ)@3AlAOq-s%`GY*lji+mfC*odZD zCHq#?aCV&a8((x^9!`0dqzoN7+;_&zYv*b;k54Vzs>1lY&mmklx|({G!c`BHm-T$& zq@^5SNyvSRmrWIPsi+LSBHu__lT0dg+B(iRzQv8?_c8SCYc8A+&CV4zvf6jOW-pGl zr8pV7@pE*tK6UL_lJu6NJd%h0jGk@&&y-{6JAUO*UsO$6=(bDoo7^{vjy)IVkHPB4LB;98lDdzsnyumWrod3sGfB{3Zns|LFb#%j5ZAkT#QK-`O z&3F|9&bH3kwTr4neA5md=~wH{sqSR#oCz_EO{kK6a&GF5|Ni2y{Kb$v;WXPft?}`| zjo&g2{e4y^o(88~>fq5H!>?1~$CaDlnl_n)28JGOu*&~)JXP*@}RPgYaJz?2Gu1qH&s4X!co0%hhkJGbPN$i?AN4KvkCC$ z?ae&%)wA^Ervm$K*0kMZ-DED*aD*cqj=`keoE}v=J8F3uWIY!tI7Ml95913CZ0Tms z{c*SK#g3CE6XYir^bpSZfQ2ipNWn?}tkVO2?^GDNd1G_ONwvdu-FZ8fd7$PSXuM9{(|}zu7R^@+F`B zQ8hQ}G%ne_7d8#4Tg$&K);?&2lgb77LgyMHhjL^F_cc)lmG#65Y!g4EV$EmB@3C!q zt0K*+e@N+H4X^H(dkFIC`!s*h7@GBq=j=Ys*SsjZ@#qmLT%4>SlC%^eJ6#K zZL1D;d0}wLrE>GH&}{Nh?Sr_#F4U^A4a@eu(ZuQMM&z6xbFrG6w`08IIev@}Fe88p zADu-@UL73eEQB$di=wSrRyIEc-@S=_cti4jPd(z|$SFgG4!#cnbD|tUOMXhRxr!0T zyHn$m4oA%i;C;LKOvkTrxxLI+GCzv<-X&)Yog+VgGC+)l3{@XSlD9c@|K>nV-DM`m zYkv=gzspsisp_$do1$b7HduUcvRE{2jrG5i!-~Z~P zh#?PR9olwNi1gyXGozU;IPx`=L#B<~kEw=vRk&-D`PQHYC7j%=7Nzx;xPqgVMmQv}2m5`_bGTo}T0kHXOUI zeNcrs?*5G!`RP!3`V-NY!;ki8a)nKjT3LC*=Ut_%Z(~ct$n=qkAEJ4?^({}XM0B{P z3b0Rl75h!2o6ZT5rm4A_@nBLqh07k&P?>7t34cj5H1^ACF7U{C`fi$sR`O(IWO`bv z%0}<{SAyLo{`cyuYU6tJGa53{nw|PwUKOO3G3|gw5&GPkH~(&+lqTbzp!vd`->yfE zCNbv6h8Hbz9kQBfIeBSgS6o;j%fZXepYg%GK58aDwr73pS)TyIkY| literal 26754 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

      2tl{)wH!aWKORkaIwSXIf@s6B-S@J*4obycU z&UlsN85$k;FwF>9V#E;Z(Q_?l1>C80m9oSy-zjjA-L;1~>l#VJ3Ta8n4h{H%OmD$Lw9#khg5UeR!9chlM{g>byeQH2A~h zQ_91o`eCoUjB*pFS5csu&dqiA9HLacg4gs{B|&%P?4q#Q!dSNF-DIOHySXq?=2y^O^tx|-08?_JOMs*C<3(h_Bc-G9|hotrt`S@UTm>hyQ@#fuU> z+R29Lw(H*kc=GPRV+J%zzi#>Ts8b2kqps3i54jMf{1lbo=G~rDOE`Eh#S>bh+>SIH z_~{H|S0ZR-S&K50A+-e6{bRC&nQQD$q22=rSDQZGt%CWnJOmi2h&yG&W0WQO{YI%P zEKKRWf z*s)*-0sE?X>a}Ll@L(TFDEz&+e>WfiPwj~oT3>B`J-HY3uLr^hh45a&I|_DAynxhY z^r(jo_~RH7h%`Ei_}vGsN7{gp7)6;Mp$8-~SCIr(Zj%Yt(UgG^TbPwcHkT;#*8vH* z?#r2~*lB3atT%8fZ$s!x;_LX)XQozyHNuXL1hW}$JSOBW>&1tEbuzj>pLYqPeOH?+ zv4Ez_+TddkRzIR>KK|SNUBu7E^cZ@@Lkf}&fTQv1RCs+l$kOpBB@*Lr^3dt`+y^iKz|xYBo25Kxc_ zQJbrjdOtf>KOX08VBOUkZ`7nE$a5ayXIlr;7dk@>EtpEP@{bG5LnD%7U!`$#4FbBO zb4#FUsHk}I_9#Rl_$I3TuWRCKkko(`O0$CO5>f9 zHzp-gi`T^;$Y5F)0SFp%Mh^)7%aG{JGndlPRb3{N`Xd&NTmj_+5)Jy;fkUFrJzLS2 z{Abgp*tzj&gdJZ+{+IjDfZKN@VPfcQYsz5AV{Wd+T%(+M3*O1!MTt>^WG(l&6MXZw z54?r$%<;rhUwg>C5)@Qfk$n)l6u9kG;x*2riqTdFNCwyMXJc92890}#kZVs}9DJUt zkDJu*J?=uEmnCcECg#P!pT%1({cI0Fo42%>>kEkq2d!-j&04-UgAeFJnqb~J@gIC8 zr9Of4`Nd9$QruzT7-KLJjB9ZNEc^Cy^d*BdmnrYvr=un5?^SLKD4Pmg5UT<%Y~7+C zP{<+#U;PeB3VM#dV{kA?Ln^iR(sHxZXVyFHYOA%Fs?H(UP^(er4om*MOW77xRZ82^ z@WDE~!Rx!U!^z@<%_66OJ1k>xLauOuv~5;kVeq6+_9tM$e+&kr_y)>fFLLFWV53aT z1zO1vM{b;U{c6NKQ&r`;0AHB?=h2ms>FdE+_;Gk+m^PRH0)R)8;z2fEjS(_qq32+Q&$+JFsBpa!!!b&g^SsvkQcVkJJ{$)_>MoEN7$C_6tVI zY{!6uDrk2$MXRQ?=r8L){_yv+=DYD1SI0J!rUawDmHmK~#tau0@-*CC0eta`8X^2z zkG7Sb(Csx|=r}|~BDJ{?AHt|sQR#PmUzlxod>_0!&5>J<83;R8!kj7v;aYN8Ug5H2 znt3YMb(cT$$!@K1cV|Z@*lX;~9!~t2pT3a)^?;5;3-X6Lh8ZYlQ_-oI=53?&Ch<_> zE_vA(e}&}RIY{SN`ES@U*+TGVoSIJ7{u=#ep|_CrF|@6?gkOx#4GYob?lau!D`&Gv z?yu>k=WE}B%p!wZjlguRSW>ou3~4o4AKjf)B;MtRovqeEq&gA$C8w5xzYHth8;dC^ zp_@5}upK(cP%C<4<%N*ymh``cUOlL;Dlc&mRMRb&WrlQg5C|bnj`AH{T%VQ743Xchm+o8H2xHD)o>Izf~$D# zqgXwmMmU?KIBS0|hv`EDhwI@7y)^-pXe%!U)0ZSM0PkA@D6g%eSlcHmlfq;1dzB@- z3va)6kIG#suisu?I0Qs@f9&n4OBlFl@z<-76<3;x8pl_?^5>idc_uN!sO-0oH}?NX zsvPoAOdls5LfYV;055lEdU!X$T?Q9;t?R8Iir-H!$G?W!L3hrp5a9Y5SKNR zFGot6LsyP+?GD657b7)Qs^JjfE+HFSpKOrw*h=@f*uT$SzDO=!2eYo-71`=~*l+$g z+;;9^Sx^}P!tH`3F<4O&YiBK^mX0D1sKZbGPK4_1$;dn@n8|;7x+<2+Ly<2^)GY!u zCal-gTm51>39cFw!jga2m49`!tXZ=Qu96eal2(40*M0%zZX8i4Zf}cs($~UN9gB;m z!>7%#7R5Zr{7GeO!Nng}fuN(RJcKN3F69a5Cv8gtWX*Da9B z|7_YoxWF@~Bhr+P3*-V?wih-yzh_XjrnCBaD0|dAJAc8d?7W|#e5bfdNe0dSSwRV- ztLy!7X;{*sbo~$Vzd_I3(N5Ba`7}Z&~Wgp0g3G z2g$t)F*Z0l)6PSL=RuKWqYpI?X92&!o74PLa(E53D{ zfu2*36>ba{QuE4=;^&g)LWG*xfVYyueHSo+FFw_v=SBR=)T)JD<0`vgo`!OyfcA5; z_hhk}KiCKWw7&94){;8NTEJ{hgueB?H)dL&YL#RA3+BBnJhpv^tM~=Xks-}SchrbL zo87M$SG^}tUy|&s{40WR?$SpLIZ%?{XCflGYow5vs@ID~g!V-tM|=g9W4KMPH7KGw z>qfXHE!)K9q7VR5A0V6Wued>8;iy{9OA1+@?k=Qp&iD|09#irHbJg>=m8Wo(g37)+ z)?V+6+U4^ZT`a~p>Tex*pa(A7!&~J7((!lr-j2%WONpX5x%;3lq@wgkOcbMtZ$cIE z0w2F8#&}q}uLR$s6J5B>Z7OeA(6P=!O*$_@35~#uQIIb6TGq?oNU@>suK*g0fm1&h z`3_y_VatEeEbViCcsMQEcZoq)P&r8ccEObTofJ5gEbKiLbZ|~UuS*O)P+M0cC^30K z?e{Fc;s_#B&DSZPe^C_G?5(5v&_B+#wdmrwa@9hxAFcCkK5P;Cz;Jm& z#iu0iFG+N!hmQj@o{Maxg4q=f3!cKMB&eosPwSmESmnp#c@+0#%*++>gF74hY44FS zRV?|-9=TCVqn40e7)`Pu>xV>yMg!NST@2vNj&VnH`q-s z%Z)9C3O^CM; zch6vz2>V?xRp__#N~~isq`yV*Hn{R5|BV^r-FMUha`i)5KS^|jlK$?D}5Js zI7d4lwaKH-Yxi9&)UaGUqOFd>6+S;cy!Jx!b;IflSi$J)hQD(=7iIi&E3gDooJGb_ zBb1H6D~5;t8k5ie*wbX1R0MYoSQk5ROf}a8fKHktMW*tq$n9)dYwuJgq7xSY_$eed zLT!qW%xO%El7+8&{oyTF8$8T8sj5x!@iEdf)%-fH@~Vp(ROZ^rR-RS%`nYluQdGpP zLd3QM9PT7K_0enhNvMa0lFHPPmS@jan zq*q>NGuHu*Qa}>g?1qu7Tdt|)_5&+cbVfh9m#FrBHy@wq1IU*C@c`(kKPeJY$Xci>7>4y_p1P-g4vnwLfV2n~;?|+XA+!FiX`Pu?{U7?)olHR)C{WpC$h>esVXy;b=8D z!fATL?-iU{I`s?mp`;1J^;{eiXvjO@5w<5CF;QH-;*x4^12zidiUMw98?REOm?HSW z9a21C6&f`zt?|h^3XmfiwfR8Jk zEezGM-m96-hQDHEY<4IfFpl6K#bQ3JEj_Uvkaw@yLl;_d8Aa?I+BlIZk@ ztCAl4J{(;cr~NAV@piNdF2pAVKcU9WoXSlm2@b*)1>Ll}chQwI)t8BG)uJh5@k(Z3 zH{d`?ldy74@_^U*(R+2Z{0F%>gzC{DpSFw5Nhw#JLy#lXmgE;A6(K4<>FIE4dP{}) z+{9S851_OmQxidDAX(BALfC#YQfXdP)9{*iLNU`4e%=8StKG*DulhW+qkEhzDqBK^ zc`9MJXKRk<6}+tla#U_gX&4sFeS(8m;s8eoIj-0~yShw7w88raM|I=Li9wADw(P*# z+_vMSNd?ui9X-l4jkZ;hv?nF_eiwpFrR=*|n5Q-?YL&A_yqyimG_Dgz16F$=D{}Xb z7vk!EZwE3=8hG*GKho~I;VT2W8*V%nOkm+i;qEJ3^v!Oo;qMFL8_xn(zkg)-x^8;N zS|R!VxS~&#IT&z7$IV&9hJSvU5jG%;cE9g=F2b~oN?yrWWeTabrgf=Ty@BYV>NFW!t^2Smp3gHsb zthf*Tv&Yl7iY5KBe!{*gwB$eMT^lc8P+Y#Hu})1cnfSf$Hu=3K0ntp#JpM;K-js{j zn0y!^?we}n34Pj!6EA7otZTb887g>9D8j6)h9+^sA~E4S1>6pHSJl z6Kv4mm(wPO-9KyZ#minFvaVPOd< zsq_=fGs(`)K!h(IU&luI_veP%kFgfnP!&^gjJbZkmegVW{CPx+Y-!EGPa9kiU=~=+ zfY0vyQRj?`^5%nX2gp!go{3j8DX*-Vq{<3CFlE40f<>`lx8a|EgCthG<0=7Xlsf|~ z``P_65H9zaEERnflvr8bu?3@J;nU^UVZkEk_vjtKSu}-rM^88Y)(KFfu)W?vp;Nh& zAMxJ&jZq2$>>Q>Cx%wqZx%$WTNVOM!FSMv*??=w_$dK+d{lN#=vg=(4_>XjGQ_K0W zD7N?S(9bVl8LBBumw?j=MA?>g1pTXqo)5p%U$`iN{+&?&GkBp@3xB8UJi;}tobh!Z zB3)2S81P2}xcdTgjBl?N)nAS7ck1gg)KoGB7imGR-fjEON(7}yCr;^*mUVC{kjllb zwaDiuSBD?01Z!qI`kvTI5?akkgy}<&y4wO{`9|D$n5T^VZR?MOn1(!K)rYGxk!`fK zCl|uaM+Jv^jKJtLcou0>xmr|3%Br`CmWP~^q6N;q0*!QE%pWwmVfokg2Bt%$usdiq z)MZs`AGiu`1%20tT#a3B>XT@Lzi?wkb*R4C!mtsH**OVq1)jU4#GspytJzaceGBpk zFuL`xA}Njm_4k#Qag8ugRtP*Fjc}2b4_gfPy-W%}i;w}k1yHo8G5Z#yX$f^@a%F~x z7bJ*j8aLCNUriCTsO-3w2gbuc$@Pj0k@sXsPoX_Ep>;WvSlFQ~zXXqxU+K)oS~$w_ zUq$5SDYK0TC}|wvSwvwRme-}eprwE6f9txB+013)BZhtnP`R*B_x7oK>T@Sku|vlW zDjVlp?!L^IkbC|AK0XNzumGdsJH?&>-us9!JhDW??>TN-QTBt^Gt^2j?iV28u%kK^ z#`>FJ^eect+Yxaxqkr~H&g;r68qGk;MM2``Y2Wr)?+#JkiTb)Lm`a_K1f|i7*e3JR zM6IFX>?^?n`9Bt{Kwb^mcR@uIO&?!F)_cglQ9DK$p!MY5{of>Kn9COQ3$ zVS*&4Qc{#T4;j2|c0X+hZlHVboCh`({Y!AEiSwgawG|nDfTR4oY&p4IZ4jc`KQdAYlr(f#4&% zE&qg}dCBjcOj$6MNKxjIRE$Yn2I3PKTRb6;5($<-!fE38$eM3;+;=@oEBEoEzuGm+ zg4H~MSNtCmJtgpwXz7Pe5mAFno+XSNDPyBR($(}gkk36YXdP8C1bY`+>RPM%3ovpb zoPPWMfICwRhml?VC35*kNr`mFCn(U7I#r z_(MwE)`rl1T&O}0H|vQ!Z1~{Vxyfkocz`E<^ES&fE$SuQDH-&;cw^-%rFO@BW+Fxo zqedAbfBRS=`kzgvwk{Nk*Zo(QbvK#xh(^5Mbj&}1j5p!M#6LcGc(@2S7Sy#Yw*Q2d zI-FP2tJBY9(3@P2v`H$glAQ&zpjElrAI$!*^pv1xr1+4(j0SuSkM;&tywH5auGpd$ z;N&XdP9+Tx1y5?K%UY^-{;~QZGUBfy?%Rb2{0O>blOPG?OUf$uVEnt^t9X*_%mlq2 zl_nu?Fyy-y6+OtFMy)K+TN z&Gtg~jAtS?gC7o+0iUJAwP@A8tx`OsJlan=N&Dj-aW6Da zns2u;c;z|Vnb}}s*!kuGE}x(v^ZDKOzeAO@hDY0*_PUZh7Bgq`$AF1>wExU}--axX**;{ZcPC&-U%HM$b z9a8Thr(XfY91cNRb{lvjRZ%`GF*f#s>_B#A$q{9~!zMDg@_}566vaAw+BkcW!Uh&d zPUkJg(qMoHc$#M8@zs#rFc(H%0E@f4@Y&*)z9Qesf|9vcKO<=Md1RaprURl=ngZk1@e$1 z@$Ur*xAf|Bp%QgXeWlm&A)R}Kdd~NZqS!Dq7St;1*xyWB$#_$D!L7>tz*QUPdOL0G zW7qR4<^~X4HdUP5))JbwNXiRpl|2xxisPZIdI613`z0Hzv%JF4Zi_|00erMO@3t{) zk~!w92f)I84Hwt<6RCA9@j?%sZMJ_!NzwMwS0(5Z%q&C&odcxlSz9ls7nbzUVd~u zMXAwR5Qq@{Z~YM`pWarK4fCzO{YJwuZ6U3Cdd?@eqJ=S39DhNf9fXpoo0A(vL?Ltn zn>|*|#NF%O+kD?trw&oy-514HquCR))JcSUl<8agy-lXmy)eQ}4%bol{)9=n+o-3>v=1 zh1G6rH$%2J>k(YuIKVHIy;3G#pJ*&qY~}BDq?#SCTU1>o7r0N$BCWvK`if-p}A!sTgV3<*v~dyP>gM z-`rykio^AGW<&sIVkD6L&Gxbwr3!}3xM}~!4E#WB%@hxarWEr{>SiPP_xp4X9G-Vm?DXut@+c@~i&@GyPz?*9GGSYz+< z)z3vgy8~6Ed|PE*ZpoSimnummm$NQRXQ!bN;8TKlM<8qQp53-L=xXv1HCtW1OF?yE z%$nq6TH8v^ldNS7_Gy*%#iFM{z$O3#zB*$o#Upe{*`$8mT%wG?xQ!YQU7z-9*iu;w zUz&4&96`f9+25`ePAq3snFKKd9V9Job;R-aW1xI!GP2{YR4${vN;qd|KcWqkD}~B7 zt7|fKnW6&}Gs1$?F7S~`u06QB0m)X)-|a}O6JBzPS8f^4BgcoNQG!DQf;$XGsCreo z;&edcMtgF2%XS`d9C=U`{LuYv-UyKtC@H{2QV@S)T<2<0c%uGk6REVn zHv$STUL5k*nB7PjS+;o=&xJ5l*!~=uBxew@@LA2Tij%XZb!eIDb37!E$_9W7=!-Ct zOMS)wIg!yVp3g)y+#u(=vAO;lD05tJRj0M6%8t88dw(x1yfB?nt06J$o75Z2Nau2BlVZTgy_ zdWWYyuHRjQrmZ#qZaw_B7>SoJu2p zQ|)L%PsL%^IB5;9OL;n=yMS7&|R-v92i5(L{r?E$Ao-6l8k;t!0ZeTo+GBtD|Mxs~lAE zu2)U&1I-|Y$OH-h^4BBWT+4BYKIFGbFsfC#D(KR{=V*p2i&xKwRz8h_i?+AII;&G7 zmOoNV>Yb%>mZ?Ga`)1=*LuhYhmQ&%=g#mo|m`dI^`Gg*IcV{WtQmf7_pY)Um1+KvA zUCtt+<=u+VozJZQ7}xH4D;gzBtWsfyRDK4?wKF(v+x*x81y$&NB67U{QwMfMpPQ8U z^O`o-+g|oqw=2I)a687-=x>#F9pzMeJG+J$AA|B1Mm;h7nW=9-a?B--!ZJns3rh!j zRz0p;dC}+qrk8M)5e$NO-cNAZwa1WdA4fNvC z;{v(89`@nol-l#@Ktd_MVY&umEp;;&P_NXe_?L zRHufGE*N;NnRnB?Zy|LffQT7t;N3dO z3EEObOjij{Zfb-^1{No>5kRkQLe6QeX4xFNkW3A{bE(GVUV@G#+FT{^D?o-6dLZG? zu;VOvAIl!;Xu|a=DV(h@@8d|?FHl?kDUb~qziYma1u4r_j%KspJeNY-jZ4x|!JKM5 z_YyMQ^U$;kqvVzlWDh2WCIMD(;8+u1|7<5vI%o8g`dN2Y&cs@q*I6o3bdF4h_?Oox z^Y`X1p!T#nKY4JRU`7iu$P|My@8C+W5T^_3cpzv~1>9TESRc@V3%`SVfYEB`O37!YU^}9bCnxM%(A-tA7r-y(6}02I@Wf2rPb#oq}XI-nc!FX zeYPtkWdt;$f@?9Kn}#;GPFO#|q6cmR&dFZH@sUVeI2g3(S`!ax1`@?L0RJ61Ro=*D zvsP7DMYkM<;6kM7Q0CSe%0eV_Y#v}&M*9!`o^f=y9dAqdeAp9h)M8sXa|_49?D*Oc z53fpg!i&Q|F{P4Nf6tK&rBcNXEZ*49@;Um$T8@1mvUtN1n1HQFjJFZ(VP#kD5Cj|rPUPUn_ zk%K0HJl;T%hKeS&BR6$;XBq8vz;t(BAh^WcM4HuyZlbJ!jhrDs^sT)E`hG%CV}I~} z&qU@4>-I5C9=9#XJ=q$561o@sz|dm2_P;S6(A`j&#%H0q=FL|{C!O$+D41CqE zmqQW(G*bZ{6Nof&?1X1Q@pNa=tV@mnF~BOa%vhKswL@Q$XrD}cj`s-t4#z(aChx$d z3yKIpWKxm{f>UCDlOwpkXtGlx{>&`?GTE_!k^~?@ee|DR&zu9ftcc>Z&ID`i@=a|w zd|oBZpY|yf6*v08nUVEoaN?sjm@d(Y(}FVo<(O?s?u*Is&)lYar04t^ z8Hf{#4FZWKqR#BFH#+(6*IBLIv4(xy;PH5|#9JV4${w7>fd%|xJwj_&4;(hNRT92l za?pilGypYTrX`RrAWne{EBC}e#rEMrZY!))ixHMy44@CxFbL*s@zLg=K@|~)!-MuI zzUINTD|YaRf6)!EcVj_~QOjWbyN^grUJnM%o?h`bbBM$U|FL0~`)W{mz z`wRMrfgE=X@fx=U=|JqbP1J?c=u@D7-~7coew+baD5a?*roNFOz!>RTCjh!F%OIvoQ)ek9&H`3*!!6kk|P2XYYxTJJ$^Tma=cJuF1p2T&>S1f6sn0rQ@U z{x@&+=E=O(dE92xPJ{oxbZ)~LkWhD-D71DuC{5epuxiqNQJ4;tta=YZ^bE;cA#v6p zvtv$yPT{y!1H?XhgKjSQ;R06$C?68zaG=PxDN(3CuqSm<=qXk-s1YlsYwFutWan|P zSaL|VrUwZG7Z;0^99~S>-ke38naTx!W}Aw@tgq*4uB?oc_ZdM#KKM-$-^_no?h!fZ z+JDc0JcOk2M^oK|hR>VIs?4A>daYN7;uSzdagSIrs`87qLNNHqILS70_6?d5`(_*3q9P8h+f}mSEHi?!TnnT p09jp8U4<}%93%gK{Iljrvt{OpUbl7%_)`c3Lg*N47i&2_`#;@EMHB!4 diff --git a/doc/_static/cylinder.png b/doc/_static/cylinder.png index 3af88d8bad3b9c9a5f5bc898137a7aa6bf6db563..96eac5c43d9eb90efe0f8c2553c55b583128fa60 100644 GIT binary patch literal 74156 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%0AeKX^}nyTM6bt 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 literal 0 HcmV?d00001 diff --git a/doc/_static/db_cylgrid.PNG b/doc/_static/db_cylgrid.PNG deleted file mode 100644 index 3b765be71408811070b443b0c7c219a142f95539..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5394 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 GqW%YDgy{wV diff --git a/doc/_static/db_sph_grid.PNG b/doc/_static/db_sph_grid.PNG deleted file mode 100644 index f903f8e607b4173cb09ae032759f78764de1fb95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9958 zcmdUV^;;Be`!^x5bSd54A=2HkgmlN!-QBTD3IZZXDkz9cNjJE3mvpCeEuG)>zMn^* zKjD3Unw_2Fn3-$lJU?|#>`Qe;Yz#6C1Ox^tQ|!QZp4dsNNh2V9Pr|$dp}_ZPtdz9W5D)^H5D>z_2naXuzrwc>5PWzL5OysP z5JWN%5QyEg8#Toc5SXl$<)n4|%?@(V4D=M|E@3WZ!M99Vg0@vhOj#NAx1{_;a$|CD zTDr?vW;Cs^Ycn!tUJ`a?viNea5Iy}KPQwTo7gaiHxm=Q#zr5X3HZa>=ZFk4G^cw0q zKNj=aT7cy(H`wJ0^Icv`%G>CckHtT=C}?kTdz^NnNg!ZtSBeOGyj_+fF}1*YMgt{@ z8|Y>4g&5E!0IVS4pV7VCeJ9#1+}F+wHOF58UzbrWaf&3|t$6~;jWszo)B`8CZKd4( z<9*}Oq#MEFo}S`C50;_QKQNQc9CmhoVPlytv}8JDHRo5NP1V|snBw(yrx#%Zu#l`D zq(PRvKkov*0B62HrePTI-|{5N30QS?B;(_NjSikgq$pLe_*I)c@i5x=$wF?1n}iy9 zJ+&8!at3=hx9Q+#Pjw}Vi@y>vr|C+(iBsE`4ga<<6D%S@;gC@Vz zk4;r!&pl?^Z!l0;YwnWEKxlRc00uZ&ILZSt%;{7j-C`2dR@OUme}04z^eAN$8#M&o zYI4sua-I4?Pcc8y1jn)z*O#!-G3642MsnjVY5m5b<0^jKbS3A4g=RMucQPyh_<7ja zN)uwXfCdnbL3WNe7&x#7uaSpie3+YHR++I~i&Od@N|c3Sdi77$>^j{q&))0Q2VJM& z60UW4o??FFhhGG}l{T9iG&$mUWt@>?e7t>OIv>)QgiD<`HUX6IVmiOO?yR!w(8zY5 zEpqZ%)3LTtlGY@BM8b?4Sd8I8l;ypu$Zkdgym2ye_dNBP39-4Ji|=S{5W))cGd0}Z zwi>Cbj!cQG_$nmPVtqbAmTP0XxiOz7v>9;xaxmF^&F@h4Zl~y7N3{0&nN|`dP{N-_ zQ-gaWBlrFR8J}v&eOYW^kekg5c1BCh)ERAK)tFyR&=S64y&n2lzy1x#idkmO*}lB4 z4k=ks4S0{bj7LN|5MA-Dh(EZ0aF{*NfBpS@1oD`1UALnX^X_(dX^GRc=g^?1s_OVi zw(>#^J7~J>BQn~)dLA||K-#Xq$iSK&YV?L!a6C-j0L942z0$X-{8z=P^;)O7wxr|- zA?Xp1S7{K|k?|GsE5h!gL8V6vQPV{p%ABvy*tImWS^TefMi#`59`0ondk7@kEOC>( zL+)pWvaGzlO)mFOTJ7GyPZ=(nS%7NkpMs!)eH>Wl!2YrEQkD8bFHDtVVnxHo49f3@ zp+eqgBdhng(TO5^-v@=SxJJfb%Gg_DQB&((Z;<9a4>`=dj;QF0Ul(v;^LGELu2!m| z%zAOgfs0!{JlJ^~?Bpa=+p7yfs&zdV@)D3>$kzBSjKWwSrqW^!StJQ20dz=VaV~y) zNOIxj2Wit#~&U)5CH_x>iB9l{(CFaq(I&Znrh$;z;x zAZoEyiz&3tsJ-a$*^{LfK4m4U={^WJ1mzJ=Pb6pp@^!q&V%olHreUN&By@wt5zMLu0wH~!F%Ch+53)l zj9qUdGgI%&7jbs3(3CuL{AXzn_9S%yURP^f5fepd_B>2J)m!F_l(418>RZL6PeHAL|5G(NOcFP1nZEhU4IyGaxD1uL5Gy z!2JvCbBFIzT(Y+6((VQfd1eHHR9EkIf`7F8^(3|{r^?t3_1F7<-#A$xUs*viHcmJJ zc0l8TgHw{Iu%||kvxLU%&K;Q-?~|88gX4yJhy8qE48MCRf=7s;+8f5o$=Ac*d66=& zHxYv@aoxSdsLuiODYJ7h9sU`dwnb{o(MVEv_3qcS0Alx!VE`vluZ`3I$}5Fq`hE1g z=TXh~p|?9l?L%3}3UA`3rqm~DoTwY$@<2(+_YC2ebJ6Ap7x=8`)5YGQ ztb4nWi|L(Bocw2@W;kHV(l$*H{EAP+aqY3gAE+y`A1UL*HTq+DZCe2#l3qH-CYj89?TOa zQfssZ3rm|z1|BWNv;?*I9<|=C>-jm&cW!v++CbG$L8ZPH6ri2i22$bcmla*_GLwz%c9FhSkuyzzsBrm{SL-g8Y0 z6U%Rp>mRdvG!`Eof<|Pc^SR7a`2|P3Jyj|z01e)KfzyZVB2CVN97wXzbpkD|iK+mi zz3nx1c*D~MDH}`;xFTUsSgI(Gs4J-_#cCwRBzCOyO-qgr^eoQ{wqJU@lzM4k@9%A` zDkcO}8Il_&03kZ`~Fsx^{WpJHIoGkD)syK z=aqGlk(P{)A74sHl+-t?aA10v3E4W|7MN8|y6!WA%28!szAQNtdP@zm(X}*;fmsG$ z_r?MUtGoI6`G{K(o<3#2KB3v)M?vm@4=0Q7snNa_pKs3& zjBn9OWQ(|T=RKSig|gkF;Xa75mjigMtKV}*i{6#^<(&{RtrcgpU`IoWvCS&IXSaE+ zynT;;v=QJZ4z3i3<3W#Ua=eJShsH*o{c+46SFSOMXXk`H6A!NXCV=lb(NqCfOJ9J* z+AuW#!HHKu{nsJajL(0(k#H|z>D4Us>295vAL>q+Wc+2 zv1j%gP^ocbr}?(#dx2)+^p!p)^~{8k6N7hUdBKr$`9&}o?%`aGlQx2T_9tVUB$(PQEK7Si#Fz;A-%Yk|se#aZ*^!vg;%Ve;!! z?+hecBE6kie+1q2wtjMEEaU)sE5axGj=L2r$6u-I4h$eIRGL)DXl)n=IVLAqBIb`Y z-oAm%>WEJn#8eUTUdWS(v`Ri+kN8)U_`P?SuyellAeTX27Z=ga>xuB+P?d#(O_jZ$ zilX3|^$$V`To$)k$(XTnG7BJzFo9Q!T?cdbgbIh-GpJZP#;~Erie8fJ&Y=mv+8c_5 zsj(sK2g}|*zF(PiSex8N`6$Z*_M;XVXe)YUW>E!i-LGmXn^MLrV|aY6tF8K`T^Hgs z)ZOf$b7K;0Du)<&pcft^dWduhrLCTqQZ99Q0D9;Qn-uu_WZi*;)FC6@pZ4lsM6Ov3 z{l^_3;CJgS*WMyDq)UPELC$dVFtf|!@!{4am4T5l zR&iFbim9yz0KwL&;qqJFLiLaO@u>D?fLXjKZR{}Q{45Du~iFE4M$ zYwQj;Wgj0OtUJas?hnj-(62wNixBXcnwU~Q{E*8SBvbX>A^=r7J^w(e3hpcUVQt6t zpMxn(3C8P=7XB!D?g^UFjFpuT2%0{Dy3YvkzcGENlWEBO|v{p;cvOEL94AkuP-+19;iUKw-|76BDD^ zZvOY(8^sg(>#0Ty+{&6L8?VysZyBAGPcJaDg@KeBpx2U4GxJ(Hh_fd@M=f|mW(GFR z8(yVjm1}$ud84s_5ywWOxYEhQQNG<@L#|ykw4yPCMjhOat_EKSVsf_To86urY zel1%t=(C0g`v%H~UNC>yQO=rPFJ_@aX&Nc$pZksg>^XBTjh!<>MT|~{eI@8hs%rcd zr_%v@_Fba$*D)2tQ)`r_=E{V>9}yWOzic+eY+c2JeJ*4&xQCc!$LB`uQbtptft_Z{ zjK0B1@dBm^r_d(jw;JRuqPTy%wDO)XZ|+}8?PN&E$MC+plex{+9It|#?(lpJz;g0H zQBa}yGG$17^p9(Xkm(qJ)hPVR4ER%HaelS1ScMr`v|pM9JzvlCH?=Mg^B!R4kBt`Y zAJ+6(u%yQT5TKTv_rj&5a}Gq9o3HL;0JMTN{r6g>PtbuX10ue68#5m3(0of)*H_Kk zt5&7GV4GjW@A9mCBfF=W}W+3O6k1s6ehVI(70t5gX=j)SLs_6gBpc61p_6yv#p~rgK9Z;anZKo z+3BqU(ExvcEJ~5;!a@bJI6na=dHTVbjl=oJ`{l)l>ybJ1c=(!f#Y&g&+?3(EL{v(i zUUkNl-uvCZZKJKJsj07z=3c4YTt&*k2Nf}fv3zWm%RnO29M`3RGAxQ=@FW7XrRY@} zG2}8nXDK3f(6;IGv61>FAZ?N5X`q_4C zi#Yuj?bS|R8yGirqKezB6$2wFN62TpckDhoaYgpYx|~iYM4=nbwbYZM4i^5;6g90_ zj1g(U()hSXJ-c38p?Au4hE9$EYYW%58=*JgX#|1`T$K#0og-gw zHJ8r&2z{2J&tLXmf1Fa-+@IG#LC-But&6CHEH^%j(W~{v-jwR`Q+R~#3w!P16Q#aw z_B@~CcWPU0ehR?ENeVo23zG#rDDa~coEilvPI+Pg3?pXl*c|zvV-*k`}FL7}{F>WFJ901+W4XCU|hAVJ;qqKiXUbJ0V>F(*@ zw@u*3LuojKR{rnJ<TcPe^DO2D zw<7?ln2mB7CPpe{zHzc7ROP|DgAH7!jc5A0@?>|{#B+Os{wjK~V6|pE@XY*(TqZo!$qi$+!~WXyNA*G?|m+S)89cNKbWhb~j#Amr%i7#kbw>41td&&mlc9LnfB0l!3U z+s)a(Iq9+LepB9b(Dc4`3w^%QX5ck8xu=)cvjtDj;!GVte5}S&*zs|<+HwRfIIPmk z{W`c8&&l|<%Lo{@1Q{qwFVVd_+nHGJeiNURR8;(&^(6~B^f(G%_SR#a+5biiRW+l; zyuuxy4ou4wS5)4%8y>O19o|^XN?ll9E@{~bI7=DHlT43nwT`j}^JkRKY_C&4c}<|r zmqZ~h;Z-XlM*1)`$Xf5-=l*k>H|FgO9q89^4!MXo%PJ#lNf&L&LER1cO~wBHe%r%& z`C_AwwyrKEk3~DNd9ZXF(Li-W%QNc91iT z2IaT03~Km1+PyaSKT@~s@hx=ruhjjrBHvj955dQrU%mUqDm1?#VjRIrdbVjZVA5cC|J`gF=_F8L_9>p$xRn^xk;F?8>y)$1RLo@V#KJD#g2y(Jt_G-2m?t1Mmio-P?T--`AAnqgXOqWyFMi>|w>FMdI zygV7UO#uUfcFIz;a48;aN-u8C_JiA_)tm)zsj**b%aX(sT>>qm7--ggSLbGD5i37` z{yaRDO;A!^4Ulbf@SJvrepX&#WugsOwJddAe6X?bFVzid{Zv_8yi;OWH9j%H_|@Nz zPdO00$d`3BsV{|L?7rH5bD`_t-Plk(8z=0w<$W+$qhD?&EiKK@&!1B&%xGZlfKQbE z&iA;teA(V@C0}1Gc;j>ac$+R*+A`c{qc>STp2)`5_P;kT+niJNiz|VGKQms7HiPE{ zNJRxBUzCx7!Mk?rokfT|Q%Uk{oc?zK6uj34>Rnx33rf@{nzkdkYU@0#2+T|%mxjD$ zcZ$~$)5ohF_|-^J6+06}(O|Gx(1j`nfuAS&J6Qu}H>EzkJV2`R1WP9mohmIh>#QRl zD8+^B6^R0v^)oG_F*Ye-w|GWrb2CL9{SN$MeW+C1go!hL0WsUi~h7cZ5UlnhK`{_#}fjDxJJA2g4> zRJ8OETy(D5@&czuN0gI!NQPF=J8Hr?_3v4g^$@F*t)Nwr<6F%i8PM5FBX{1OUqj?e ze;2%f$D;yplRd3MBIE}A>XowI{jdcI{uHT^;h+c{9&^c;SI`T|n;&P837(P(``$fC zd-!GoCxbjVWZrq|9EJ6iu1o^qgA2kk{a-|HcbI1c+gH|$$k77M zb0);}Pe|)SCqDZfEk%67$6nL>c?p^^+*n&9prC+{C-MkD`BAz~;S9kf+tO_g*1_X>J1s+ z#mcIARt((UDo5vUaU{p#{slh|G5Kx=drs5VyS+3uaqr?)p#%uyHBYezGdeV7qN+m1 zZ{Z3(S0X7wUq%I0;c~rOO=)P*WmlaIpNT&uvr_Q|lx$GX`RoLD%^%9$U$+zp+3TU6 zRyV+cn{%_pSaKv4?@U^lzjA5auA(qOvrnTeDN84a>r{RkYH(FW4Bp?<*vy>hqD{ zlo)O@UGK?9T&-^2&weI6ztO1PcEIPT6Y2f*?V3o)&R5y@)uxDasw?kQ=D!><{ExHu zB~YAH<^PLkebIkIwG><@eh@AG7{L8tWnW<~8Htn4eR8|-!z&xIS}p;id^A5fbEmWT z(O!~$bwVQQti)X%j0{7A)$fOD5i<-R&J-Z265?;+`ahOQ`=|8F6yyQtS)eD%SOe%hJVoei*Pva%8wifn#{CH)Gc8wGsE4qG-({$n=TG}d zL}a}(qlqdzjp68P)F&eu!jP~q-O?`uI=X1?5?DY*960`7#UzK^Tyzw}l`eGg05>Ud zzWO>yjy<?u=CxrIm(w23~wJPYj(ah~9L= z9UCt?=MLr%zyQF`PQqZNb*@XT(P?s$uJfOS!w~gB!A{Pe#MEoz`2{0dd4%cjUSAS2 zt4)b|h%nOs`nuF-)*`VEFs?UnI(mrWMQ0_(!a~E*SqI3z96^pwl#}aOZz-s{ZN$z> za9i%UMUD*%$u3f8;QooqUeX zj_%jrGUsT@(idQ`R=5mo4D|OhHjr1MW|Iz6Gn7=Q9Ob_RDf86P2SSdR{ z^Pl!E*Agdu4Ezf(r)^VdnW=x;TfaCrHmv2T49V2f96=uIMw8UARl8x+_6wp1cpjIn zLNhpv?Qa@tZ+FzUZ{uQR1#&RehGlE8v9gMmhAmAkY0hpRm*fxt_!@oYhnHHbtE;g! zf?QTd>#v@80r%iDX`3_+Bh@d@CTCu_AFeUx!cXcfN5ah^3}wp`_myfzQ^HyuRjr$eRq|z8%AvoZ65g9MvC7dv9Yh%BaJ#lVQ)lJ~6T{+Y;N5 ztB;E{SHr|W2LerDCc}6;W9ZYcHOaP)( z$w)VEhspz~=Gw9uq3VZLJsKct#tJWQ4>Se;)Es^9?cQ>LS0olmPXf8*YFV*xMMs-{ z*&;%wgJFXhd=`@$A3yL-7qWkFFdxB#35iTO{h2@^f&K|MrXrCZtMg-g!0ka@!wSC1 zlej+Z!XHQ`dlQ8tJT(=neZ5p7&Lo1GAKtyczS%3E9!j|D9c6=hdwU0-ZI87C`B_<6 z)mLB83_dUVNP-_^q>9gblKeeZ&Y%Y$mH5>a3Ia>f$InYNlpc)gIl}NH$Wj!|?r#5A zHW8gj%Sku+>~+`q^SU@58u+IbUMn@0T^RcM)3t=%Vd{AU%3vP~kPsm>inen4MBA<% zkAR5*pC^($6eU_dnNU97C%3_ z3ZbJi07m?9-g3FCF6$n#^Y#O#eguyyAQ75ck*{BFH7KlHt#${y29=I+%g|dTB)HWH+z4(S zfiY;djRG$QqMNG|d59{sKjgfOUNgd;8L_`(cFz^ z-u(V+eYfA;d-q< z151NZr)LiGT2835{QnNQ-`3*)U377fviSf04Jg?}w*dg&ZYaQ{KDo^wEb2t$>Lk*g z*G?}jv$rDpbDq{MnRF1kdmO4KrwUi z(R$PLv%0CNX}5%HiTy$CiN@2t0a{+X+JxLhD~2LV9)K?@LCs3;3pH!rq|&I6x?*8U zmSai08n4v4CQF{Ve{ZFl;t(*>BrpEQGs-?i7Jicd-N5+&Zuq}0CBp)5?0B_zQl{5* zh>2F#YDJVroVDbL*!-p1O##4`x0{yB)hW5Cd3b0*A?OGQx+%N}`U?<8PK?GET(6IX zB=`Z?!#60dWIWybPiq$Z+6SGQLsGy_c|`Dy$hK;EINUIzW}#z-kOc5DAYGrfyI7?a zZtqikf!mghk0tN1v&)52{bVQ%0L;?9Bo17aqV>d{!k+FA$dsLH2O#iGT{#a4p+sl^ zk`GSwU{a!ny4bq9)2ZUcc1lUKQQ}iol+6^%R9gRW*kDDM0?6Z`!??(kEmYXx5PzrZ z6)B`P8$FI}<+F$ic{(e6T_m?UzqxrZbMV_t1@ePj{9VEl*I#7k`UQ?9lf)F|0(dXs z@LI!C5CD4K-1`O#K-J!b?c&OW4wR-gl|3Xev4TbbsRZ$%AOHyH2O+SZua57zwhh3~ zsts6j&gK_L%#;YevrQGC_Kf@|gA$3hLr%Ck2pq`snizxu0>NvmkY*^s!KH!GbODAW zFhHokk4Y_uu`I)T_iFtY6d-^u%akp;{}mu7tFKaB0L>(8+3#S>b5COdD%VY)&5izb z)85b$`JhmSKsM>w!i@}+xV-Ap_I?f5H)#n6&VMKUJ)Rkla&E}Log$4tJ z<_mKG77)yaOTBS8X4U1$s>k3Er7vn_zhs3Q^J&liYXBN!t&uw{5;Zix#lHq;GqB>+ zFF3QAQ5ZF>n|$Z$PXP7~mkj27fG`Lh4(FR0njfgZoYkywX`5dm)*v9Emg*%r^TISh zGdY=>sG8n>`BFp@2v*vC81bFI|LEJ>s8%0HosAN636;x*y0a!O?6Vydil_il(yP#g zJkX*c@QzQ{Eas>U|2bh&;tV0`@wd?T$k4!mBgBw4a5 zODdz*YbMEs!;*UYP{3lP9>MAPR;&>nEb9*e$TO6R@otkqxdtsVWdTHRa7R{u&ioH9 z9K+{Zf=l%f(qL;Hij53b!q)Cz-p2P`xC;G6V(U}i$D0olB0Cezzx^Zx1m?Y_3;*KV z^Acra?}uh-jk!oWC4(2u@!YWh5J2E@4jqG;6uNO~jfldkj1k&OuQt&ud?Hf6sbA)J z1ojd1M*zcp;-%JS-I<_SfQRjFo$$=jb2CSwaLg_QwryLpiFM(XKFJLn1%XL+UNRN< zzz}@nDPm1n5x&jli3XbC=li_!%xNPxZu~WKQ@k+A!=LUivdLk<_Nr)@mveQeCc)F$ zmk!ssB4@{xiQ(|W+o@JoOVRM+5NMcN{R)z1LDx~=bFmktQfH&6MVSbY!uv}qVh8&^ zk3MuT@c7v8;F}2mLfnUzoUB!paC(7qJ)G7!lFt2N}w{do)i7BS-Z#*t57IYUX zJ5F-^HR0fXct76Xb*=wYxj<#li4n*p3`(v7m_z(UyHtFWKjAll?(bhvE&z!Dc;9`z z=`p#{+)vaxRCm8y8_8z_Lo_@V1@@P zV+uI;xE-c}Z~CVMAkm*jfhLDKk05m@7^{7j9F3gA5s5o!?8_wkq8pIIbCOn+ue0A8 zC}re= zroQXkywNk^Z%NslRQy1onmelsk33GVe2U&)9ITrF&g^LM->15si@|(RQ_^pm{M?=v zD`;%d<&FtFXaXPJgEM^-g+qE*Agu3{5yV7N=X-*B;QT4#nR%dUk#qHx8ZF1^z^pIl zOQ_c=#JXf3*rBDOCk=$ro?|d9;(e7|*Bn9ygqmr-_n_X)Id))I;`^bA1&iC-oO02- z{NC*Ts)idOnKP^)Jl{m+Miz#*b($emY4iJ8Oos*G8P~kB+R-p?k0vm3YAFnbo>PCx zIZxLfEp1?6*{(WWG_M=B;|#P>ZTItE0{#9aTkDiKm;yM(W%^X@LsylGRsb+9R%!cn zcU4ibtC!3|P1_R%J)RMsO6z&AO~HE!frK@@C-rts791fBe@@Xz6MmY^4%cOP0pi>F$h)U}>1)B0@?x}`;l;kLzkL2Narrur`xwS5}pWo;BhEqww zOll?$P$=;u&4eit4P`;WB!ibOLs=>S!_xhI*hnVR6f-qiCxi$L4vV|*<;OKd143W` zv}gdd-A2pQKD?Q|)n^9lWnxc7%BvDCZR_ z403cl?z(sxr_>q-JiIP76qh8zl7!vt6ewtc0px=Rc57b!Pzd-{&DXAoCXXDqSz)6wR7g>kFQZ>4ij`vpV3 zn;tuV8|{r=T2dF|a_QSb&`Cb|dbk;D4Yqn%q6LDh(%O8eby7dsn${*D*!(3sD!yJA zehWZUtgn_vI$x~KDu=D+3t&-6m$Q57w6;nM9?nC_jP#uJM5$H=`<9Y)Sg9IWM=I9W zfl#<O*s z*L87?R5k$If$tbExp)lU1iOkRBig5gxdX|*ytI*k|Iwhs3v#V~q2wI4`_OmEt3kR@ ztZ_;&voV586zB(zcrlg^0ie=cWmnS;Vp(iDGE78yS;gS@zSUtDIKY%)(5Aqkn4mBs z&d0l&(HNF%XKln6w%DG~en;O%K*%Q27guNHLE=~Lt4rSI&e>Ck5d( z#MNb9O_yIHJqw&2Wr3YBuJ78AW*XCq2hJFg>t;^--8{dPO>&HCe=b)q5&#hV74;z~ zBn8L85g%A;$ClP=-)rNCR6`KJkVQ+V7Z>xXq4Aux!O3D~`JqEaAOCs_#O|l*9 zcsGI5n*e1I?1oDmUwcqETt+g*FVw8l5S^LF{i1sTT((qGHc1fn?h}5(vO5c;R6Ag# z`R?%f6!mSw#eH%4_?{qV)@>zf9klf)*4jEJQOCMRT|xv{DGg&7fV@>bKh*;Y?wvh4o#xFHu(bXDP1UQg zXxGb{YFJ~ffp507lL;rg8;NXWfKxWT4Mwi`;CFu!GLtx@|&7P zWxZglUtShu+6&D|u{}BE(o^a?c_YT7LK$YCamgqUB_I$wVkO+d?+P6-JrKZYt3L@0 zj8T+8j0+nxLj~YEbkyHwq8SrAq%=6Gc`HkJJkd1xzd|~~-!5r3+-AJW=~;Uh0z%ZB zL9NTK{vG72rTKBg>+Uv2)>M3yw??h0M>56`OE&Oc$$|hvy2+v~7TzQ0ml5i+qM+#? z0T;!!yBoR0j|x4!GJly@IE0oj$|4*90s4Ul3NrImGV>6C54qN+N_v6MHZGm*@xsUfhISPe zxmHma4PT#JNWX}CfQ_veu0+1BXW&aSf7N?#(6oEdAO1E7zs~C73_rnlkkg`e0$+07 zP3}_=rimX?)SKGt#*C6bPKPdz3la!`+=Kw^YA+AQOseD8a?AN8~z$S1p(c2O{ zXp2i9qWzIk+&T0Tn_?nsrrD=2p=aY#6a=qSLj`DB)VQP(ampg;UCHz=nx^^CFY>uxwjOQC!l7AglC2GdRM z2Lt#dOlto=yN=ZyEyvT6SijsG{LZQ89W-6`!-#c3O`P((#t^{$B5+-MWd1jjzHoE2 z&+=wJ<)L9G(F;AE0Gh^U4x&f%8xfBbznc@zW34}=vi>=+miHo1X#4l@yEezg61%vW zkD`pfn!M^S{*cX04|oWy7F%_a7xbJJH1SPNod7?33XfCzK7QZc>thM}-RlfltI}MO z8wcu>&?0a*WJPP~0v?kM_f>QyXP zyi2&x^+V0kk3B(K@=DgECU@)Eq2A-u*mC}gMspZnIMX{gC@p8$uB|b#y6s#&%;eBt z5-eYS`(lCpo3J(0?jZM~*1=mQFeH411K#AtAM{Qo1Z& zcD|j5EJiXg!)L0z+y?ul?$TlNM}#E!>&|^~QpfzQ+Q`otp;p*uXLQ*Nv1hbiTDYk@ zk#`8l68mItW4*g32xhny#QC-HE>aSx$WE$)!Q0|Csj|1A3MCT~J=1k~TC3B$eREFP zmt@>f-6bE}b@b%p^kH(kJcaAI3;N(9`-g`xW9$*SMo6di5knJH{B=u&XA zmz=FGsr5=}YK6Sa9DT7g)ZcyuDaLSt9PHn<*bAyZ)J*pzSP^(TvHPAgBOR>^{{swz zTvd{VLxG3wx7N>PXO`cB$1Gz20Ca(NjS<~8dQ|A)>f|92JH0tbuZSvHN{M}Q&Lmsc z)}st(b8#8;nF%;oFaO42@3#4-^#vA{JgdxQgG96^g(bBCo{^+~E+c2gkGIir>P$$V znR!XwpGgJ5J;qhXyM;1=I#=wJ#{_)gBZu*jx}Zba6Tn z{^?niq-yDB(|q;vSTv2{_A`>VPTNU>;Zp0@i=l8(cj!L~uN(K{?cdtAuiTC(8`NrC z(X+IlcV#hg(l#dGSNjZY@3{2Ey$CXfNarEkvNF6LMCE|{cyO&_YN7hXt$C86DA z&*r~6_=J?$ndd+y6Mm~2&x_P*o2Z9jz$A^X!ZUj$uFeKULiE?K)42j_!NK=8Dmeus zYWdgmw!oOYr8#aW0A!lg%ygjlw1n+f`2nf-VSR_y!OQ)pa9lX(EW*{`g^+0F2XG;q z3k-*xmNQ&{nQ~9hTpC=MJw$zLwI4~%mgI*S;kYkF{`-{eoEHMe|23nx`=8<17ka!) zU}&kg_Bqd*9#+>V8;cuB7dpKr$Aui<$69a-9%{ii=Fh%bxuX$ml7M3ThRaMbDC)e3 zJhntUMLrXfLy2BEdTU&-EDO%iq&&Rf_Xkzg!+5MzjeO4!BYZEc)PNvp2b<~1BYp5R z#|5W#N+nzjk^b1I*a*74JJ+)37N$9&O8^z`p)_Py_&lC!?S;f+(nM9rU z2DH&j3v263ZmwEXB^_)b157Xw0Buu`POJ}-fXEWPz36380NU|3hWXc5QQppeXBk}) zdca!rURgSS4h=$e~U{a-;HOBu38Y4wkgdmgO zJlBUuWkQJ5J%Pf|s}CF#p2r_Qv7-_I3l(bOzYh$CoMmaz1Yt8&&L<9g=+F)yGXXlu ztEr9!Uzm+;{dJb4Wbb8HF2C*pI-q^mJd}@(69lh#b3au%U;L&>BF(ebQ+bNmGk+S~ z^#GY@rTUobcyB(1JB9VZ^tfm1Uib^34RQ>79&V1{cnCxf2&KJkKq2V93n-$B_ zO8wUQ;>mg+7qCLa|J?EkhLjO-`%J_1wMQn0zj{G+E1?N5Y)M_^0m zHU3`d*x%E`YLv7$qR76ji>brdQ-4m&Cq0Pl=&$==lQ9+)L_go2t>#yqc}~ zS*~ZTv|w1y?TBjn&1!gYZaB5>yztl5w*$C#1{-PHXts*i@Cg7~vwSgT$ zPo<3B6V*Rpprl;uy{Ol1%_fWc5r#2o!Bpr>Ad!ns%f+PN4Cl(X=A2?Z4D)?Th$nUN z3&{+Hz2C?9bpWtYTlJ7`lrfL(A@Rw!KxD$M!ynalPZh4$$zd(izeGyd*^UWyfn7pJ zwP5os2fVH`V)vD*blZh59P8Am>=$F|UA_7`QqSZ3vu$&AlM8;1=76+ArHA?Q*cZbS zR1Qt}4@t;Q;kKTfJ5!!Z!=@|+ILT@ONCJ@r&jXCA(J1~d95!ZCA7aSC*!yj~Y%Fl5_s^inqmMKXzr;6U)#SZz$G5KZC?cAx2G|V_9 zp+SSi^v_zwjGiJ7`J((NBK){E3!($c+sYid{?7eeNH<`@6X?E-vOhZB&9^L5jUCjK zS{WUEOG^FOJZN=eJ%H83^vmd8qAZ=M&^1x4^-y|cIZz=z(k#X*lwm&-K|=}#uOxf7 zQ#NcdNXqq--ejc+IHmZl0sKF85xs5umNcN&=Xi0ZY=uf8T^~=v`f@AHCxRQ)TwU68M9Qou~(>=bO7`oGzG}IX#ym2@FW6?9h%M)v@u`t17i4 z>YH(r$9&QJk5|JjwRIYvLo<}Ps0i8o&n9&T=_HixkrokpO-8AMRDDx*m`DF6=;X@l z#%~j})l615XnPs4pXgBP{O}??9Iy4B=q>+zizV91@1!6nU2g$m_ayG4uzmZB7xEgy zrUdF0Z|8l2emAbv8Xx}jtU4x}$j9?bS>xMtwOShL&V6rGfkw!4PW!%{_iLo1aUyq= zY`by0!7V-Q8x z*f@%cRtUsg(t4j%%W)R#`AYBw&vEt-N1e3G2GUO$mGo3{pf^p@Tp7z6=@59?P~*7YfQe75y7Ovdvl^>DIf{6P_8IEtGs4CT#Q>_z|`StBkPYCUU>_Ve3ZGx z^`kNuVxV@Y;}M*;dr8=LvwGU;VC!k~CmWH4|IWmFTBY-sW}Rznc%&E++W7gp3Q#hu znrzBsOwS!Rh++*^h4#4O`Fq;#2Vd91kxcC1WD!Yuq}3Z9XFo9lofFLdmEm_ugkBdf zi9HN9=MHBt@RfEC<`rKmO%V~pxWvtsfOFXE<>fPX!NdCcU@5A2$Vz$-16}5e!p$FC zSU(4EIYvrqeZtzl$U;EwSD&j|Q!c)Gov^idW7!rADFFfr#MU5m+-sElqcOVVuf zAp^e};iz|Ai$C>;L)NZ&-vKZ6@t;EBgm?K8@#i-U*aQib@y`r3>r`OI_pChEklPYb3J@dX#5O znc8Td$7$9Gm5slC?{2Yhe;va5hH1#Tc|M*;!u<8D&a%(Og-&(HEFJWkxcc$dSP4f zXR>#*X$jYo4+E4Kc!xc)ipA$N=>^#ml7F2EwJNdmGDQ$uP1(Ch>SxQuN9N^?U+x7o{MEiz+te!URr(`3u%T{tzFjwT9cN zAB^|cs@LB$`8xTm?9{-=R3rOt-oMtbmt)^Bb3*)GE9z^XQUYbwT`uSE3KmR4 z^}e|d4YKs2OOx;N1A6#MZ2hc`%7eohhd-CAh|b*vF#z7#Kr(gv=kCCqLG=%|AY=bh zl!W(9tu3vMkX%XpCb_ga4UbQYc%t)JT_w z8kU~FS(vLE`n+XfNP1@a$C_FLzo(Y+=-`L%IdbY(#^0OSigFiWI;F9LeYCrPGv>R+ zmKoZJqoDd#(rh{cekQH9A2h%MI9{I+HL#3zXm#rFv=mGfanf2d-DJ7^!a25RuaD$0 z8wv)tJV4)ToK{L;Qh{=OFZq^c+4Kq>MHfn59G!$n{6f0TX*N=Zyd*@WmWM5D1AmVQ z^#K}o7}u*k{8^AcKlUC@w$dsc9CQgG&0U23zv=%Zt?!&r0*#b3gb&iEglG^sxchk@ zc@4)U-b4F&_h=Sypdv#OHuu3A(9EPpRv*73m3X}Yky31GW zoVv_Jc-j6XblYdLBIX1OTYYJ*8fH8vvp5!9;T+)eP2& zW^e#RXv{SP)H!+-e3785Pi3!Tn@o$B#b)WQ-*`sW2UroCR&za*o1IrEy#Q3Ty>!#^ zvH2Ltyp(cl#dO59-fTGOB}3FvGiP@IlTT`sBZbfh=*!DxcO!kQUZaEPiIrW;R|1Fj z2A`=~@uO+wXHKz6JwHnNGFQbAqj}G;be0th<2-?0-xq++Qw)aIFIGh44|l%;gz zG_I-pxG7pa$(l+hm7L}Gz8c$S3z4+*L?aSScB-~vV1=Rp0*<2}86fh((sUtPQhV)C z`fRt&jT9M)a>oeJl2Kff+#+e?EAK&3t*IE@%kKH@I!zb{?;S8AVcLZnD5^`D`Ny+l zY7nV>a&Ji<{BCSdps)PZmV+%)DVupDLY<4L3-8Iz=m&KKa+wgzd zTl39=8e$yQWkXz~wr|*8aRALL)Dv?Xja%1~DW(Ny6Nvo3K$Vg~#FfvyVuQ5B^{LhL zB$}@;BDu$p0?mxn1$mB^MEMAalDW$oOWAYMUpT=jx@H%f6b{slF`f==(@?*Fp5QdOndO(`j zVwWSoPimajm%YLaE)ibV<4ZerQUL{9cNQ5k@b@Kwcc+epd>Z)nLlF`H^`XtK^nM?@JL-kOg7D1Dp{Qw>_k*j(?&G$0z#nsv@X;u)Eb zUyG2VZlc?UmAjePz-{a_D`Vkny6-19ka0(8+<=sA+oWEE+Q0mTFoCkGzasH01b9rS zPM?uyPzQoTsnsauNZ@WqJH^(eeCFi#SyZ3D($|? z^j+@bcI}mkyH)1&y%o~kN4n#_=vy*zn&RIznw~k6VzlOqY^`Y$)(1f&0P}fw5!1^!kI9&zSGmYAn^bnq^x-c~)6mG=_wP5km$* zpXD07Bi$+4K!Y7eRr$S7?Fsr6`Brc+!g0;TrN3=zy4Ah%gCkzomEz-)*iPMU@3!Ra zZ=-y!VX3VCbDNzYIAjT&?yL#p&&XZ~^Y72R*w5oNiM}vD`4{S*M7lXw|HTmx0E^4t zPWQuotyfqr2_OOjyD?j*t6<42N?*6UV|6@Cl=~m&-Zg49^Bj|jA!&==oV#>nYK4>b zA!4?^ogqtT3+CVsW36oz!BC}(DVK6RgTEVt#6-OiwiNG_%%AS44mOViF5Arv03R$L7%t6cJ zm|z4IKZcnXELg3`QrG31_c%^5L0OzW{;OMJ<2e2`L4x1{uj-7Xq9M|KtzfE{hk!DHNggvu;$qZ(g|IPV$PNhrG{#}X+ z?yc?TtpK5xDy?7v798El%w@cyU|WAlt-vN74{qu<9@6c)92D?22a35dbztg|X^_6j z1OH@R8D1PWV}WmW210N|zE9ruK$<4s9atF`dGuWCC^78RWivYpq^+>xN&%las;XFO z9}AKCUEp(sgA{7KM7g2lz3#Cg+QRw(MDnCg=|S=zhbK&EeB(}SSM5-%E6F_t?kxP> zmX2rdyrl$3l3^?=q_y;EYwI^#iIn#5`ot&@^G$mecrW9k8P)tCLgV?n6p4yV27jLq zRT~C#t^K`88o{7CUSp3T6OBTX1T6V32Uxq&)W6|I?``55zB_2Dt7QWK0pxY;aj_+I zAd|Gjk1TSbhUDzJ#2D?JecaFnVvU)1D__ujQ-;}qq&S^%DYJV%F*m&#YkX(Acpj?! zj|~eroX7il)y12mZz~rTazaTJ7|lA?8=#P@o-q!ddu|rd}oftYTyApUrgqr&`kFZ&3+4D z0}ug#P{&srDTRXJh3Nx+kO&tk!A*7_RJ>Ll-K_PpeYJCi?lk<}aY{!T-2N?ZV$mA9 zlRR<5(8cPu|9;-ab)jx1sykNZ=Aas&f6B1$%s0nJ1c=$tk> z+0XJM1OFak{SpAss+*?Ri@1>b6pwi!Vr0Uedg$j2Gt9X!=IrW8m1#o^d6vKQuL_J7 zXYt)~{ZZTdj)>+p-?Kl@MgiM zUrEsaJ*;d#5RAnqhn;sF%zh%@?J~R#Cd!+7XqS>Q{Rtv^gzQ_ zjk)gLCy^6kj$8fGyz8MBSZlEHPjDzB)4270sb~j9iueCH~n$7~vVtb7CO)1Gv z2o}Bbxq#XYOjA|el~>8ri?!A#0p&RttlnGS@?3WQi@lUc{Q}w4ya#8C7jxTsnCuc9ijJ&vkIJ|lp zrgQ-#FfW-3*I1~jCu0a*$DBvBv7u1U%+K0-qpO^L z^2^mf3OtYh28uxwEIlc&mCmGi=5{2;E&h1n_+7c1LmRx&{+X(u9U6^RyqA z#1o_7IUj+`+RG~V3LEv%aD-9!!W;bCnEaK8HR_ofnBzXRezR7I_vbx)4^`dW+Q(;7 z3cC;b#bcV*)j6Ta-(ovkA`zN#6NG0XdAniEW)yf$7bNQWaE7u9GolX1q#s}a*!Ba1 z<|pB+o4r-J%)6cRC%LA%&KDacMG83>aCAF)GmlYggu3G3brq&xIsfqWZI({)eq zsoxAgo~>ntLaOl7j}Tl=I7yxIyR9$=#h9V}GKMZS;0pL>qq>2{lNe2Fl@ zBCX-tc=SGEDGR7ndrsMRRyc2z!q6H!53TQI(@y$hL!1v`8-$+QmHga@m!$&`PZT=s z1)ao`OUIXJuvT4PlM_p#AAwflG1gcVnx(2)z4p-@O=c6P8OI3S9K_YsmXc+G%2_*n%J!Io% zp?ob40|DF99BSW>CR|STB7*KeM=KyF<}J$%_B;iH!b(xi+xs>_^>&WB>rjJVdE9I| zDEE(DFTDywX6AN!R#%@UGcix6jS~a*f4}JHkYR0K3RE3C%C)S<2FTKyBhTX#0RREC z!O#UJ?uhD5xxIKtW9&9!WzAL|!n5;pwRTIwE@P}iD)PNBsoFvdoN^i%GYuT~XlW4X zd9{%G<{eqz9|yDVi*ztJde={!@Xd3em@)$~ZN{mnJ6@|P*>+?ZRKYj*kmkzKy=;n-U zNr_{UEVy%ic#)@s6veK+p&IsVrnNnFEtovZpxnVrTnFAw#Mlh=tqxc)1;?U4oO zlQVv&bz$>2ZCHM0?_KRcK*||z^lY6RSdyR}_L!2=*!dk07jweY3kLAMarK%~10oox zU~^f)eJ|82tu)1)ot1ja^%jH$INs*13fBC^5w>tFX;T!{+yghx6cr4WUD=Dz>Liu% z$^#=WAWLtk-g^mUbMtJcBrtYAJM-7S&}tHr^A{~xa6Jn#;16rD7QMmMLkmZFa$~0_Y_lRq6|TN`1f4fbI(O$gp@bj=nX1l z!~U(S{B>|-lT}R2}gX#ocd3II?hQUkNXUbZIH(rwxXU1Iv zAkv>P%G1=w;1i^r6N+6{fAY;wbV)iOY|YKz=Z1K1vkftp+_ml+Rj9|l{Sam}p+J!r z1H^)5&r_*tOD(93{uN_5237WFe}AHYe4XE?)y)-#Nygy4Rd7*MwbjHCs?2%`Xdlkt z6Ec6YOB?OvUqA>c-z_3H2YSn#gxA06bCW=!zq>b^h&r+?tSXT=`o0}?t2C7nDEVn1 z1DV&jd{LN(WPk~?#kb(j?g#h&ftQC;?} z;xLJVDePp4fry;7EbY{0(vfqq$lC~_TMYo2GH_TmLZCT5ZFr;j6&;3nAK!i z=VE>*rsD(!`u}1+1F3#nI!`l3ts9UeM~o*$L{df*x+lZzr?M>rr@f9-296inmKB?% z)`*Kg#8M`Dhk=6fO`gke5le1%-JW(tP4Pay<6UHVz zUO$pVpqk8$z_|=gNi_Xk4F?7=4`N|)az;E-;9R}D$I{yS3aJmnrQNC0QB{JG5ww7iIoJ)mtOj=P#r=Jj~k9SLC&SJ%u z#2;W>%Gd$=2a(^Crfi5&0>BI_q0?3DONG~tFX5IOYzdvT@Tq(^i(cOi+__+l(qm(y z#w+0<%?2995*o9EhggVe{IDI&>^RN*BHHmFlQy@n3Mn;E?_$(&5OTEmU7vMo@PPyZ zhf8<=nKuwh0>gm6LA<)X7n-nso{zW(r3kOJd(hS0zRfzdu+hV|F|jwxQPjAUfxAj@-kTro&nIga?8R^Mt}vt+ zOsXZ`DXvQYyyGn<=Q6G;%IN__Eg{k3E)Oo>5f``PX2qoa^8Q>wCO(rv5PH?piKX`u z8{xZ(MRpOxqN>qJKtjcWRHAkXyC*$qz=xdzCJIcXKfbpA~$g)0qEfc=aAPBnrZ za<*`|$eCzLwM0bOCo={6d4bPF9iD$;CSzznZeIUKMnki7W`zDSU;T)zk+W(=ngdRv z&_=S<@bV(~YEYvP5V;=vI?BFPgU`BFwEo@or)2c!M$+S(osG@|Kclu7{88jEiEi^@ zV#R+F700_d6g%9{>-9ip38Fd9(|!B6$Szh7R^a$2OdEUdnXlUCVZtIuMfU_zx+C~Q zdQ_Qs%U5aklkA*>1|4XmW%|-ea8Oj5s24@=+J?vmb&SB^%F4+oWX zv!=>EXON8|5y7{y!ogg+QKKb(j*0cW#g%D^*`wKOlA4t~k zXpuuNR$ue8Qo1DYw;L%jg_&5CeIXEkknY?+Xt=_N zQ?n@os$>-3%rhF|LHo>vJV`!4pEbYUmQdDTG-q`F%8pF7HTUy6s)SS*@~u%}fMBFPrLrQ><~ui1sq# ztRyKbF?wt0k=B*^?%E3mQ1B?d&WXk`*WCPX{%uj9s))m-5q7?TuZ@{BB#lmyEXG!r8`mM_W7= z=qM?6oI8s(3~d+L52mAK2>WY}+S#N7tFo+T!fO+9mvPSncLsyd0Rj$XpnPwQ$puJU z!?fj5cW;`>cs_`nKA>!I)==#1XSSnP%WfkNwR|~83SgRYQNOut;cSx_o!B#at1131 z$X)6uKUJ!%)|by<$@Oan*oXMzF(%nDYxJs1L%lky#2E2`GsR&ID==EsxNVT2y*#ot zA}2CB&(Vtq%{nhJj@23c-v)6n^KX#*sERz{S%%;~OCjMv=SILvL=I+=A8@;?`RXit zwCE(J_aqdxklwY^6--yR!4RulBmO+}LcVi&8`tR&0U-(p@upYm8%2E6SshAEo4o(3 z{6iuUbr1OGw}z@+X{x4EFK2FN4#Zk|VR;=kaz2Rec{!sb01z{L&p7V6!qf63m9Yi8 z#aJ$g?hY-w`Y33Z*v@~H`Qo*^=|AB(c@BTR(-p{Gn>RW1Ws_4)tQ;DfRC z@6tB&${ImQk`#{U5<*pDeuawqj%scV2yTU>#|UK`XmK_+^5Tg8 zZFv141H8Mp2|BYlekQL8COUrqT`kg2YB{&E(Zy+Qs~)Mme$9tiQPkFARoBS&8A0&} z?*iMGx_97W3GTVC!f&AdQrrD_9tYbs#DRdU^M#WTx))6xKIy$DR0w!23i5RcD1~Dl z)k3pshdtSuhv|qIh#8I)JHL@9hEv(V(Bdd{F<*q2-JkuH%X0t)(!9SjFo z!p`Y``7A!nrfOF&9Q}0N%r)c0ZD4D9k~&Nih@zEQzs3WWY(r?~V^9iD`#@Lyj^1B@ zIX1Un+SWBy@bexKtwaWXhvz?@7SFa(TQ{b$FKiM zS}h*x!#204M4`X2;-~-2%V{OfFT051Csh;2MvGrAs(&2(kpv1t7M6d*TKq)!uQ321 zz#R4$LThJ2A{hw96%b6HU=vU2JxPI}^TLRjxZk|>_|lUn{oEv-6~jAii-7kf&4Hne zf3_q>N4jTF#;qex&VX&${LzG9vIxo-SDjey(3gD&J!%h1-nN z_k2+!Qo#Oek@}xV4PJH5Z9P&VzJF+vgs;;$5m0Fb6BQ3wg6k{9pf>#sbnskM1AJ^o-)Sym5s@pXz5St=~6Q6+YP7=R0~4e7?D!kA!CZ z5U=N;T00i~=uO6B07N+h%}YQw%0jW}cBZ3wQ4^N=RdOfBnsRdLh4uETgARtxmm{_EkxEVs#~I zqy1S32vu?PO&0TBI`)BN%Lp#VaeM7nX@FlTem$}wC(|bTK?OApr05QEJ-irDLrsbG zzm8aRRfgb*GxE2}d&XO+&kZcPe7m>#J7z&7a%3Q;qqF$;a=3NplM+7(a1^Vxn#%hu z+Clp&pjG|#u;Ti)Edl^|I+0NI*%C>8NF+f{o~xJH_fD@B&d8|#n9`D%Ij8B@?XdRk z_CAkf8$tC$qk5ZdA?kNhf6MQ~hN@QLt0|{grpwPG$E**-6#(J7;m@~n9Pj@t0h2Rv zC@j_-4Ys_-nG8G5mIjCkZndD$fELP?v+a^oAM}gNJzhA=@xF}jL%bT9^s+MZ|Ifz- z0$IMPgK%)r0b|G1GDL>yJlXNub{`QYIzVv;#O%Rkap7bz*L&*;ALe*9s~?OseasC` zXE(c-2~bX-8{=5k?!1R{jn*p8u zW(1#d+HUuRi9fT{{$uoHA?$fxH{0L(ko2e_bL_c%x4L|@{5YaqaCh_&@}!kPCihl? zB`_@54iuZw?9L7>xDkS@ROdfg-FxyxFqlVlkU(37zJv1&OxDmDJ2~QBzJ} zL-hjB^ftrSyvgw&y43W>J5_rcN6U|wOgBg7ZBKhoGXcvUac}=mHRu1$^d86Yk$ZDf z;mVaOaSI`AmW(Yv%_Xy_wVY@aCEdGJlZkxWN9oJ5mTviyvs~pgu2bj~7Hd9neJiot zi*+mQwnZ+@V&>cS+2?+odw;oq!u{#}%jQ1gKvINfNhXlL%qw} z^eZpC%(MHu+mpZUXuLXh$vL6-uy6n`$Y$B*|1^`xR`Ko?7-n|2?R(L^p<@62LPpA7 zrq(*e<&#sM)+^Iwz!4QhFx$QHiJRd!a>HFVTf|P1t;yV8NT)_5J$1=9Gqlm7bq8af|MsIx1jmYW0ZkNNKT``-%18Ix>w~{g;5T&MKjF zR0P3%8+m5;*?mhlOg>bc@$s~>EC5o%UM_E0I3vl*F~`(L-a(rwvF?J&t1+FlpKU_+ ztQT~jJG}gTgIW%cOAW5$POsz8nxkk9(gq;XOeu*}!!opWf%*bC2m)@)qz8k%h2++U z#eyJlK@okYN}+t^IMXbt@Bo#-JOP?|rh{f`%5|;g08hz{Bi&l_#evw`ZBOWx8I405 zt9}?k^CY|Aa@*9XkQ^Hmhm;{7Nh*~DnI~{ywP92)&5~I3%B1;2&s`q7T7n;uLBxGMO)m|CP&^c}UO8D>M8k>6EL5rO)6byvB0+xs6EbmBUX zEF%*OO#9QFb+0_AymocA13FgD0opp=8M|O{UEsnjYmg+CVhk{-iXuQdP|QNq$RZY; zVCAThn!)StR|z_MBlOQI?xHwvzOPpWJt;yq4S%^7P=$W)CafGaR;&%VwJK2mhxsJ( znM7DD!(Qg_{SD>Fth~~CEDe&g)kqVdGe@T8#+kiakOBv!AHO0jccuAaT8>0>51F0= zCm_Um%<;T2@m+*l!~M@oZjz>4fu&`_xHx7i&tZ@=dntLOQ)>7CjqQ_dzscRk9*nxe zl~Jb27eDCW2#@||37m&9M(1b!qS{fn7nZ|fbt zM1?7hW(@l%3nR-T(Kr3{>21gDR%w(DKudFmR%TFW(>_Y!Di9WFvU!wHQ#awj`5mU0 zDQiNpqQ)fkuyGRddbSUkBOpU^a9&%G=QyyWF&Mm>Us_f3%^ZoI^~gjaXN}5 zHz6ma1e-Z-*p<4ao=&y*J^R|5abp?RR27xKl~+U`|0OK;xfPioFDxXM9Sq<5ztqqe zKr0X0SG5%AIcfoNP7R4pJ#r{Dk(iK@h#nX`&KvKE^Y_FPB60piA8#UV>t-CDh{NSs t6i5FDIKeu?Jeu(@;OB|=iS+g(qRdv@KY-R1XNm%tu#jEBwL$Uc{sz)uwbcLs literal 6079 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 MmbSDzRQH(w0n=8H?f?J) diff --git a/doc/_static/dialogbox.PNG b/doc/_static/dialogbox.PNG deleted file mode 100644 index 3e7edd5de86746fdbde078528822fd1cdee43ebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4997 zcmds5XH*kWlnzp)cO`&;N>dO>5Ku87Jp>_05s)sSHNq!TdofRSDm zX;MNjf}tZDJgd8BfA2Ya&i;Dy-o0~Y-goc)zBlvs2^>m8$wmnP0BB&!3Yvtm2>>9v zNq&iNCA=YaF%UUxLgfJE{nu6r6A~*~HCX`QV>H$2b5g?mIzm}f4FK@u0|5Mk0Dxn{ zlK%<-;0gi&)=U8a$s_=PuMByyC!L!vQs-iRZ&^c`AHs7gk`TeojT7D#HkCXOyAm*zW=)`;*AY^(bAHW4r|G z8GqIzXLW-rMltP6O`X)>)6bjb&E>_vmz(K$nsxCr6~5a#uJ|(DmXa5!S9HEIAJ$2F zfXwtOl5f0F##h8;=k{4Cm}UGG0hqbmUTy%wy;*NWBQgFtHS!0;U@kbB#i@n%S%LeJ zW4CZoA^odg4f9PoG{ctSETLjHstSuA>!LE5MMxEuQipj8G9D{SmK<(b2NuA)M=-U# zk$jPF)g`|>Rm=Yz9`ugGolSR(@Cj#?EhJn7NnuN|SpbE+Hm(WO_11J6!Ao>e;T5n+ zS=HMjJUefzvXX^o4@;V$zMp|BK#W(ugSrNJVXI4LBODUL~_~Fe7 z88b7(!{dX4IwrG88OC!<@#2n#Q*vC%zB<|y?SyFBschydw#Mz{i%;!xEU!tnya}Jk zxM#`fJGFOsH>Av%0Nv?L3)L@uZbcy{d~mGq`Pqg>4)&hC^$YtAYe%%BSOOWTQQCd* zSy?^2FX?u5_pSgFlEIw1i#Rne8|wmbJ&&T!Ov~rm)6Xt4mk8!+M7{J{I($JXeYC$L zSrqc?b;{3SObtvNx%2Ej*v)>tP@|R~K6Ojb?(;y4v9`i_Kj$OqrP>KI$S3oCJspoL zm@p8|#d|n@O+R(1>Z7&KujU2C_5ORD$TGTbT2ex#X4=+`-%(Zf0=2rWmX?&ob6XO1 zjpIf0kCaliJ34o`VOsfVuboS#YD>)aaM@iECHvbIQAkxTaRGed=psAe6uUZ6>n+d_3DQm3e{D^EAd$D)Vr;eJ}G z!B*OXU^JRkP{%MyLdf;k%6+cPphD~9bhhV6j{4J0Yex1=WvFgGGwYX}k(S=-Fd)nZc!r1K1zdo;lqyvsxOBCLiAiY*E)r5g-0SUmr>Al`ADdOsS-D`L zGEo|;$JhZ2^X>1zI>c79(bkAtZ_3%(ZoEc!wlMCUNW3Tw%nZog1C(S8XOZ;P#2DH& z7F{&FB8KwMGU{SE79%#R?ftq&mJ$w93Ic3e)6emHBFs1(AGgd~veXP8HJpAybLytqT>w8C?CFAd$o(7NaAZ5$yW^I_$#6@F+#{E+bVw6=f%cs2HTv(E{!K7 zG^1~Ix@n+ghW+F#!tZkr`VeRE;$VH^JlQJbd#QwHZ_ zCQwYiWar7%xFs%~8QR1}z$H^I@P_aHm3@lHz$g8EFQ{Eh*7*bJ#HUJQ#iap|7Ne$D45 zG0%7zBNn2=S9f$v&E7k9BH;T3*tbMy^^ zhB7YJf2~e#KP!Fd*YzlEc^E?MU@_judJxM;l$=9{aL*Jn>I4Cah1^L9nMjNvVN8DB z4g_}m5f^$wb_mMi4~7_rf&V4069^~&&1o>Zl-}f^x;b{kM7VbV) zR|Lw3tENi?Rux+MNsF`;YGZ*pL-*~!R)P_jn%Y{MsGM~dy%_N9_LP+Ke%kG=k?lif zTMopG$8vg2O-=G$s|;zMNmp8boRUCK(&NO4--mpg>87fEPJL~T;bj&0*NVmA5AtItDn&t(l`jZSqowIg%lD_o z6yKD}WdN9+-M5Bq6i49ynF)F;>RoSA{x!*lhl@wH{2e+RQi>TO+rO{aQlSFtw`CfR zCSQ&uI6UwmO;}eTc)(?4F^ALu6BAI#p|xKReTpC^FXImLSw*P7V(Z1(Wfr+ zi?O@sO>Oq+8sabKWSo`8=pLPZpl~by29w1kaY;REc4<@{#}U&({7cpF2DkcwU*tYX zWJ+iC?woA5a3%i$;p&@Yb}{rtLpjjYOzF3gkxw7pPu$FE03!CJQFyDoFokerisReb&GozF5>qBJ- z0=#29A?7BXtXgh)xN2A&l?v7YH#dZR+p`x8Zt;QK6&IuP+i&E4_vq$;E|Y$bi{=yL zvpR2!m1EHQGQ4+9uV1BSZ!8=ZfLtA^uQw zUbOLX7*iDT5{AIP7oacoY>Yw;{<%ue2XW{4|BdrN^dWxe>R;FYhWSODs9yO0-6LB$ z5i3`GYr-?7Evc2-cx41lRm2;imIgdDjUn>^Bq~^eO>l@H-&)fpqDJ5XV$QmNOJ5ZugLA2yM z$Sk5zuD5B+KaP$Jqx~xaS9Pnw+AH{pS^E>m;LJC_H?4LuAK1a?CS%^l%$13lXk@q%4jA0+Jh4eb#54eEYYy-m1@e6QYvVo`CuiGm7Cl9qJpCg&i4Pu?wY z7*8Y&F7^6AcShVblFBFHu!2ILV+Vif1y=-^UBZDC;!b|{Zl3b&r?z3h$uCyBfN?gR z%RB`ZrUAB5tyy6?_6T!P9vg>g0+#F=xIy( zPr9{gDqr0BCl4pMybS$+xc*`m+F*~k8<|zGe(gww+My{P;PcI1>vjRFJc@^pFMb|c zMv{#%TNPYx%6pXp7JC#nHgKpRNEG+kT#J@B@^)EaeofJbxj{Vpz2(KLF&VnHYqXr< zATQK`OhauYNU5y&bXbG|6T|yBq3pU)ze&Tdf>5r0bdvgchNJ^o-jj3~WPP*xYd&~$ zbCVkym74~SXL70Cq7V=1C65jhs{k@)rX3$7ns^Y%aW6u}fz5e+ysW*w{b+BwY4V1~ zk-H*$T*|wpdRy_^vF|;j=KBa_K_~ziu5@v8v&<==d|YY>Q%d)}*<#&I)BHy^?@!q6 z1?g+*9t$8P`AG^yHh|%c!qvm34K;{hzqCAX zeg;ZD-98cjlvrh6I$@`nQIX=Bg{BY`9PtwRB$pwwYx@4iT<>X8xgRrB4Nvb6#`Z$+*M_#XDE=Z>(qvV6 zT)!=bSg9WFpY}S~eB_@Ezf^ou8gvaZbWbnoL~Htt&?%6B?2-sjNEO>Le*Ka4j;X%k zUT4t=PHUG+1TD6+DyzNHl5jj@+=P!RRU6`|Y$<1;H%EF%nP5k~&jabAIiu?iW$jMj zDUe#!e*Nnl12a`9G_;~(JB)!FB|$&Rs321a=D}``J@e};M7=i|t?)a4|7%ZT&$|y$ z>6Cq)0oBZI1>9@Fd)xT*{TPs5Zfs@uKpRQx6&KzbO^V$uro;FtL}$eCzF%WUN%tN% zGNn#{!@$LZoyAN6$d86c8AvIFM2`9_8YgHXF#e8gfU!{R-NR$X87Sncp^;9=U*%a9wXY=mM=xe-(Emra3+)Q_sj*Xu3+0x|$IEbqz8%MW5>&d~D-&DfhxFO3l{yf5eG5|~wu23##8t@;P34N0Q diff --git a/doc/_static/dialogbox2.PNG b/doc/_static/dialogbox2.PNG deleted file mode 100644 index f1f67884bdb663b73b5d6ab61ff3d3f0adf26c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61475 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 Ku0qx_?EeA4QVwMR diff --git a/doc/_static/dialogbox_cylgrid.PNG b/doc/_static/dialogbox_cylgrid.PNG deleted file mode 100644 index 2b4524aa249980f9b8596b0ad373ceb547964b08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8955 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 P4W}TZDqSXJ68!%FP9pxp diff --git a/doc/_static/dialogbox_remove.PNG b/doc/_static/dialogbox_remove.PNG deleted file mode 100644 index 7063cfb025a3086c5a42960f2e988e9aa5328532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15202 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 diff --git a/doc/_static/dialogbox_remove.png b/doc/_static/dialogbox_remove.png index 1da505a8ea6cd1c1505c30ea75755771cbb5a648..15607c1191e486f3bb1e8b6daef99ff00c992a9b 100644 GIT binary patch literal 149001 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�AI>$UfC64`i_@G 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�cEjA3?&72k8SLNC70EK000|>P;Th)XD?rpU1Zm) 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�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 diff --git a/doc/_static/ex1.PNG b/doc/_static/ex1.PNG deleted file mode 100644 index b512db5b0c52753631f86c8236d6340de0918fbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9857 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 Za?i&5<&K6{fxi($*xNW+GcCQY{2w$?<#hl6 diff --git a/doc/_static/ex1.png b/doc/_static/ex1.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c20f31156a2136bef82eb1f4be34aeff77abde GIT binary patch literal 30433 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 literal 0 HcmV?d00001 diff --git a/doc/_static/EX2.PNG b/doc/_static/ex2.png similarity index 100% rename from doc/_static/EX2.PNG rename to doc/_static/ex2.png diff --git a/doc/_static/grid.png b/doc/_static/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..998f02a2cdf8dc7fdf711a4e92180f0e5db85216 GIT binary patch literal 1689 zcmeAS@N?(olHy`uVBq!ia0y~yU|b2rW*kgFk&wDyvw#$Hv6E*A2M5RPhyD+MT*(sG zh?3y^w370~qEv?Ty!_l$-Qwh;)YQD>a1@!tkon%>D5uiJfHeY1TSYj3ZoZlF z_t$Ow!KNy~kV-J7){fkNw&853uH`*?{x*nxfa&MDst@0FgP|6wEV z+s91T%b7H4ay)-mtafF+^Dp7^KMwiZm+kZlW7QfC9ap+_{3%~Or%nwpm~&nia8*hc3^5Wv$ z|7G9n%jf+uskMHXTz>1g)jYY{t=|MZHa}zS+QJWUc7xJe=26a&41-1g8BAP-O{OpR RDh5_A44$rjF6*2UngCJC0(Sra literal 0 HcmV?d00001 diff --git a/doc/_static/grid_for_revolution.png b/doc/_static/grid_for_revolution.png new file mode 100644 index 0000000000000000000000000000000000000000..b56d0a9b932cf3ecd6866679ff4941c8e8a2bb0f GIT binary patch literal 2269 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 C9wgcT literal 8627 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 diff --git a/doc/_static/gui_add_law.png b/doc/_static/gui_add_law.png index 80c9d82bcf00581b5e992033f6175fd113360ac2..eb30b1c6d72cee4d0cb3c1956dca7c786c1cd343 100644 GIT binary patch literal 7670 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 Uc8-+`_!ks<1DBVq5H}3|UlZMSpa1{> literal 10128 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 diff --git a/doc/_static/gui_ass_edge.png b/doc/_static/gui_ass_edge.png index 10fa6e522d6e0b818972d76b634b3198db9d6a7f..88c3679bba18b4e497b97c9206ac73a3974ba43c 100644 GIT binary patch literal 11414 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 J5cc~0{{x>*42A#z diff --git a/doc/_static/gui_ass_edges.png b/doc/_static/gui_ass_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4bd93458caabaa996d33d2b7504e619203ab78 GIT binary patch literal 14567 zcmeHuWmr`G+AoTdN(!iyw35bjMNOyPV&>iRR zv*UgCv){Adb3UCfhl>klR?W;>_qy+2O^C9h^j(~XIA~~ScV%THRngFHV4$Jhl)}0R zmhi3AC4ztGP7qmjEG(>vIi*?f^nvpWZD%z*GiNs=M^iL&TRR(5HYXEDQ&U?f3p-~N zI#Lu3?Gc)+q`10!^41hgPhF!4bH~XX&FIeYZ31N#id$sg!*fO$sx~<*CY95940}^~ z#GiY=;r=|5+LqAl*u=vPBO)xM8tBYnCFWA=dn8WaU?kPamPR2{-Fe>DK9QVYbpMs+ ziTBcixxn$HQ%}8<@1&>scJkby74Ho+2o_C9NC;j4LBx6MxX6tXY;5diKLQAr-BJYF z=pD(MoBmLd2JypZ+XYgc5CZHHIt>jCso~A>3Kkj!Ilp`pZHA_pJl0(GrPOe)sv5df z*y_D|2k_}U7>q808c9i})tklw)TZbd#EYWd+O-y z{CE#V>$qtan?no@eNH=LSnv@pPO=JjA98=OMz}_lCqhLe_HWQEMv7VaUY+`Qc}<59 zEA>)J$Hjb6Ey?jx>Z(#bAdX-2pEow z?dO?ZUE0n}F`~w@4hKY)4LNH}t?1=}LsT$@u)wF`+`t}Tr{s@F9BwWML_#Q>^1SQv zJW?@@>Kf&X@445WWoz3V@bUWU7#}hi@R8U0Y`?BntN7B?6n~BO>U@S75}cG&X3I~? zx_Y`%?E5nDV2fBuAXQYv=jtN0xNa|cTFO~o^pyVfXh{U5$_<5wjs2|7TuH{=eMQSq zBsx}eZ&d}}n&}=fp@2mgTJ!z;k=P~ARaWGC$4T1?57H^DH%RyT@BvG1v*bGaIUl3B znc>1Uq=O0Jje)#8Gxj?I5d#-74QqueL1aE`EG!#+S(xzWD@0UrF)@~1sv{w4wL1cj z(%EPhlkDz26q&W0D>ZpJH~WJUi$*#kEE5?N;7l7({PpYJ!RPAQ58E@ol2~JiW2@J% zdz3`6;YFIhr>3VusC(75f`ky;>B7PFR`BU0rH(8HT6fon+RN#g^V|A!%&9~R`)nku zUiYTsB~Ibt*(za)IfIJ-d9>9MNoA?;vWrV5x3F;T;aTNsKZ`{pDyn30AZ>lV<3XM~ zaJ0p;0OO@;9vULlqWtpWdhz_|2wsIpBf0-r9P0`DlVt%#xF&9uwLOKFo@yr*%pDTE zx=S|~WD#@k-Xtit`+cy*pNfs@89RBog1CWVSMEs!dl&mN0)jrB4nmX^qKpAz9_r#) zyZc$5_pcjqnS@1-ZKw5kyxilm>3t#Yc?Z~#pL0z(mE;$NI#Uzn4j0=9oQR2b2O;En zQKkZUn@(BXAz!Ah%n&(*0~z(+diUxq%RckYUX9eo?v6A{sFWJVL9A z#D!{HGWL?Lod5!G@th_x!#6Tzn(tC?A9e8)$H>J5wIMh1D}B6IcjmUm#m^5EyE;6t zP8>}2^lTT-(AWZ?luk#JI*^~~v*NYK`HmEB%bO48MpWpeMcf||oAo8jZ$KgOq1~T8 zDoaKZ-SrTXSe@?(`1tErBDK#~?aEC|^l(-Kug2#>etrqz+JfcJ-y5n7B|z!!y}yG? z6WO%Wlt&%hnsW+{UM?A*v&-*nKlxs&^LDRAqhj$PGQ7^P2Ci84JxE zU#@0B41dh*-bh`T84U5f%@*0>#n9tzvmqW46>X}H36pwuLw#x&zkbPaSEQxHgbRas|#~8Qoa?M@8DoSel z!37=*I&Ftlcp6E(IbOD}cXVo6Gn3vCMthM@&pX z+CulKwyF5eQ%t06Ih)QM{51(+>8uWHQAyF{_wHq%ZVCzrggxZ7>Wt@9ODlGI^nHDO zo#a}3j_Ghe`s~u=R19=ywq6Z#qYKi3$w-k&k@9g%fw=>8Z9)%~v=(d|Ws z$g9hCl#-Y4{Q6JW*M>U)m6`{Wvo-SNmTvSXE zblIMSx%^r$tk)@@Y??Bes&(;EMWS85t@k`8f_w-KP4hk)+n%0EyW_hDDj_j^RZ-CM z=#9I(J4c!UxR&MJ32EH{fq{KQXFojKSUQ8vMCA~oC2TS>e9Txt zPB}JI(tqzc*4kvv{-O2A+Jf~+5%`ok@dxwCWGN{r(%}zXR=O$o+)v7=raUEINX5j) zTJdEHg+!z-&(CvNAF)DntE=5XPXK*{+q}EbnjLol;eBAsNq1~wQh7gu=yM=#U#~C$ zBsJ~qBFU}+c7C)qQDukRJtH6ZqD0IXBKfik{pL;8kz51z`a)&qUnEQKnNH8n%*@O* zH8i%y%7TXb*f@LBO|i(=t7d$%7>0(1JgVZO&PzFU??_|++Kj@wi`&)Sp2vc3WMnjU z{_U{4+IdYCA3t)ZWM`+u-p&ry+}vDCT537)rLd6oy5R~`7qqx`RT0Xfn-m*MI!mo= zaJ5oY;<`1?rdxUI1XHiUYpk!Y&;F0=lb@f@vk$IQ`H{)^oCgB#cH7}|I_vJXi>=~z zJg3P474;p-#zs(bRdzEC*J9`R6vD5z8hBoX&Rz1d9f9pEv{wg|#1ybjw-G3w>v2NJ z8+v^34k+3VH^=ttk7vqU4Y4eLk~Sem7|k=>ir0vrd7aq9iO7xoQAXr7EibF7>F__l zKskKNyFVJ}Q3XyYV^C7l7Ws5N-!sX^hLmS+7-?}&*}M#HCdPb0&Ie@u%MkkKZTT+~ zDt=Z`TP)9Tfc!=Yp+b1T-k1IzHU_k#+f0go9cv}c_P0R4xG8V>A)xt|wcCw1fiOB1 zP0iSp7!em}iXp8L-6GdB)f=B5(5a}XM5V+~l2E$roks)Q@KQfb(6||EpRKzj{d>9- zY-K(1Aqi!mI+|&#Og2g`GKE?mtNqunhy1pBuC7M`*u0|^dB@$5Iid3$6Is^0W#+@me!WK{SXOApy6$YU585FG4y4#R;}b! z0_57-+OGV(ZiQ6^y^-u$kuy{V3;PaEovP~#FtiLSy?%7y?&0o<)C;faNiGOU2Ydn* zwv^K2iMl){jZJ+ZzeY&%tPd)I7EYtABc_w$j{3TO>Jw@BTFio}_YWl&02LriEJ(JP0E9<=( zO{FGn5D0|J)x4Jo5)6fZ!7r!U7e=8_Vu0(15Hrb=E}8eH-Eu@8ySR(Wz0=FQgxgMS@8bHuWF~ zpL#l`q2s5{OZMM$_Z8~RF^kr!iYL#|^5YIjV^F!LoDZ8LT9FmANgvgHsp2L}gNP1o1z*&QZ|ii(){6oo}au6eqy znw5Te9(|mah1FkPNf*LCpY*I;uMHuz6kHT0Tx~36eS8`a2v2Q`(eOR;NGg$h>(=jn zesLc-crA49M`MJ&u8`?fv9Z;d6a)aQ4z|x+zzmAYw_#`h;K4vgM@L!NHx_2*@k$#Z z*GX;AoCjU<{QUgL*!8}`;S2%vjEqE(`T2$I=^D?)pM+hBhScZd107{bX`*rL`n3+1 zt!i0mM6oh$+2YLKpITEfG#i&9f;=~d;qvnG;11)saxC=@I_ekg9~>NSnYiVvJfLvT$Fe)W%o&{JN8)rWCl4{)!6Zglk9QLw0P&>aaOItZ@Y;4piGn3V$ zM~a*%XwzO^V5r`}h!-Jp3AduVFZ_B36sfVXiQ=WZ)%*(CQjUY(;3 ze)wbJuh!M_7UbtErV2kZSq>wfNm&JO@u_V%no0j?#g|A~H4f`k0c`5B?Gfb6Trplx z^0TrpUzWj(gX0N$pB;clYj_Hnu_WuqTN7?wiM(K-mhPLlSo@rBRsHz!sP8wUyYs1o=2+q5dvGus7V7>ylCI&huay?Wc9lw476ziYW^izdSL_`F@ z47Pd6#obwc9wPA{;yt40Z-VeBC23WrPle%$%rUnyUuFF7I7j&A*z|ad6;I{4N_3nOjD>66TW<^V8g-T2+m{VjMzxoI0i z!23|_bT9^o>5~j@G1fCeHzkgG6kvf@m|d4w=%)OjDIpJ6TEJtQe!1CLk(D%rvKcS< zmc_Ri8G`V+)K&54?9rIFG4%y}Y1l>CnV6VRdZ|xcZ@`2xzATqE#!Cd*&r3$)&$m%f zP}sxneuhiF+n!(CHBfBB`g|0nn8?$9h&?hOmYTZL8Sv4F1`e&rj0w#8K#=XBRP|NN z(23;o!5tbB0XZ~NmZ)AK+MK7WODDSv9LY%glY*un{_mO^8&}n*>Zwgm#0SRY=z|+5 zq2Pl=Gaws$#Kpz&sf0%Xi8^suXffUewO!aJZE^MHF%d>@T(+K`9z;R{RMeF3b6-IW zGl^mbv~}>&d>eiW3751pNq9b#>3rn`WdVsV;#)4DMcvHr@m1&F@c>f^YRbv(7|X zky>fE@67sb*AVZaDFpS%{|jHQbcESFz?R=(W*f}9{eqTyM((bY49{V>CLFd2Gjw8;a9ae-BOVM+os>%kIrQon)f_8o$Hdb;Gu2s*g;DdSHD3J%IDlYy5K&3c( zRzm2;UlfbGtXe>i4NQ!LrHSxnrm#jvmVS2GP7)avlpGvl2?9m zP3xbBgj_dQH%9n@;3Oyap+t{FzD)AC)RwL`WpL}$wyFhHVMSMlL9Bp7zph`Z5`a;> z*;U!KwSp#Yt#eI5ZaFBc-Y`BOR|)R*-aDjX*j#9qu@TNc zWAS?{Ar^92iTAMA->?*MSfTIVuoP1%-5-)h39e>CM%GdtZHVwF?#9efkoWC3IJS70 z|4{7yeM$FN`0b-p~>O=@x3U#r`%% z=knzF9Q1$C1^@e3`9Dz<|6lAm_i77|01^zzQ=V3bBFNAJMj`aCxe_W6Xgg#Z(l^^M zOP*B6{!{b(@86;J{FJp=UfS*0o3Dt>A_3j}R`RuXQvSwMl4OA!e-Tid&Zuc<1Adx1 zTD$$YqNiunM&Ncu$NZCWj;nVymh_e+PbPoiZvYr+Yoc;waB$V8OI^N{wB}`mdb~gH z-|Tt`-B7EeddQVO^1xhL1r=Cv_0DJe;r=-&P8v1-6#WJzB$L#Mb|nFVq3o?=@6 zLlv#jV~>*Q?7O-=Klb+WD#ziCGySr}_rkyS-tXS|^jU$vL5JyH^@%_&ri^yKsOs4@ zrmon1VGH}8B_F{IlcOhkQDb~mI0lF*acZivvU2*fj-^i>YK%(QJNWTjFgZ)hCn+fe zkR+nS9ES3b1jb(HWE=(*Vzyqh-@hN`ZLDq9#vC3QO<+#Eze7btMe4J;S_(KHJ|&m) zXs;2#Q~fsL1)c!wx((M6&r0)59CdLT2Z8h=`51y*WQR8-)L zK=4;SmX$EH1t;enL8dZufFJ~$?TzyJzqI3Vk*Qy`-j4#xtw-2VUelf^WR?5wydtGg zN{3LD<^C6q_5x?!-YtVy%Cj-wSeoA7-QU{sTy$X$I`)Af5%kU)XrD#ZQE^+4q{^BHNu&uDTxAa==|KaL)OK6fT-l^>g&MJ zyxQddO;Q7Oz*7zqLq}Iv%{+A=%vp~VKd{hof8%xj7t*^1FPy-HzZgUaz_;}gK3zY4 z04xE8p8c9JJl*S!12aV}HHnCdst6&n#0A5BK={u-oH8e($sVmc56vv1+7T{3d~W>- z3Lh?9_$OWM?=bGF@i<(MiHhR187~hDyJKiLQww#qw^wG4(XVyRKt7!D`E&O!EBfVe zo?a8|L6$ot60u-$xjluzzb`Pm-y?=}T#}QK3Ep1*8@=r%l4{O(i?kC2_&)EqcKiZs zckh76$0B40sVtqN+Wz`meS+ut@dn4>y+TEudXu(@1|RPMx18MUY>V!kC$zM*!mN5u zPoyfZ|JuK+zS&YclNq@?xVR|gsMcTXbri$hZGL@z!c577ujzr8L?fRpum*pwI19kwRfX;)7eWf%cHqP^f#!5=??dz*!uq%oKsCCleT zJS4=a39nj2@1s^rvl>l2j7?5oShF8@_#4vVFTYwM7u>mNoJE6gW_&quwKMom;YZip zUp1`1STh?)&v0_V=Z~V>3$OCBSY(8ke`JpcdA{C{ZX!@h>^es#6OtyL|wzcP3l z)0K!90@5-!x2boD%82jmFDdon z;pijXfy(u6iv~)58qOb6UG;&J=C4>rh%i!pA{Gw1KgGtz#>7;ZcEo<_U`X4%S`3<` zW}P%Ivuehm38+TYB;|>*(c?D{(`Fp6k%b(%Ikp7}4d)bX%pj3jStdZt08a*zJ?0t% z`?91xJz-#ppqN-1sEdyC+Xwsh$LTAUEiEm-*{mCCTj{+R?Cii2@^h@rys4?l^YlPY zR<;izDVPN`wpy2si)+ajsdY2p*2M65Vag_|=D=>(R zf`Y<$Y&qC+3gG`}B~e-ZxU;zFFT4gf8~NX2Mz^Cv*M z#1KB4$#UbC5B)4T2N&kM1))Gy0JIvwI*t%S2$rne%MT$T?HoUgkL_#_m0Nq=D>kFm zG^bmy>lJwQ>G*=b6zSJ8(lY{U&c}D&6CWR+->vE!iz!9hrPrJ}zZ<_;-i%gI0}dXJ zkM)u+@X16RPlBVPiD@LqrO(dDixG&Lw5#2N_)-&9Rn^yA52hZ1u5L(q#{Br{Dm=zc z+@VHxcQ4iaJr zfSllDqGMtdU5-E@GCn>&lk?U8G%5OZK)(YV(yS}hw7QC;8`cLbzrn96ZrhW66Y2xJ z#{L#KxVTOPLglF5tK%78yM=MHpR+VGUi;x${tIgZxk1-GJAhdNKlQiH)5SkMS!pu? z&i;6%r92ik9^Nv{0H*fL=i&r+g@c}n$sE-|s+h1nS;GzV`-b8x{5%Ruld_r5x#WUy5VG)NKQ?bmX>CyrlzK;NlHy!{Hy|qLUDlX1WEP0s<|}W z?3s?Mw;W)E$UJ}keEn>&BPWhT?nO;zGQs@DMp8n8j)q2sc@I@n{g9wbpH2SS!&32b zGvBWsUo{IX?L=x}Ky?B>N^PYBK=Sz1qCh^Cmy~Qygww0{tCEE(hOQWI%uOzElH39qN%9cRS?Dj2C(wMTEk z4xugcqobpH#8Bz{w3~>E#OC7On z`bTZlz66kaaxKuY@fV?__4RvOam)3C>D?QALtkyaTQp;EzS)`m0sJ%_XJ?+C{m6Xk zOMr3Ck0$Jn&9;`T-81(;vDdrXJ2+t9y=ya7%gaW=?=xAN)#h_~I1)iAq?o{!Q~Ra1 z-P$r#0D$w^mRo@4IUow zZ%1aUF7CC)2^iyZ^^P$q!>J~OQ z_pzkdZwNNN#bgCcALr_F)uWXBZ;wjSL%UtxMM1mozTo?L2Fx73+y50u_!BfQ2{~q1 zH$5r)S&4yS9_7`Il+@ADan(E;v{ZvnMPXQ|P*2u820JvtUJ-|<^}qCV(pf{ zjRXchHa@PH>%r)9S5gq(1Hm_|B@#h+z$*F+&VG&(&t_Xy9D-_sw%YqqIpfLxm{hH27G+xw2Va(VD&zCT{O1+wO#$;uvqN1e*}{N$1UI({XDns2@Xg{6#W7p@p9|_Q-Ob)r2=zbx8?!g$qr~15AQ|3%(ew!4 zwQHD8yd=oabnHOa1uZt{Kc#exFo6y%Z>v~Tf#@ylE&f#M9UMTDQtLb~pxDf5czduB ziMe`Ku>ry~Z&vj{@pl3hIN~avg4QTFIM{;z@!62}=L&?G0`ST_I)GStxicq$>(;tR zfbB22*z-L2g>jTNFe_Vpuk5x`b)u(1(q+OGObIX>uC}UXSZ5fBA@p|$9cW8s3PXJy zJVJBGLqPxPPJTAf(y~-BVrV^4xdo<9VLxYdNhI-GyM|M<1GOxKr<*U=MZ40mw;b-8 z7J|I#BoVr*L#z4Q40T_haytB^j*nlNhv$3ZhactHd|744fgfXGGxmGOT z<3r812udb}#Df)WU3T`QsyExfN6<`Zwec+|iIidWGM#%DN2bTz@HsWr2k0oFY+BXs z_5?x#0s@6VMH?+K0xkfUpz^Y^mN`a;>qEeO2SQjQ{eFx#nGxOZ3=S|&`kx9Q1O{FK z>g_vHq`$>ObmVZex54||(C+eVKQQh5?0Bl$fev;Nly;>gEuS7aH92{8+T$BR$v@mQ zwU7hj*gA99a&f89RQT02l{IarO448hr6+wRAOQNr9#EQ#ii&{Od zEmtwc(Zxl-+@i0&nNI77f43W1$17CXSE>phX2 zGpwBszWOi0DVaq2&UAHw+0owAv;dTY10_Zm!16$V11O?KpHAgomaC8}1vf8s#Dy1H zN^jB;fewPY*rx>XTcf%1JP?IQE7JI}GwU19NWoz7+bBDqutU}W*9htR+X+teEdfp8 z8Z2|!8n4LAe5c4|D62O7litexe4;PhoPUH!ORiYho3 zC-UrZo0BzaaLob8oC{4?q5`LJbFe}Z9|%Rm4Us+|GL;w&A{^0)iBJuVn8ZXmCQu~n z0W1Lvhd(L;YQi3HGYSfx0mLvpJKYizdPE#TsGAK|>l_4?;W5ziw65UI?<)&rJwX9D*`xh368F2j%^Y=pav%ujr= z3uUc}j~@xnanMZ>S(iHc;Es%|ii?g`W0^~fRx8l-y#n(mK&G4mbdHU_vLLf|C9%tF zT^j%r5|Qj)rWu_4&ZCVMzDEx8ugjoNs>kqSiks-@70kCVFy_6nEyS&y4>m@W;>U{( z#inpHH*F-w+A401-m6Dc10-f-lmP&l_wDCov^VZ*jwsF`-0VDi(8cM~2@`+#*rCxH z{hZe#(?#I&F>!J_Ea|eqr*OF;^y~K?l3H<4-zqCvuGiW5@Ne4x&Ih%Wr{xKjMiynu zXc9?ljlE`U58v|*6co7?4_v2EkvuS+>;BzK2*5&VJ9@68*94G$u!57jabAQg$BaBg z%F9BL46K#sC(;?yXI}{Judyd@`8T@~#adX(%Nn zB{mIklA#=e6`dJfc-}5QpI30;dF>vY7IOO=tyo%KZm3-y0{EKg zkDyX#@-wGnCPamq-DK$tYYT2^Y3YX{nvp?t1m)mptzlFquN8!h`J;LfN=Si~7f~`i zR)dcP)m?y%Eh!mLR<>U_R%YOPdH97x9qgTmlZkrlm(i7Y7f}=2E5C7h1E?>Zot^pl z%pH+#gIqy;z?XP<1#0@inutUHH_b}dzRVYP#a zU-Pm}L@0v=pSvY=W|6nHN6^mS{g2)o_H=#g<-^`&9$unqL-fQ4|1Kf_DTAxxOMg!; z@b=k_S9I&JV<-^tzfhy`Wv2f2?AQkI(a8O*|1G{dxc?yJ8`}@l!jlcxwuo3 zCK3Y$d#=ZCz8U*J$A0?;IgOm092NTUCkP*s=4}5{3MZx(YI%Wu;JuQwk05$@3qp4q6?8ES}i-Zr>sK2*PE9v`WCXweta^<(T@* zp>SKODUii;xwQHcm>3I}GzMsanDOO_MVqve$l>RuINR-kFywtPrK_GC`M8Hu#N6-&X(3T4!qvv`x`Cn% z=HYQ=y@d>D*%eNUi{rQ5tWFj2j35`)Ey z6Ff%;f}BI2Q{z#x_r^!g3$~eiWovu#WY2o<@ezjTQ=_0KzaWiKFL24gpq1C=bmKp! zR=PfE#N}W$tgI{g^!@vDYU(t9OuRi|-}S*K;4zhmN4%FcpTq4KIaA=sd62d3d#M`t zhb3_DbuV?rKcnNMiCQ@=FE7t-&c1ke0a$}@4->0wa6E~_+zM_nh(dnL=}7D+-WLgh zoQrrK-17;DbX*=RN-Z#=EJNJ1Joh_ZB$SO^<-?&a(*YfocwRG z#S8($;44z_WT=9-kCm*ftUd$S-q_d}3Wc&6p0711f%Y}=xjWvH5&$e9o^0sru^H;B zs&d(^mutfR*b6jNHbVqZu0gx({n+b*Dk@mA26|O2BikWrLkyJz(<;&{{XsJL=K2#x zhUt_>dbD$zTJ%B2lS1Fmqe$QDw>Qw)MfvP!zXRW7pwQghT+Hj_sgMvttJuILW=9yc zv@`^^0!ebcdJmVMA8D3P&S)^C<&Fj?B$U(U0{N$wf@KpEY~Ls_D)%2-5wWB(z(PsW!Qs|N8>5?A zz3vL$#}B_Z44!ZEVtl{#pMBLqUx}c!!JeC!XeES)k`S1hC$@*MMHo< z=mgl0_uhT>yLa#2{Rj4^NiuVunK^ULdEfUW?Cl#_l3R4QKp+r_yc|RY1i}M8;z<$V z1H-nFHX0ZRTwchl5fKs1ttc-8Uuj)mYPqUHEnGc}oy|d(4p4h@9v4$*b8`n5E2!%( zL5ma!#1JSCkyi6e-Cpq0QnhTpfmxCdGRgI>Le{c;tFR*PXLZOZ89Jz|TCH5IRe$Mg zBYrDNj1%v0WL7%SW-i;5TFp`VwyKjfw1@U^RxGWcs>!}5=$;xOUI`)E#Lv6T_|BW5 z3*_f#PjBA05Z*n;Vop*UHzjvp3?-%7m8G%}5w>Oz3@BZraGDQYWV#thZ6%P+!pgeX zPk@J^Bn0`!vPifY9*XX?Fp7L62Vu0Y&Zb(>#WO7d0hxYLjH`Z7Bh^MWC9cbFH*jNf4}`M$OFhZ`iQk@0aIweeanmy(fRYg{ik@O*aaVpdl@ zS-p4a_>Om)HuR9kBV}^rxfB#V7fF%{ZMw6wv)S9B%>L6hX(_@`ce{Oy(CIcE&}3=k zz;N_zMUKP8Sz(f)zW^AlK>jI3XkuQuVbX^`AyKH-6dBv(L!W9pe=CZsChJ}RIH7H9 zU}&Q&f;vV0F()T~0n!L0B26x`6R75Xh#I?pzfbx@6zZ@Ak;d`oSpj=E%*4bSE-w6gzD^epuOdI+ zpuC)Y7~b*{!lg+%VKpu-{hpteoylCA^4<|5C@7Zd5iSV!27c+@8;2kvsR0~QZr%^O z!VOKFLie5#p_S4gupFJvu@PgM#YMPkBDD5gNP4H_O-4N<5z4 zC*g`hmI~{$XXYEf17Ft4h&}Lp`&~`8*hrg|DRacv;gX2_&iDtIj*bJ>O<{-mN0}KJ z&&%GNCQ}nLu>FL1(F0loYKHU%q!$O_QXPpI?{k4{UGgtI9-{35J=E1>F zXiL*GHx!u3`|)xFU%GN8q< zdt|;V`pijEA29TMUA%)eQVC6R5E2q1Ws=Y;W?_10FDxXK%xJ5cR(`!oRP8@)PJr7Zc8fXo(gs0%chX)HDRCBW*kv%Cw(9&vdTG4&uv2G;toP5u; z8-k98%~+DKuJFIXNw@bVN$7N+ZNprkY7^rx-r+#Ze{ol&?NPW<6p~l3(WqWitP@AU0&Z!yTBGJsu@&er=jR1q&38xMg>)Ae54$+8ZlQ8h zu0LkaW98ziuh^#@YkwIb#mkfCxxW@~@s27dhva@{W~QQv@w<_nn^b3cd1MQ9*f@uo`Z8`BNWh=~bUyNomM#%TlFTFFOR6D$49I!!HC5=$wN_KV*%X zv-kN})?#qjutaixG$(2SWRHVruun~!ezt8wd;1H7{>zsyS9|RbDdp}^QL$Z|QWL&M z)?zn@m*$9-8I^-PwA`-{aE`uyI5APoVDe$xV2Vd-I%%sP`Nx-r8ou%nHl(bM-`c$$HEgI7YxK7+=S@$9@+6XfFbeu#Iz&U_J?B>_EO?sAYng6xR|AGQ_P&s9g#N?M@5 zl(WA{eao3}_UNLq4jUp%qMV$nrmxR4x%95mbo|FV;8~&=#dDboAF&?3t(w+ZIco3x z2>G3B1{|jO%JrJWz@Fy&HRn1#UOpZk{e<#DpW_|cM?}(BMHvN8`G^WqT_)2&UFn zI9os4+S)ofIf?o1=!cN9GK%r+ql@fbmToiYJ` zbjubB`}Jdm4Y){YNr~S|Fm;87r8cQS-h_3Pj%9?DLGnx|6wHhRZ)<7p;5ww zn9IfhE!d&4R1z_p{P6S1_y@!{(C8RZX@!JdM*Kgw6U!P?fAYfjUBf2}ue zl(OeKsu75h)QjTs3nHVbhcW7_h~CLb4Ij>EMTQ=yRE3;b%;p6;*h%p zFj~3f(L>uS=G3$2v-kLPB+w`2NMMdLPwLiQMq?oi!7PSEhpsp}v=NXnhhG2Rllf1k z*BNPl=9MI8PQpBB^xF}irw37&rttGR&9lS(O&W$4n|wUB=O-2y9jbCAd1@h+jPmOz z-p#v?rl3wY)$}xM@sZ$mxoHofw48!MpHA9DiLP)D-JKQ+i;l~R3)w4Y*VaHhm9QCS z4*lw7&NR0NiKbugEv{jA`TJjvfSCpL$-C@y_4>_LKZaQj zrM}}#5EK-QhbMFM7QBGu+NSCiH1P9y&0_Lb#^UlOrlul#C}Xt|W)*t3D8BOMnz*&y z9W%8r9ygh3SbxhyFPws(XuWsM!S}A5Uf5a+wD~3p$=w+w!m32<<5B-!xhWM`Y1nZbbVeycpT=+F7t z6j7k1@7U!kC!}Fhj$Uxi*U)rnzTblCX4}v5nC6SRbDnSkp4+{zk zfIEGQT37mE=JYvD+}&ZRxhW^7%Ss@;AO11_1@DxBkiN=G8^c-iCp4@Ru~W^>7PGmX zm7VF=G?mCIn^YpScN1l*>XRd8Fc7WWF52p0We-30>2wNMf1(mx%C94YL?H^ok>6Koi2W%lBA<e8mLZO&Bf%3&dx5kZr?V|G^HyOitAN*eEq|HK5$uWt*6%7_tCgf z9L~4@p*rNxmW;Pcr?t|$T<0o0`oGN@3|{N6JRzdi!=I^hPyisr+WI#Tz&?kl_0GVH z8;RCV21(JN^jgA-KIetc9IClWU-^S!jaB^N%7Fi++9P)frdu3t*?w1w*mc~My^rCC ztBaibh0cMAL&fQRX{AU>{u2lPHAuRgi?_l3_X`>tK;T3X-jR}R9~1qI=8H4u&R#SA zC?rg7p4=oSPuc`6<<`zY)KPW&LUS-0-c&AmkZ{3U17_K|Fg7tVc9|HqE z9%y%84kQv4@5JvVdmSJ6iIs%~5TIq)x1i3vmetd;7%u!fcnkRT9CvOxl{12%dukvv zu>NI4z9$7f)=2c?4zGUQc!r6~^DbY#@UbJ5aK2GT(%rbMIS_1XRpg@WW#q;DdwV$xEQZ0l@0BIqlGEr9gorJwnOPiYOab93O+ z1FHTeBxR2_Pr%z>m11VCPaTL`Bk6_v$P%_(#nN{2WCO$dZrzv_^~ZU-D!E28NpgEg z(p~)eJ(d?A7guj*7BF*}6(A~R)CwvvgUl0+?P=LBMGS;k&f&&Se*~J&(*y!x+GQQ# zCZ<2QPG>pmb+vY`n8c&bnUL7PepwMpB2pg{4PHIewG>XvLN&i6Ka+RLw6ci z-gU%3VprGH#f3O38`uAuC}Hn8j; zD^%Cw3Y+~ZOI}{SPR)hm;lqb)Y%=IrSf@<(Q`ke3`xJ+Nw+lgLh zMFHGsy{=Dq$=jtX{H|ZXVohd+$yRkqooHPmj}|GP14K{8v}3y5G!#NC>a_Y%j~5K= z9&=x2+~!cyWq6#0;5e9y@LOF@9b$pt261J%X0cI~#It9rz9OV_G!GWjGXGk|of)RG zp|{=zkL#7j^0vvS-QV8c29x}aUp*ap$_ziP)hsiBxUOMhfn!ZgPBvrOZ)+DJ{Be6d zJ^1WbFX-y*t+Gb5ReA_hRtt^ z#%!w6maP4|j!tO{qAK^a1=BP(gEm2Fk%60D2ol!5;bA^rUM5M410Yf0h9>~mlL;l| z;oy*e{d#+{gq{KrRgyKBx;(hQ&L_fQtdo<*zmtN3lqL3{iMWNl=ycm3EManPPq9rJ)=&_4FyMh7&4<0=D@;V$=jdO~4q-uIziJ`9^ zhWga*QT{M`LPLDrTIOKxWy@s^nf3+zZRMYO#d5T6?FhR{DUG+2mdy3 znscU!ixj25T|?as=@}m%CnO})DggqopV!V~Y6e4my(8|S;$)dF*nU>v!?iuM$C4i^ zK+o}}SyhndLou*hGgih93N>tTxZo;lHmS26L<#aiy=T&o@$>)|USelB(;LsOsGuk@ zU&TVSHB~a)J4nG7{vhXJPI20Wz7)RaD&-H(y%{ZA+ag7s{>3l$RR!qC89)}e$x|Pj z>#YKGT#a)gBuS{&ChEw8k%s0=e99Og3??TZB_uI(T5h8~ZVES(u~@KJD@^UGNIFW1 z9KNsQG0606wjJ}2W)_b^EIr-1cuZ)JfF(}7Aaywh80k_VUq{ck_y1mHIs~xOFb9J| z0rlV!P~OJ2h5tJSuNG>twCq9!;2n%m8lxn;EG&V|5t6v^Z=~v9fa!ng*#DpWi_#Ci zarRSqD@8Y1@+U>>g|iQ+Ql|uc?7Xd#10ALFW()y zo>7-`3TUh(;%lu~$D4%zo-%Enr5X8-;^DNY@mkp#TU%BriT;^n=r`UHaBO`({E49T zwO!epxx;gi*1|m|y;zjoTp1GiKMnqJHK2*Hfu7CyL&_ApS8h}GJWNhF8ARheZOrW5 zk6hYNKZhl-pRkdh3!Pz9{bWhHiRW#9X2(y_=(QjaMq<~OO{zcIaPLF@}Ah5`SnO!`8LYkie&-)|qc^t1s z&3IX?>F;A0H`x$ENGiOOxuwfQAd80=C6%R4vqKx)ZK;D;(6d#x%6sW$WdV{_KQj`z zG=}`$tFeRi;fmc)9$USQZ!SQj?ED(3@?`~eb#(#w<`aG_vDZn(v@=_xf9LMqrenk1 zyLawDNF(fQY`n3N!j=Q6E53-*)xxJ=s!X%A4Zl>;Qv2Qs@_1uvYO1O_rVDM#fldkw z2*85x7sdb$KW#}hN#pj92+Ls|p8J`@;4561q2$QqWH;8=$LAawE$M%{Z{8EK5;e2U zv51|uEhCAb>vqy}bi@>uHE|wxVSUZb*8!Xl4hebV?L2yl1w=!D{;{{6ogIwx0pxBw z*7x=6!OAsj<8Q`P>`FK^Vwiy`BxOfrtWImOlA*D-f8XELA2fvV2PrIaXji+^I#v44 z?8n7XT5A9xio-<=Q*cORS`QdnJGZEtUnx;Ug6#=`xMw6(ORm)kz*pZmC4*bEL1 zelz~2alYy$#r4eg2!Y_@;t=>VtoO^rD36=?xwzwAeO!tRy`#%lqs7Z0&4` ze1`s*);0~9qF7FV09MFPU*1}TG_k{k}X6#!TQjf@HHqO6dY zO&Hv55)u+ALBX+ZzLXf?aR248eYVz-ELl?%6JB>%WF*iO$*0-c-`}6BfhHv-g@%TD zXtZM+6>`F(qAs@#ue=XY6TtEY99h^igrdB>c7waUy7~k_F6im#CQJ3X{=B7@))$d1 zf*Yg|2m~VmHt+lFcYf4_9TFG!*je-PpZ;!~B4l5fpI_^_w;Ft#+SkS=H&VCBTGSKe zN%*9JIgL5+StIVjiE_Z%*l3Po&OJaeA^@URpqfWHa=0}`MMZUfyxU?u_NY9_JnUo_ zfV;T(c!1_?A?&|JN7xx%)4}*|@1dh4BvB7yKYEx8Fa$#R4*daMB z^mKgOZazAyTueM{JGdNBAj*xzHkJqt@$l$qGGgNSMz3c*PR&O|%g9DSLHJq1nH8w{ zWc4<}f=4mi`Iw}`Z}1GiOsNEMKB9}!&fq=S`%`C*up_ddrIo+e3^Kf5LCnKL(RmhN z!i?Mg65`UBa|J1Yn zOQHS)g!Pw?fiBo60TP4>=f(dyKWc|eGYh=I_-{oTQh+Y9rU$evctv*ih`Jd$GDWZAQ0%Wyqwfq5D3E;coE~= z16rJYF6x0l7_M(+A)xX>>Mfx1&`D0u6$HZnareTAW5=fg8nI#W%F@_#_c3vC>D4W~ zM}VfMFlk+wq@%sPg#!#E>0)65voL?|VFR;%E-SCBrt<-x0t9*vl9zg;={d7E@1;vJ zxqyAZmn4r<)p$?eu7cf3t1$CpmG+x>wx!niVjbz(;<&C>&OnsAmQ#y%Wdc_n3pp8r z>tl-+skC$FP7isdX{nTHnKd%bi17(uY z(a}Ak3(k(r;s#0J1qMBo#Gwn8hJpgzpTj@_gb*Qz4iZjPb=h=NvS54=TADr@J-|57 z-;XnW1uKC`Y);KkLL1i~59umeljGyGat7QmV8KdEK3}`03k>oi5L>f4 z{`26Hha}#oyR2;73HkZ)GBO);t@8+YUT+-jn-UV9qaNDy>q|GfU|oY-WOsyq+39&a z=SA?Bs;cgue4d^Q5{R+isjl|KHM0?ggq47xAiIOd&P3UO1sgki9JK9M$!m+vlf4rE z{nV7Cq=k!Pt=`@ceEj))m{1hz6_vntJ*tn!Eo*gmE=ZLc^0V2CyXE#q02t&~oSv#N z&Q;CMy-nCAA%vXUc+T{LQIk6>=W%QngQw?C`%oCIeoE5T^@+xCp}K4Wr--=A+Hh>_ zigC-yL|OF;#nN|HYQe6FiI0R6z^_|w|Aa8vsJ?`r@rlb`^B6@15MrvY&T*`>`7=4i zV!%>Cv$pW{=;6^z=HT7Aq&{a3Iw>w@sPAD@LPA49!E_EY6Po)%c2LjzY=WINI#tX_ z1;^QKPr%Vw922uWmUS!m3xPPbm=CHiFYjwj&DXQV`nPWRIR(s#;8RA3oYO%bCU)xO z>CVc^h$v@SEaB1VWKN?y+1|7UV(bO2*xcC6%;ujM+R8q1AIC3GU&Y0ZRJ1m(FPpTw ztS_aDO1u8HB!nz@SshH2xpVX}GA)!9e~qMFl(Dh3ovvEn_)G?vuMcXDi#?{sSZAQz zD+3OGEq3Fcz;$x4oG;=r6G7uc+Gh5Kxf_;j5f$mC78S|n6vfrac4MHXcJPb6;sEc! zj@5yJl(a@S53r`qELj{@wqgx_a+{uluj9+1v{`P> zvX6xH#1FT(lL=@VUHA0e92_{I3CXDX1xhI#z1nSb{o+DZo9oZbCr^V=Z zHcuD)<;xem6v5wwkSC!lI_g}?%AD*v>8p}fouPJmdRk?J&-4VEHYjlMn!fv8DSLQS zFT#(%)gwbqo+IM=*!B46%n^USi87M8Pzt+Mbui|VR;TV^6l=a*UkZTT3g#?~0NTGBO%Yi{Dny`!**({#6ew)?jQm8Op*} z9ZOhOtk4n01i^;cD-{e3r)sZ?arVHf9LIJ^QDI41V*mE!z6hf)Ls2&ooR%DO7;)D0(UD|?GF--=&+X+M7+ zi;4MNUtgsO^BtluUSfwCySs}Pm*nkCr2VF7@~oU|&zcNm9fIbqq;m3 z#Komt*_`T}JhNDDLhbcIYi*~xBXSH4`_b1|wO;vre%|7uqK)}7-n+U)i>CJWVCyfv z&0d%&>8F+z7KISLHJp2AGHh|}eYG=LqFvr^U0I%N zRPvMv6A|6VuEk~8oVjuI%OTh(oR=nYmF4rwq^+OV>E!+Hz1eXT>Y?3aWGYWqMN3PZ zghX7NKw~4*?{(4dO!|%dd$W$v>dLM10_OAG>hPUO5w<$QC+BV4ZLsRvy+IyL&-3Xi zU5_p!yNT4Td4t8pTiS{i%Ssc;iO|Q9oG3+{BoUA2bT62gL^yWa`=-Wg&kk4N3k!Zt z9#$&p94=0qHYO&|?3*qZe5}r!fH!kf zEPhveCUAJgPxGU`1omfsFF5F43e*xpIy#5oHw~-jhko5r$ZD7MUhDnVx1wDq& zQ5x8R>PA$PPQEqu9*;hepw(cy`m^9VDwCdi7VRvd$ehC4ng#+<(aWVbw6qy;6O#hL z_uoHC-a~wHo}1k&7TjQVqzjb9cI`FxuX-4eGClQYlnKC$I9pJUY;fiJpp}hw&i;>vus8P zI_O9STWrTL{nRM!h}!ZE-G2b$#KGq(5Q=1H4{iy;Z4VamuStMki1Jcos5uibOrXt`XC z_3OhPT8tYEy@cBdsnrjT59mEWFn(BePIdwor+Vs8N5{%ok;cNp0%yFrUVQ#m zB%7+LYE(8$r7l`90ZLqh1q`6BdOOK}C>cgT>+a&747Rs*ae2Aug4`EnS1ifRec|D8 zCLK=xscYr3@v zH5sdX++beW zBoFot_4N(y9KX%@C_u!^%X?9OG^&!@@V$|T4J!Xh#wLjb8;E@M;KQt3wt(d@-XEW2&!wd#{ zZ&hK}UrfhRQBr>W`t{|I1tldVF(jTF+WLOF>fpc$-j$j6hF|%rb)SlgYSuJ`KKi3c zA{yayB+aN=&YI3{kUmbq&epcvupygygh8R&Dal=cF?g=UXL4>XmC)t) zAkB^O2Z=wc-kX`_sIhQxa;{V9O+)!SYrSU2#$xlg_^gHwtiYeKM>je+u73KybNE{s z7#OImtbC&w^z!A)84mlt4bCTu4-gH!G@qo7R-?p6_^*$-#hGapRK#M@iodu~DAW~d z&+hB1L%f40q0Y{37bl~t$i+6Op<(m2`0RyGliQBvyLV137i!AN13FN@EavK%thf?&KbQ}^!O#kR$vp$da~2N{BaMB!DnqpZ--2a&6>(BA0iXvQu^hCSKAL@_h; z`60iu;tS#=CGt8j2R(hqXs7EG!h`@)P$XZ;JTm2sj3F5{Uxx0Fs6?3CqKS0pHZbZ<`?3A3fuqjp((5dRkMv9VsF zL1CjHnC)_FA=3BgM{fj`AQKbgwm$R+GD3C*WDQedzWcBTcHV|W4-goWk&>zfZ=Wf& zjf{){vj;Z`0ryC=%l!gBAfI>WoOpe4Xk~pb58iupbTlM(RoYmr&q53q5gtn7lbwVx zuP2ZKJyoE_tQp*Hfsqm`pv}v5GUIa40qMcOhkuas4y%M<&>dF)39@OAazgy9mtBcH zb@)M$FhWihjL%+XKu5~ddo`Jv?*?~;3sf@R*1UtOfPx318Ue=5o`>SIH?FJQk3UH8 zxUBv3&}o^ifVNppzZCBc2HezzVdFQJCzrMD^Q4S>njGZNR$s5KBeLU#M30+}ixZ74 ze0=;5j#%2-+MhEpXa&n=FD`_g)i8{IAk>39LQkn6oe<1>_Z~fZ)abs~2%CP(?O0*N z+oU;gz)BuYLQFh2KW860+n*?w^Zk3GV`)VNfj;q%AtLYPj*wT9*vGE-nh{x@JW76k z*KzDR0N`SO51pKy0i@Ou=w$BX!Nh)~B$}M;%4hXw0LIQl`6^XsM~9MQ*FTc*zXT=WL&y~TJ+@DP}T^-nYAgWaEf>`6+1zwo@D`nI-ap7b?0 zH<#C}hh^x1HKv!8&o@3UuBHC6Wk~!M?TtEZIrI^ZjOjH;Q)l_#TrjtV0L?Mb@5<*? z5JL^%jg5>_hSI zR?2S(e1CvM86!C(qs?=81%W{H491+2@`y7BkiT|UlBLo>6pnb~BE@Q?&oi-V0`l*}@BkkS zj_e+USz`0Fi_bqFWGKMpk-9uC|@7 zU1$xICJZ||K8_)dL1Uuba%VORt=I4+3Ld8c>VuJyX&_ZVgM^9z4-fBvz=?Xb(DuW8 zlZW7|S6q5kQVq@aHER=P2K>sZnf57;|Te$8YAMvTmEZ!`YXWhxr|%wJLu0tswNX&P`!c{*xE zNXkGBr1a{pC9kf z)(?$$jaztn}r#XH6O#!+(q zt9)2%@EAb&;Npv(IUO??oBWU!2anf3qZz< zkBAxpg8`|e9gOD}tY4$jEPDBKPbBQIqoMq%MmSv_4{ z_KU48&84Y?BXe^~I7KWKOG5j33C3@YOKWO0nPM6m8V_&R@3a&lL`hlsA>HZesqd4g zR8&21vL?I9@{b>J?Cf>`xhLWy0*||F^afO!KvV?nv{&~tEYB=m{7T<$?s&u!w8H%5 zQ+Bfps?XiU#l>gZZS{Z&4d=*08(b`Yt+BpL>aQtbl~%8JT-+Zmh%%Me(9lTEA4(PN z3=20+2@MV1*w|=jXy^=myh=4ccUO{AQUDbh6#u}&-27kD7h96J`M6aoc@#_VUr{^77$wBSBwZ-_Fj?P`YTJ;N|(bl#En- ze7wSouOc4%)K_~?+K4E05>8^a(0jA>js^Mo6JujP&0l7z$q^}3R*V*?hzN`PT`N)h z1Pqdc0cs~FCksVtz-y_VKIJt0?le1aq& z2}A{|1gZv9v(wdvfQxjuu<-W241P$W&#clv_#`k& z3IrnrlEwl-l;j)a+hMQAI0$LT%ChPiNFWeNNoH&%?c>Nbq`Utl0`cvIwR|}0yyZ}i z8Z;2GRS10!X44Nc1EUv1`A^zQ{BN%o(RyEt@8>ILcU#^$#v zYOs&u$^vmnI%bG;NZPVeSdTMxBuhZ#=-^q1nG!ar2KVnF>K!-#D-!<+s((eZ|Jn6F z`TKwG`kyiKe^+|{J)GtEKLVqFvvSxr~XJ;e&K$$Iwc42%FOK0N02jKsD z%M#3^_(-`rYST|}ED&diin_D<-~jar18C_8_ikSZK)eBtDE?J>{Yr5t;>Bfp2KkH06gx_(X4H6doL|v zkVbZh_$|}Swx|+^n?V# z{aWYx+vc*X9*B<>xJ-nRn|o-q^LT=`ehk@|1HY}Agcqo!CHskr?6}0sz3|=+%NkIz zPVlp^v~-yH&dSanZZZ8P2%GbAGCQj?bo+cdxVR_(n&F((N3)v3NQB(q?0J%X#;}0O zVC|ItPJB;!w(?%pViSjXb}+tW#{;f-e`SX5i!EUT)?@wO(vc0Vqln zIqM`4M;~Y0?*5r`F&1KXiz7DwOlwaXJF06{+^6f;H0si(ML=57-pGDxn}>=jB}+0a zG#J44D;DkppMB)*d5<`%8|mic^sTB&|9ZhzJ|>rjHf{q~RZi~74!`@+TJOV$4}HUn z^#RU^C(?+xa~L=4R;~*W+0oN8z^V_T#4cGlIQq}rpctG>I9B2#@axdiUtvwn*}n1! zVmmuKV9Z*(Nrk+(t=Bt_tQ+uZ8!=i4K?a*_c@+G>^w6+f5UU;5C|{U*Vn0X z1nZ2~Pl`s1WHq8_#N+)$eP$=@_s$FXbijH;tJ!n5)7iTdI zT%|VJuHIqZ`*dbJmVq@#HcI<;4xzFXbY?OGRxQK#=;0zUC8e#od8`)~ z9~|nt(*9$D5%#mvIt&qAedKTQ0grELU zjOV!6D#$q3I=_ETg>1blPnR1S`*BiMzW|19s`-fW43NROjt!liE1Q~p+7hlFQw#A3 zv+5~xZqKflHp`wp1EO>B+mq_lI9hS{W?)yG(4GKhXd%rgte(x|AR zpc0Kp5*#efqr_|$K0dzIuDQA9(o&_-&UZtt*O=J&f6$230ofdmK5s8CMkc1#!)~f# zTlLX$PaZfNet3AOk*_4LppeXO^EK3a>8YTdx%m%gLuu)dq9U6VhBRO^3MQ1!BPS>K z&3o|R!EBxV)kcb=*vHiv^2i(;x{VyZP!GZE#;0CA zFN$j}W0K|x|JED$sh==AH!D}KP};C5a11lSX+X72#m3I&u|Ku7x|*|^pwo79St9XV z4)7JZzZDggXS}9Z{`OK%PWiK1WL8;SW<@ zY4z<4s${M^3!8ryXDsqrCn7w&Z$mkSii(o`7keuZWTy0}00a(u@b!YAuFzJm+A>0o zB~{3IWpg-(ffg1uuoS2wc#NPhLYqb|S4f;=dRS0ACo`xce@Ep-1GB>sSje zkR>1Lv8n*CmGx56l)Y~`Y|~p!|1P@P9YGS_mAv!V7q#sr9thsQz@h1ye#eYMqgDI5 z4#={0f2vUB=i>|i964gG^Bk6b#&A9t7Rlw?D+lD1Ra0MQt;=R-%@-A~R|;%zZRI^v z9`AV5ezx@*DNAStPD7tP!mjZWjOm diff --git a/doc/_static/gui_cut_hexa.png b/doc/_static/gui_cut_hexa.png index a47b1d59c0d9b80d1ff426ddfe1ec09b8b3aa645..e47b3f3f887ae7bb6ff9e812e8a23595e63dc96c 100644 GIT binary patch literal 5885 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 Y@n>8VG9aoafU_VqWo@NOsCDH30C+X$*#H0l diff --git a/doc/_static/gui_cylinder.png b/doc/_static/gui_cylinder.png index 2d73ec4b97c7a6468acb9079e27d218052c21017..e363dfdc3296992c530aa8d5466a12ed2b44d18f 100644 GIT binary patch literal 7357 zcma)h2UHZ#w`MbdB!Q8f8G2uvTrdX{Y&SWi4n98q+_J_Jn5A`BG;r5;vUT^gbhQEO9Gza;@VZ&M+SoX{**m!( zV7JNu0D~q{L00GW`@IY=6LP!jp4J4S&Sb@LO8ibj)?%F}?+B+OYF99y&5E;&F$TO` zamJ=~n4ph|{Y34TJQT8XHZ_+ex^oeD9+Xd?l*r0*W7P%B?Nbdu=sk#yd!{BwCKxWh ze#yaaE;J<7bC&8QBQ&JO!AuY=hlT(35g9qT7l43L4=@r0q`V2jSpp~YY#jmZRLcgS zstP$YW95Hvj!?HKuqXhl%7>z&JE>zcGqkX&PplzCh@9U5fS(&?HryJ9_1#cRWM0^9 zWOQ^ib2r~o@gcs&zR45cCjB2R8JY0pW=wDBYq5xrp7=4shv zO-XdbscK66o?D}e)|nw8A(M()1z}9~WNpgKUbc3m5^jZ#11XWN;-#i@`ctxZ335M4 zm&y4kBQNCzkulG(vQ5N*wOj0#ZkZU+2R7~-nKINhWns?VHS%ln%i=PZ;NS@T_$U)C9@Cw(y z!2pZ+MxU7+4dU28}hI9-pkIGh$_b+!kHytge>C z!Lsg=xV)5vw5@-y6aMaN#y61S@;AJDaPtHjQCs{%G>Pqj!RKbR!EdhH*#m)ppmjF}@hu)%bM!X+0oa1mo$t za<;9j0Bsl#?VD^YUF3V4pIeiYjDq>9*;h!>{_2P@EL`7xhKdDxVd_k0#6P z04UjU(H*wNk?^Tk53134I4oqvT6m<|3P#E&*3c+L}rL_?fHN)e{r!d-Ay0)k>i=`1G{y?10q6 z^|J%<5xQ{YWe5fB`9is=thpbC33xAUT=leftrntrp9(;ml)pY)YAw;fAxEoeR2Vc? zAMm#-*uN0v+?ov`zD`Wk)`biXFr>u`+HVZz=zOT<8i7ARRF6tL8Iigyx+R(sI-B*V zxt50;aK`qYGeU52VA|C+006O*_YEjO(r-X;mC#tya` zi5{f~9!#S?U0kN&$eOgeWSB9ETm5uuEf`gNr}{)9CwWUtCoU-H%Qz*XX9{m|F~f5g z|N3G_+2>5J$@@YXs-1I{S~xpNB_ZH!5344*D!Hq_WdqRc!c!jQL~ddpA8NoS$U6sr z1;@e$vP0`fSILQujajxjBfF?|KYu71Ry;I?b;{)|I@BL#tb1Z67QJD@cc0_oq75G0 z@-1@+atgT9DVIVeQYJlv?1<3Rcq39*L=!NLPe7mn!toPheTRJ&Xy@(xfuhL>3EHdJ7l*iSGX@SQe;Ywz`&%kNVriH9b#PIkVA}Dm{){v zvb{a$`k9}psp(+mdldZqY^+Fwk>T&<+vF$WG`l-DG}Yd|3?iSkQY`JJsI&392(uIO z^AdS(_r8|qOGpULZ6YR*{W-TUo(KMtOM5v^q*p!g>*b{-SXta)ns|R*)%`8{G+A6F$$0KHVp(xm=FA^^x-*wA>B7X#ok(eG`wW z7nd=60s;aHjUL>*+}~$2YFs*$_>$?VsYUJf-}hZ6(u+8%JW|U&mJ}CX;Aw4en;QHX z-8*W;38**}fJt)yLbK1=_CyJ@j&!zOB2q;SK@98L{H>T$5?RuH+S%C|)ETrflyymZ zjQX`pn>gLzwlVryOHxuYr{r*CDE74!6A(7982>1|x!F%!TbqB#Y}Dw(u&xTRVS~v& zXdnut%Do1bodJZ6p%M2U%eL&zY!)nx?pd@qQ=>W{_Ud^24K^M-S?||iq69tm4|rKg zX-R2m&o`OmOK8STQq zwYKDB_I-G7?k6rRj8V7_zjne{eI7zN84zpB!9mDEahlO| z2zM(C1R!Z*xHKV2?pSjcGvP~~L^lM=^DvfB19)N#0idvffszQHj}RCMpCCe~T{(kC zCANR{_J+!>MFtiY7V0OSFRz*Mw=cUk_%dbntP%W%JObXiKm+XCzd=;aAKI)%Br3-;>eBkk z>9YX!_4O}iKHqhBFCNydw_1zXU6_Hqfr*QsFE;yJo*mr7x3WI&{`BcVxB?k7v$=nj z2|Jn1Q(GJy9Q$W+WPtEi(cqP@j5!Q?cG69`j}LXkJwkL1q8RVl|XAd7bAzVJ&*ekm_k=SvMgadBB$TUlFMVF4h4L<(Gs$HT&SvtFL}e{3D*1h1{F zt;92KQf8S_&HH8|rS9H(;<}d?7q*W5O*cy|)p|y3Wdhzo_;S|q$bc_jd|oSvH8+A9 z>x!f%J*79eu5k5>u(PqDq@Xz6nbX+h%6DXfb}G==N87WQH25lx%dp6iJ-Uh)PE+99%qsKZ*=rU7ZPo{=o?C z_!9;VI^#=pB(uB`}JJIQv zuiN)~4&70Vc>>19d09CRhG|JG16<01QKM(7s{Q9~8>_3Ub7bi7|NK(-dx%Rt>URC{ z@o{~0oiL_NC8GSzWPE^RRA8H7n;m$80f3>`W9@Yhy z#rt&gXl8P#_+9;U{kL!5!cy;eHF$x@zA>1QC*3VZ02YN zj;!M0`F42f&<5P=xKqIr7UrRL7hQc?EssZf{`!&u?k~m0Ca*d;<7SJ8dn*T-hBKgdXnrr|JBJgIb-Bk1r-R zvem#>fP=%Jj~2euK^(5C;r<^-1w&co8z}`&dy;ev@8wxa>$C*QopXbruKxu zW(5L(MXwD;W#u0D&G}G_lUR%7A5-8EgZVz6&+K7r>N&kd) zZbAuzb8E|M%f6TMl^fNjWpF1~gn5VIK;AH3-Gffg%n;x}n(!>J+uPe`f8cJfj%^fu zf!EXsgKRGp{~y?6>9vcbLbjwWwWy=K!fObS} zD><7ZttvPftJ-KWqHFGwhC%7sL?*$qtc`=r9!K<>jRtll0jAeRgkC%FSYINzM!V29xI@!419r51O^8O$?vJVJ3DU<=g5bWFnZV>?9bM4U$MEa zT47>kw~%m~h~G=?fy%K=Sm+G8-rinNm7tFbK0#pScr1I02N=C`_V6GfCN2nR@x$|Z zbW0J%@9N>9H)vaWWF5qfj)l^z`((j?l*D(b-^^LPVd89>@Sq`1mG1Gye#osx zKfZ?BVYNG2yQ6S+Zf@ttLs{tQV_+`=7XXPb7v%M?-PH7S`p}L$gu&n*M(ytIswIyO zUiEm`W6igs%!l50e-(pd`<4FMTS(5xFxA(;m)!q>vtEHUJS^-}U0s&A!+H-hs?Y)3i9*wi;DCYE2MmXf0D}q(4fiR*w_#i6-6C&QTHh}x^KBIe+^z= zU+)Md(dN`HROh_#d9vL5wX~EcPodyz@sm73At6vdLPA16P&a-Fg|NMV%$dvAm-aUX zE7EAe{v=-Grq==hk5N>#c}(RBG(|~G8{G|= zs^*t~M$ZFvUQK=WzYZtPU65_ng@lH-9(B`WVPU6lP2`RE!PB}W+IBF!EKf{K zjKN@r=rSj!rnLJ-9p~!}{l_-7VLPJTWa0LzJbje?`?}UVMnIU2>+#RtOeX0>?OT_m z>gq`U$-^kR3$T4xSJ#x2iT)sYGmlZ0K8rh@wc(9udt=*((|PgxDb@1C+kQTqqXnw; z^z!TdaCkkQ<=*nU!uTSARcyAAd#8Xg|LGg&UAzca}T zJna5VJn$M?cKuQl#}e{?lGNx|a9lZS9+ALq1HeAY<|sOG`2H&4C*bW22ICP%^G+xs7$Tan5h#9bhm*B zdV=2i)ql0)MH*R5RZ_N#f4mZi?t!S#)6-?n)1qRd`sh(aL`0g5U*qRj0j`GFrEVkO zz(09gm;Rf;fz)oHR7Xdrv%9mqyAy&wRxn|W8%Po8SX`8mlJdov>pAeunf;vy*oY@F zXMJZUy@B`SI`9(YF45H?>Qnad1zJf%8|j-Kc+r(SRC5B|x!?Nwj2fP=^-*$X!BHfS zs?NcU6_Fe{RbdS0cBOiisb>fJg4j?orG_>azK^$ta;ivp&;E1`yeH zSuReIF-iJ;I{WR6Ynpb3vp`ZA3$ySU0s?{&`;q6^%~i|gvUAO20U3NLR-*Sg1bsrmojl$etdOI1CBZR zMJwa`8?!SdTnMz)I7}_lpJ%FZupvJe6s#?HE;f4}WLjFLvHSYBnmn&Av83Ggo=jVvKwk?t!!=0RM}~)?kjVcmXwuY4o`=tsgUu=aHP;zyLX96 z-|@5JQr@b>KUG&(*Rs;;DvJPvE9^*)&U*?2QTK23&wH|bn_Rmd1$I0bd6UO|wz(yX z+I&6{7&^&~?sIv{1dvC;0C7&y-(%y`?kk-Hl?J;L{i-}vS>NCzWY0@?q)d&=s48W~c;sB7OqHUY&06B85mGj_VU_=IDy+B3^B&_aGK z3_-G!iF0bGs}BwhkrLkSQyF@jaBN)XSf*k$QsLAZOhl!pt81t;^^Uu>2*=Xwin2Ec<cYY?ye ze;-;R5akILug=VoSR?8q2qxQwXi z*|#{h%U^ro7I6B}k}mR+irknBvB`CR`I2S8kIkp!Zx^o)~*Tm>Tx)(?6MY|uV zKCTMu$@bPOsboQ+P(D7F-_u3OaV($d14KP0rd7qJ&vPKZk9wGOKk91aj6J3f+4@+6 zGca0H8V^A872*`5ENSWn)iZkUXWpP4)Zz7>@_es*oSUcYEBzSZ78yLSIu l%qZ^dTZ?@fXy=PR@SmRfHGUp;W8e=+0I8_1P%dW?@E^77v!(z5 literal 9391 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 gAN%njsBZVVk{UZcjo^t7APmq8DFt|et<8 diff --git a/doc/_static/gui_disco_edge.png b/doc/_static/gui_disco_edge.png index 6368cd7e7db57039d2bd3d2d4ef1fd89f5b2424c..5013c53b187bc5cad656bf4af8c8e77e1e1cfc70 100644 GIT binary patch literal 7809 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 literal 10985 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 diff --git a/doc/_static/gui_disco_edges.png b/doc/_static/gui_disco_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..ed476c3a9e06b5dacee00e1844cc9996a5f6b16b GIT binary patch literal 9240 zcmdU#cRXC*y8lPi5FrsHh#nF(QKQQsIw5)&H3U&dm&i!S1Q9`$(U~yD=z~!bC0g_v zWkiY2V3cU%?ws@e-ShgLd+t5=-#dS-;k93T&02e{=kt7?_u4U!^wepoS*SrE5Ur+$ zsv!tO0{lsmLv`WL*Q2vw;EU83tZ76=MKv|2{}cH4hM$_5-(xRlKZw1L6UfEW%fm_7 z*TKih$%MVZ5tOx>ef;3eh7zJi*&IFk;jN>S`#VMG5Y{%V=$4uUcg66brk^~1?{uzVr71;7D^u0VPTEWvFh>c!HA=ycdF(noIROb>1VS<$LY#t~yQNIFqg<&AeySrt@ z#pnCGvfNc29U(oAihX_X$?64H7!0=XE%t%Kx4o?~l!C|3_V1phUX{$CrHkOsu0+go zzf#DrZjLI-wG>Oc<+-&{ z@2xFE<`nLN-OS2L2anC)NK<2dg?-Upr=*l~MUTmdKKO|mzCr@ASbNqoLrKRXYJDup zHFw&T*#A`6+DxgJBZQE3o1$pcpt{>)t`rGFZc&=Bb1=us0GMn17 z$iDQXfvfSI6yD^5(%UR>T(KxdM({x8kMfNw!}ix+&R{WzdqVTI@^L*p(DUuqD+vju zf~Gbb6FVxC6<)K^tl*Jj+tr6 zL1O{=Vi|2+U0NuNyk>p!Y~Y( zZF+wkyg!&%?LPMLGV6gUxU&zQM8}~hOLjvnpOR~_?cyzAzwMt}U^+^=vF(O5`k^}C z5S3V!HwTULUpepiHa@@^JMP8rzp@I7ZHy;)-m33CjOn0$X z+yZnn69`2sC*y)|d-*Y-z0DKbbZJTkunD>;|0uNolebUT2mH5p-ndGakryP^<0W;! zH!%>fN=R?U56D!_+vDSh;LbW`Qk`$&6-4mavDK8W3wsf*C+u3KCrLf@B^_}H6+ zjSC8zSuB!GjNQjC2l#y?qhOMe)#}R#idmrIYIs>d5WXpQoqJ<2a=E?o*mAvYimaY9sTO3p>~s4HbC0mf=WmgBaspMnn!W; zin7OT-(p+E#UiCVSoEmoYOU|xvwenR+wG4~RHu>&CbHhc_AOr*?IQnIPkAk|*BR16rv@5E7eb$1U1yH3@3?2(&%dN@IT zweW_7>-+6xTa<|}8)Rp`T?x{f*g^SqO4z26))48!0KR_XnI*!cU(qx)j$X`ho4)Z) zvr9jmaZB+8P5r6sa^Vw_py-Pvph7Ot7YQ=Zr`I6RFg?hQ4iv?mHn}xvZvlw zMxF09YPBG>AQcsrAoCzMH-Ub_&cz)jp+O15A|t||>)W!R;MCva7F?!n{B6UVIs!=n zt3$T}&9-0DvR>v;6iU)6Ff5A4#2X3pPNp%6akq6$y}_YMOXEJV&5h5-;~K5}gP#0W zjZiv|nPWgAk*iiy7!M9v#}!~H;@D(zF>2<>3@QJ#=B$W`iL#*~LzHJ&Ll_lT%T;n< zBvRoe7jo~0LDaYtG848;APUw!G&MA$;a4pE>jWf)C1viIBQ2fa zALzke8bqCBUKI*uZH5kzURcIn4galMg9_9x{4VvqSHQ)^#kmO82*`n4&e_0M6>Pv} zaY;#rq`S%Pydy;VaQCf`y1Ke-BQ`xm%}EWR2R9N(LdWB)*T*y98D1l}Z1pQulru~a zX~26B z{&3Gy&ppq8fPjcuVx3IgjT<*wtkM)#YC3=IlAh3AV!Qi3pmfT^&u_1DAYreDuYNyW z-lj}j7k^emvZ>eMpEJ53T6>E%;*9>(vlxcgW#Zs)ZR+KGZ&PA`+Tq}~EGuSeyzuF9QbIxWZ@={B%xbfr*MELr6@T#H zK^n64>({v-E?GClopstA75HP3rKRlR&hIQxOcqINs^g>sv~316Q{U zNuHbMUmY$UnifG>B;`1OhE43k!os>)?=&ekDdH5hnM8wrZ|686B~#lkM@pK$d9H&0 z$PRqM6y7QdT(vmZoRRihc|=D?r_DH=zho+yjj*`V*T8LJY%x`^Uo1wH9Ufx5ozjE0 zZ4O^UK1MXj`kx)|SG$i})L0~@vVx8emGNuuHF#~qj|ybMZkC$r|W!q)Z_N{w!e3FW(&JC%dxVsXjxuLnshYQ)6>(J-+|^7r%j*VLkUEI z?|q4Qu_PFSGX*7@+I@W)IWjVmsSu*L)5frRV>K!&s>+%WrCqDrbDd4%_XMJ2FRn9E zXq(#3)&Ket@~-OuC%+4#^$i^ZnELXyz`$TKGBTm#j@*ffiSFX=k*bk4sH&`!vNA{k z%@lMx9!H-m=VTE)iE9k0tgJlToJvW~bpGLXX9ga-n7{a=(k10%GL?(ImY!aww3m(M z(-;_x#$!+Ea%fUS*w}b!NoVewvmc9!rnm<=@%KXfmVW*4)YjIP z()nIx&Yg=~-Lk)8Ct1_QrO{^PV0^St=Mxgw)q`uy%ov;Urluz1nJ!-Rouvj9P&mZc zUOOL2)Ypwq6=9>(Nt4jzPH^o-$~m1JY%Vah32U1t^J=@zHZ`^*Zyg6n2?z@2<>lSH zc@v?RE>NYarY0jRtCuR){;231a>#82rR9#TGBWn5lNS{gz03K0X3`%RWe2Db^~I(! z*t$6Yj%y0oOhcw4$H@F3FX$^APU3P@Ue{ym)OF%&!_Vq*SIpl#U9f98kZ>FMTxyMN zI+%2~#`=XFry?$L5s5_B*%^)g=Vr)~g2anwRbI2iF_h(A&DKYOB)6G*|C8MVlzHXS z*H@HGXcJ%r=(Cf<+2)AzRyrk#kzB~5hsDR6m|0hCpe(@^r=5m&R~7T=W*Y6Gb6Z|T zrKYC(vGAZld?jC^JEM~XO>uR;%YAS;!DRIBli72)rB7Ur0N`Cn$J9l>x2|xOXpZOe~8pr*SM3D)6vP%_?Y5k z#W>0m1LR&HzxAYu4l{Evyc)6`1tuto2}c!I)o5!Qt9j|fr0vG5ooD;5>ZWxG-j$L0 z(cbRlxYGH6lrktNs5es~y#^iX>ogr%`{l(KZ1Ze^Fb$K?Cvg`&JLRA4+RU`Ef3~;g zHXu*m-rdMMjDNYKt91?a$RjN540sYSMSdP{v61lZc~VDQOXxsJLos_8*&|#(s3AF4Q)KoirU1LtatRd18%k zXj-ra*IV8JeO$7%ld2V|nsBbxHF1)gC9mjZ{9Is63OZ;D_~0DJNBRP-g1Lt}uy&Q3 zI8G-;gY5dZsX=y^{;Q$+hYni|E0OK&?|4MXf>Z}pL2I64H=2j!mD68abN;gvGXJ?T zKwZ~zs#l_w%*%i!D>HB=&n_%1EX%&jT|vG)d@TxGs!X9QI!yX}eGJtS*|J(b+$_6q zY-Kh54I&-Kt}q#yRITyI?$OTC6P0+qczE2U7dC~IoYMS|zG)fg`^d;hW}CpAva-8E zLf?I&sy`VCNbarxmghamfYbbgGH_|Mesqdffzr&;>QZmI`BX)C!~OzX4)V7wxxaH@ zUKt$QoYib3a5ndb!zOgD9auexbkq96rV2-rB45?UL=#V->o$=0I+Wy^oO+V&zqY=n zV*?*))zDd)D0j#ex+l$_B6Ssf;nfB7h!xSu~1Xw*FW!JV;cx$6Sh1~E`tnxgPq+(CXmula`!AhKV*qB!5}5v?k> z#CQTd%LQz#Y%GRu9!mz}xoM1qgi=4@&1H7#OP8h-E8o<7kA{1%{LD$ov*Ck2XX_xybL9i+?&#=9wE1+G zNOw3~7Yt~|>F=E@JP#L_e+@H%qb*Q{(p8=WdHnM7VfS~_Z?UY)D=VKN!I{f9+1S?B z)`Iuf)TmPF73~2dHZ(M}eQ_>EY}4KF*>ssfGH+{F+;#iY2IaO4YtAGsAeojH4Hp)( zr^|Y{1q9S+739VndKEM!RZF@Le0lKe*RRbfjA@Y(EJeuXI_CNFfuC97#2CFInZ_-T zI;(KI^OrA4DeCL$>+0%P;e4{P!Hz2$$G73n-1bI-2unr8cb;c_bT>BQV_aV6g$xZl zAf$co?eFg&1s!FDA3xRejC&fDCMwO(Y^mg4;-B*@SRx3IYh2P{W4YSxosphC^)^W` zO$OG^$aL+=I;C}C#ARi1`UAsZ{8>c6sra1K%+se%>hWyte~j0@adgdYDR)iy-L`4b zR{N<)DO%e%6#u?{`A4|_i{ggHisK8L$2@<#N!0Aex7t;p>vc8Ct{N+=;t0!T-o(_$ zcl*qRMZ7O4qlL2{-3IK(o69#dtTQ^!4r^1yE`51rxiTJbBXH-2=2&85sOUS+X%|hlZqSGj7%{$^>qTJt%gM!^5f~ zuxmr6Qd>(q0}g-s^&h?K$jf;8UT>}e1%*$MEo` zl#~=4jAEr`*`e5K?WN z$<-K10m5a zl<@);mrtElTb6Qkm<=bn*cXYJtjTJz1X5)x1LWwF6j1J!vt_UQ6#t95|9^~||2r3D zqOpNa@QN*Gc&#L;r|r@UD-mYzRgmg5=%<%b^yQ9!hd(Puzt-m0TPK;{x2@_l6Y-r3Xw zV!5_5m`6%U>*wb;66X5l3kkn|<|P`MJP4vgPn}|t+xx=%^h7zAEw(7I0iY~9eEVA55T41>P ztGEZym*bNo{YzP9*4DZlGv#6G+XFuna(Ln+0z!L|gaq z>M$`dJT|cb+Qd(vG&nZLP*X=V%d;WpjcPEa{Zse;c|v=trP#3HFfWV5iJz}OLvqsl z_w;f+HETY`ZWeAnh83#Zn*AF6Jv~#EF8Y9Q1V5C8>zE@N3_=`ymzIpZNe*OBAetv7o#=v~A=rMni*01%25WtbR@GrAgOHWq2 zt0P7lP@^$8?3U*iEr4vlefI`nKe)3f5s{mlt9ZPUm-AKSB9~kZexlxgy*FK&m6df> z;uXbZ+5OQX5$k$-@a3EGRY1D$?(R0PbiO63*94G@;k?YI=R1+OdjgBp8T*})fT)Ir zg~o<*>2jHx9bW(PXhy!@eJ1;UT%K@dW+vcD5)u-C*2c!B$^d0TGwhBVTT{hbD=9Ub zIyZ@VPTvn!?IAR16;)Ckn78a(>qR+gooxf?(lPl#paa;StT#0(}lTaS1#QT(A1(LMZUyscI z();n_N5&r0z~JCg^UBvX?t0HwYI3kXb*H`3v!M>FtaR-1oY0S^9})Ta-y_1ppFiLJ zZtBuhz84GJI_}&o1=+F!cM75#z%Fcn^-Hl0U;Xt%ug8JccVSgh=YqRIX!-=wT ziym(1v!2P<3qPgW>aohf%LUj@z{aGHdAPf|x|$_dY{0AWD~eT)J0CEn&BCFVm47WQ zK3T`y|4YYV?0h&Z1ijDf5ozp&8nRp~#+WFC{(e+hP?k+^8IjJ@Cqn->UX&{|^LJj< zEPQnnNgr?!z*R$(()tcqnLLugx%Gj6gJJI}U93T%!7sWNed?l{;q)gB%G8c8o~9|y zGDLNfa6&(ix|M5#2BV2s88*`Yj^+N}k?ntrrT>}=Tbp%5g`PR2Qg52&h0_xXWswwE ztsjWn6SR%tP<`X@FOl{?9z&YH(#3=QoocspkaNY8KNVn7Qi?e`0z|N9rurYC_&<91 z7pC&Bi)lnn-tcjnfRY%{Pe`NPY#9yNKOw;?J{-Bv+QNveKgcX*$NiqvnGC4(7nMf} zIv%}qxKsXLZulosFMh}!AH)yv*fwMyVFOy^)q7M zS-^D3egdKoKnv{2tC@bK^H4$2$zs?enWeX1Pv3R6!M$m8~r;0WSFPt-584pg|Mswi=HqV$kobbZM`HO}wS0CgSe6sYibe(p4RV^3b9!P`qkzz2m2J3l*2^6wTjEgg6W@Nmp*_*BQ#a;i(F zOvphAjtSfe2nk`jvVU}ZoFG376nT4}5rP5&I)be%c~kJl5P%b%ogMqKEw8QB2h3R5 zo6GlSDMb*YmTgz2FnF4Npd6i7%Um889HS&7tHst~v2_G_TN@k2d!f1Nw(*1g?}*3i zXkC$3E&YroGe7(qlRn2#7<;ei7q)rI`d@<^!0Q89f8GV)bkWzFj=bNJ5amq+Ky;{q z%)a;W(v+9;_fO@1U4|;cfQkY@Rb5fBg>X7<8?iYzw=?os-#kDeO}whUzP^b)Y+nSn zd<4M3&vy)#Vg2g5FF44f6qE1M_^Y1pw&N zk7wK$Sub)W^69Qk(an409PFAj1PV;cFy0m~L=z5TJw%d^()a=~{0dUfz7*EefP5x{zU|X5f6eKZ}E% zy(w_#3BmM@i0|>c*w|n9MHCfnii~9Co>!jw@aK>ExtD3H1TDHG6wrPc7F0j)fDCt!X& z{drIK;`HoJ+spvu#fPKtaK;2PO9XEJ1h5GJPhT(Gw+taK^L|3xTWC@gOYw8ct9f+I z1f%APvAHp}KE@O+CZW=wXSQvf%{TFP&2Y&>gKApi)B$;NS0u~6_`lR0Wspf@UH7Tp zv*f=tX({~bCA*%qQ{L-{hh+bA?Js#|Oa+`KnS3TyzNSl-4HN(g`X5LpWj8L6{5L0^ mfNp>5auh3f2hsPQlgQm>&VQB)lLp@H0con~sg{E6BL4#2RvNgw#QGDXbB=kO-KkLdha#D=)Dg?)DaWC4np)GdJ7WWFhpkrLGagm@1pk_ zWiq^z*YA7x-TU_EGiS}5bLM>Zp1sy@eb<_B4K;<^#5BYJ0NjQszR&{gHTb$9!~u^s ze69hY!F7>^=nxVT&Mc`ff*+|}aa%7K%cfT;KE zjcJp0(=lC^%^DxsfC}>fxl$el`Fk%WW@cv~fT7>mh$!%cU-t1^00^l1N{&~Kx8e6= zOM}hKzw`v}kPNp1K+~72iHeG%Q=KQjngjA7R-2`m#BORpn*9D;Nr2tr6%R*7M#ez= zCw}%wGN?iVoX=^z?zHwv(QCUeV_y&nx42q?u_5-?iXSVx{8t(6BnTDq&>X#UN zNn((aGJ6{JZjU8F>8VV@AWt4I4p10Yu%5NGT_C{!J1ex4TJ#b9{Z1E| zrY4F;c(9`n703`lm`xZU?)2pKy!blG7`C&crV;zIQ*Pd~&3tc`^Y?jWOG^+b{i6cZ zuL8`v*K{;Jlzt<@W0<~s8>xYbpGT(U6%`Qy2}*fdMXv77`TcZTD|YtwT0Pm@$YeY~ zsFo5~+?!j_jd8TwoGWBa1{bmFyt>N?4!6bRU!@P8!ac<>`!&VU^VKq5n3iI|GEpt~*bCOcXw zzm3`Y_2+D9Vq#f>(v=VDP0TIZXv9-S#(x>;UJm8d3OUjxCahFC{XETOq6hx!DK6N~ z)*Tze8tX&tk?uQ$6}2`5csi3amCv6qFcAU_Zlh|F@R>WP!5~i*qhB?@`dk_B-u2bm z*(ebJ;K}&Md z?J$K8bt@`Tf)pt!(da@Yv5h31V6GSZ9oZ4BjX zMw=DsP~d55YacJPe>~VhdSrEt89!E9bp~E3TKWhmtsZUbPTY8jTHY{+SG>2x!c*q~4WeH<>c*~0iFZ1H+D6!{+ z7x+L#BPYMXe#?9K9fP~E5za8w)_-Jv41G#{O?_ro=PARHYW=>ymEnxBk#MU#_}I+e z|Ci~{FE_P}HKagMHsV=~G>(_p3}8sIGClvc4pE~?3P!KTABs2-@f z@9UIHHuRXztC>mPo6w+6q?W13zjw4(HSK> zm3kpBk20=}?iP5v_?=cj$bEfBO<8q>2BN4KW=b*lw&C$pfv3-SASeU7$a_E`{x5$< zm3zxX0focubqhl+nlN!5o>&^i13IsSCE)XyFOQvNR%$1j@_rVmWr}(pd^TV=t#L3M zzGS*#rr}>aKR=(T#I;D`7!E((o=|6w_ww;tfHifxtjs0P7L?KzQt&h4GzDCpO3IK^ z6um$h=t9!MDqa{G8V=Maf1Hna1owc=mOYn(43B8Xftg(D_d(k@hjH6_aB+uCf0~HP zcrO}_HsrHG-7P&nIbmmI4U3MhsjkKcgoJ9BmzTYc*X~nN`gnS3P$w$o*%PJRF*94J zO>UAvT)KAeF+q^`dzRiB85xC;K13FY_~_SgYlbziye6DCotGND{><`jiIF~4g*m

      K4_1f1)av`;u+j$A8Tl|{W(8$|p=bdib#obWZ*S2IMLj(|JIH2XY))aTKxEX14|Mc`nMQiS6-_O>@|TaGF}_uf zc{c|mb12g_(;zMBnYUi}FTl?qs&5fjG&as@m`f;m8HyOu5B)g6U`L6#cl+#^bu39G zrH=ocjL=jUJ&EuMvqik1?2udynV0qEI)Bgi{|T-^Y*;cWg+ejRwx z^?Gi76*Rr4?<@7#xO9hmzLT?p+)l9rtp4Vbt@;nd-o365Y)D$lE!a$w9>WYQmt}4 zJ~=7ub@Vz<3!(sm91boH7$&Eqtu8C4-*nLSV=;%k-m%<4Zb%v(&Sd!Sg(z@mOfyYs z$KjqwE8(%cDgt{#Q@Ukad!H$*@?G7);e--~$|ywBi#?*F+u7Q(XXD9_Q<77Sl^sZF z`a>H0+5;Sc`V93J3dgi;kU7T$a;Iar3);I90|hb#Z99X64@4p|q(MBq%}dPqsY0)6w1~0jjI351kGfLt+f*s#BV7rtsO2ruXUf z6sHb%bTC`1_U1>WQv`<#3JT^Y5>MZxvM3kkH9~zY zDJjX$&IYandLO3F4HZ2Y9WAmS{2~`BxB$yf+MjD!@Ac4AR*Av^UR^g~TPy?dePzyP z57ySKQGGXH+nC$J4tJSVHWr$%&907;ueeV9H&>H^?*ju|m^KG{Sy_;2pXT(GmzR4T zEZ(RtN!4PGx3ac=#3h;;8+&+uXgQ)Z77-e%0D(Xh6gtE2vbf4u)%+zI+?Og=unfPy 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 literal 11093 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 IX8P(s0Mdotr~m)} literal 11356 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 literal 10990 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 lOhTQOo|P3B+(L468;xM0Tnk2^fOkD+X8cYF_? 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 An*aa+ literal 12824 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

      PPK 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≫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 diff --git a/doc/_static/gui_hexa_vertices.png b/doc/_static/gui_hexa_vertices.png index 6c7fe78ab74cd1cc775f7456ee3a514bd406dd2a..795e1ab0868782191f75eaee0508287f62052afa 100644 GIT binary patch literal 7566 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 S0sc{?&`{M;seJrA{GR|*zV#OX literal 13920 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 diff --git a/doc/_static/gui_join_quads.png b/doc/_static/gui_join_quads.png index b81cf111747e0f44ca454bfa5b8e7b1d0de657b7..66411a5f3b50e348fb9db8a75999bd437c7f59fe 100644 GIT binary patch literal 10461 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 literal 15320 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 Rfp6VHUP&rQ6hhy;|3BfXj&lG2 diff --git a/doc/_static/gui_make_cart_grid.png b/doc/_static/gui_make_cart_grid.png index 38d04c8edc112282da3f9815d3ee7ffd72f8d28c..f401965f902424501f2bf761797e9f8bdd4cdd0b 100644 GIT binary patch literal 9581 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 O!gwvMBvlG|=l@@>@jqSw literal 14243 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≻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

      K`L}+<7S5mS-DF{+}9?p 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 diff --git a/doc/_static/gui_make_cyl_grid_irregular.png b/doc/_static/gui_make_cyl_grid_irregular.png index bcc3025b2a7c68e9219e8ccb0cbb1d30fb104583..97c66d4e8684578edddd68b3d19d3f89771c63a0 100644 GIT binary patch literal 13285 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

    1. 68!<>3+xe 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 S(m!+nz@#LnCR>592>B0zJ!0Dc literal 9921 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 diff --git a/doc/_static/gui_make_cylinders.png b/doc/_static/gui_make_cylinders.png index 3c573e6a1d077e3f9f0b161171b2c5e27419a43a..11c83172a4dda082f3756040e8014a1579c16e3e 100644 GIT binary patch literal 5315 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 JawV&m{{xAs)6xo}dFC>;Zz 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 diff --git a/doc/_static/gui_make_line_symmetry.png b/doc/_static/gui_make_line_symmetry.png index 614d75f4ac0010103fc20d94c736c4fcebd07550..0897e06d0e50947f78446a182cebaaf73a410c39 100644 GIT binary patch literal 7406 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 Wrg9En$QOJW1jtD%KQEIs@cR!ONxEqO literal 10387 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 literal 9255 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 G>;C~Qum)HF diff --git a/doc/_static/gui_make_pipes.png b/doc/_static/gui_make_pipes.png index ea23eae07a9ecb3e26141113ca5b8075d0c63d7c..95dd406de0788bd54958ed804c6bdd9c01b8ad60 100644 GIT binary patch literal 4959 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 literal 7063 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 GhyDjdj?c0H diff --git a/doc/_static/gui_make_plan_symmetry.png b/doc/_static/gui_make_plan_symmetry.png index a45eeae420fb500967388d7118fb0f0a587c76ca..dcbca69cf51d60b3880ebe122d9d2d929eaf768f 100644 GIT binary patch literal 7374 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 literal 10439 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

      @zj)+4 z>6{pom`GjmsN?r<87Nfx@#A^SAK7qzQhItN^;jg*&ezv>yEfrS@aa?FS{!0uGCAs> z_$JXL3A=vnUBU_>;^MR+5L;8zfpQB~`Wv8+OZx>SC2DLj9wd9FSA}XERw;>joHFXM zrKL}pVXaF$C*HEMvWLFf+S)9-Kn4sB4hp-r|DSO7fCSH9giIU&%p4A`4M$o!8f6a5 zJTFd6UE^Zw3y`B>)XZ^jMC~T&>FHD8@gV_#v`K-`(9)hp?nQ=#aPji8!pO%u!3|V|bvfGxL832Edh@d2d*~(7Xe6(R# zPKixQI;p+|uQg-U)Wjy0n|qS%p(@Mk9WGu00u$iFHa|Wdu1}V4wz`M`=0_M{H0<1sX%z9|Zi zx%l}-1q9wvF9H$v_NOf~3}DWv>S}RT;lRe3E~3;*^KSU|wmq1jQ2-d#=WdrN;0*Wu z<>-Xm1Tn=fTdw)esL{gx&0Bphdr0iJ5i8!eFpF57?rD%>UXPuX5T5&r3@^ZlqzlefxItS4iX1ULOLq zA?e%_!BF$aN)7^<1Pao9BXQrngl6`%3m#NfrhYYwUuX_xKch}aF z${(<)sPTR10?zGp1E5_sJ=zgW5~(RE=NDH#ssvvR?z`+QcHhJ&NteIjOrJwhd>s#* zi8{ZCe*


      A8-Y|HW+o!yD2c)kT%K@A_l<7_VnQ$X#1=e~W)0u>2`Mt0GtZKLoxd z&7pX;jM4Vg!MV5Csak*wQm+Up zvBmVE%&lO+0S3_J+96Z}EDCsDzstEaz;NVdZfb31KMWq`jLFSY;Ttb{Tge)lkRs&+ z&sk}YVV8gT3L|7>A~h@Nb!hqjqR3<7Lm-uJMHJ~bc>HLFY%qYt55TiW&4ns_^wiXO zxw#3xk{7^R2dp4?=JpOkkewX>!y5qz-0PzDK>0B0Qmes&j*gDm+1cU5;nxq?Gp>MP zb4f84b~G?n5BrkIX~DiEg+8;HszVIG4aNRT?vd^@$rJ{B2wb}!JwhM`ZUU(eLY4mu ztoZy^eLFx5)YUeWaI>gSNG*)IW$){{5_25{SOsmYk@O=3C`o2yS3d173Xi`N zgGcBAOpoV~elaN~8T&Li-H;tHB}Bo3+O=k0<=wi5Jd}VFeB3C_wCW4BwEM1Equ%ts z^hjX~-|xBF)d26oWmf(Y0&sp2V{U-{**iIB+X@n)d%@Bh2Zz(rJxESX?GXqAR86^b z@cxu}+`7f*CrfFZA#W5F$7?7lsn zD(MB-voAGR`=%kn(B`?hx!`JIgqXv7Z|~yyGfvimvw1{x*ydQl(x|7AF zd=|JBLqIxAQA_hRYm)}<$t(?8>lC`WsXJU7^k~lmM|=A(At43D#pVfDfJnGY`@F5E z$9DSnr{pWN{zYj9BE-5Lf6c4q<5=YZ(7(h?zu@HLT;FAvQ^mV^b7NyeQc|)PA+2jc zftsR%6EJk=qlFi~0WvNwK0a04XLbC8{)*9 z+I!mGfWZYAnOQ!s(xiN<)6>)cR1Z|8OeB?Fny98p8EI%V2q?L@902YXAe4~-6#Sf= zfFC%duoZ1Z;$KoCz!&Vb)8A~;8kwD)U1U@lZ=BfB(2%#FZjCEOd#o*%&b0>JrOCV; z#;7z`Oa&ZB&H=3hen_>L!)(*FR#v3sH88cb1ibiauij0dW3uYRFN3@6W))C0M(>K4V5~-8D zFHe^6?=cPxL;&N2)xhrV?V)RHCq2#>=;)HaH$4`1QLi`bX;YR+7MGAtOF-Jr@Tqu zEZgjqVgKVtn?ZWI(fnVBUTWQfJ?Exu!S;aVJyqkTIue$Vk>Sla)inH=gCozC!r(i< z^D_8pqX4;Fc1{jg!gKfScMY&RcN+oLCU|#lZS8D#T`ObSu}XM1v2i9bDXCNuP_Jpv zJ^IHJ{!DtGogHm4i91^YHZpY(jijeD7~Igx;l{j*R4s(5B=YpnqK<( zU71^b5*_~m+yOX)gO5+-$&>uOH%l?>sszj(a05NP65&A{4q9nD(F-()HY%q^M@9hs z2}D_aor$aj10&`}t<91S(Kz}?2V9pKBGGMXCKjRNoLQEg0j9cEH~(J|2Q1$n{S z81DJ?!*J!WD)OUwBs=llyIN_wRUwAVx*X)ss-6M95iBZYJf#OAA$lY~YWM4c>-Au% zNh@`bgOd{rOiNccAuevB$}6~c38$ZMx|%m?3xPnmb$+z9b%_CrwgD5^J%DHTOW)__ z1qAKMAnoA2JKyfY2x?(#vAG2u5@K&17>M=J5Oos;e)(FbQyW*r#Ke*gyDxoOgDAO* zFBr9s!jM1HPYak~^HM!#b3qs9H7&PY%K1@lo~#!0FJD+iHqD3C20()QvR)xC>j!(& zBohR8Kc9aF6yK0uAZeM1?Z@WOklbcf(H~ROYiosbxw_Y-KA}@tNhvJydQyG!hF0Jm zNW!%U$#=l#H%RcD(QdviI+TicbF31nuPcam6GpSf2mO)u$)dZWP_(@_kms$Ng) zjHOsf$Ngz+WD#NeIV&gUpuSUodB6{V+B25k-cD(+#UI}_8W!vW!OX#p>V7stZr7=_ znyS7~k>x!I^sUZG&t%Qy%z)z-m6O-jB{q%%NsJWC>xVU_zJ2*Z02t3e-wJ3eb-{(# zE-%gsZp}MBOXy?}c;{bVUk}`RMa4mGns31z)wh^$-vC{OtFXpJAe9i}2ir4^fQoS$ z%B~Y1vJ{n;t_K3}?DTYXm%VmGH5gOmcaE*Xr!Lo!HrsCuBp(Fxm(3rG_2@48_Qp$;1Yd&-~ z@VfW&6w?>TL{o}FJ$E_`i$D6Flv-R@Eu<&^NydJ5{tmA*p|5Ig#nHo8;vdg_?or4$ z-^d7%B?aaVo`bIVW7nmZdS&__Ti!Y?zvPXyN>dI1$}WbU_IOSP`0$WSF7%h>Ef9w7 p|7RFuR2;yvvVDZ0bm6OeFYlLd^!up_0v{QIUdySxEC#>({6F09Gi(3= diff --git a/doc/_static/gui_make_point_symmetry.png b/doc/_static/gui_make_point_symmetry.png index 2082e7ccd2f34cdd1375fad123cd70118fef9576..cb32147d23da0492b99776883c99930872b808f5 100644 GIT binary patch literal 7020 zcmbVx1yohtx9_GADU}eAP7kSccMC`(jdVzN3lb7iB5>f)-AE%PAP5{9Nofus9fz*B zzyCMxxbNNX-57U|J$9_I<{ER)HRta)=iDD(tIFfykmCRVfTyS+qX7UY;3IH}jS61n zul%*Z8=9Mxq82tb_WX+4GWbg7F01FR>15^ZW#(!LSUWnsvt)NOceS*1bhB}CKS1jc z0|4@SMHxvg?~FZ|j~0>cS)bEs7heZi$_t#K$Fg+k1FOA>3Ov1$eUzcariOBpO#okU z-V5^4NF~;fA*g`lYcAtA~{4B3)g5_EVm%1oCk5~#mKgFfpBwap9P?r$Pj zwAxxuw-lsZc=%K{O|3EApoJz7oU6K1!x14}VSL+_D;r>BL`gw0f3{mP z-%!!J<<>9f|dbeqwCwyXyJwtY*Pbo_t)U>Nrl>RxkvGhy?%S&^apdVj3|Rhl#h{ z;0TKg^Q;h~FskjfKC$Y6!{@Y#PCd+FHcwvD7g=pky*!u3orpy+m)4b-s4FFP2O-QjI=vkvHEH$# zGagE6awEkQZ8dG@l%k`1KVDnZ79HK4C*M(FaK3kUyJXLMc<4OWChR>~yeL9-`b+nm zl=H5zJusv-lt`P!!-11z!I+tbJcuf>IJUP8aq}=X894j5m z@yxRgyUOW^j1i!N4&7~xbZF?FFNI=7EOdxpp6$747B&H+bYt(LLR{9a(6PMGf{{pr z-6Kw+tHj20@x494P%JM}9H)zm48MIrzXTQu($J8Q_>WI8G>b?&kmJ^Cy@J%jd?C5V zS-oG>)Gv>dodqtpMSYIJZ$`;(zSIR;3J|)0vxkQTD;fWO+0k0Z@!8$Udo*cnM4-BCfA1zC0+g+_KIz_Aw@khY?`4XAjPJ7D`;96`G;nf0Yq*b^EEMpCM*z#XUX6ToL;M698kH}UPfqN;_Q;P0IXj4neq+Q# zCUaf%DBXjZhX4Ee?(%a7u`nYNbSWC~*`5aq^5d&|{+rF@$ zBq-=lSA1*tu*c|38oupku0rjE35#>;y)Jj$!AVzEVOLfp(=rxQUwr35HJo{?t)sIQ zLH!9cSWWz$;n#eb2sw$#WA|)SK|w*BXb>&>GOXTEcw+a=;ZljDirx%byo}0)Kp=N| zcz9}@A?Nm~SIr0SSEVV`GR!R+^xfYI_9lN z&Ew4k>yW)whjZ;_3QqEmyg=7*o}*ve=lV`+%QvMpY|(R54tn=J+iUD)=}Li8RJ z0a83Hzz3Vx0QOimK$t6uLL(E3DiMi^5lo1O1JIKH+XU}$UD^RcGUEr)TyJc8<_KlD zF&|{Nw;LNWe1cLHFV828TZ?(VLxUu$cHgYHBCffC7XI-gb2 zA9}oucf6*#%LcEKNh3(;BEzBF1t1xa*zTfy_~<>{P-if z1)UE&TQ5&$WDPlV#~GTZy*XKh?bpI%V~$ERi>5m2?=FtkYR#>g85w^JeJpD;NQZub zCT4Wq(sx{;Q>dTlWe~s9Vn%wpu){_5>gwv{$p&{=gew6fBU9Tq#KO;?3gY4&%_keGsa)@y z#jIE@`hTZAe?_ty>>zYZJN z7={g!;8Tm;bbd#RCS`XlcKZ4A=S;O(_tNxDTU#3?kV>w1hS=@C&WS7;J61d580LVa zyv#e9Y0`Vr?7?%uau(R*%#(#8Lq;b$0>HOgD=Jh>`gmwL9-AM?!$a?+Y2?rn*63rm z@Bn}JJNn(*$XTu}ZEVfoB|VFAsZXR$!n^OH+-(m%Z2ku>31<(cm6U#kB$Y%;j7;a8 znk$UP?^sUP&%eh2_1VOvGbipJ@gm4;|KfT@x<}$Y?@1wl_T#w zxma>;t5=hC;ta7#2YINZ?>l9eH?~Qrr~+5k9&ST)r{%!07U)puzWQL^GG8&lsL+_O zozYpnEZ3ZDwSRQ=6C6Gq-Lga`#Q^Es@J4>@u<&-xcO^TfM!5~5$jG_K>$#?<5MU#| zvmr7%deCh|w2yCS+9ZfQ$n>>O#)fmyc}{NbYO=2Jk@LAXB3T#0%DVE0R&$wdrrE71 zt}(77>;B^t<{7E8V7m?OV5!ODTM0qCp<-M@z|PK&Nj2l5weN&8yu*8Mj`s;>9(TAr zdq>rq)Z3@eh;IHcXNAnBcVSxtmy08x-FK!`5bq^d1lXM)Ap_bE=69AB8v-aa6F;Z& z_)YB|ly;Bf80W?Iyb;2$BQ1?sih1o*Wk-eWJW_-pwMA** zLT;F*Mmzu*cbb>3yC0odCTCTOWON@^}8F@(K2M!FO81fAWd>hx-R4mXWws zJ^9#46|B^ZZ$+On1YceGx+DnLwN(0Wv4^ope;}98%IyI3_4RvXS7(}Llu0?+4I0=^ z+Tf9q*z~?gopr;m6Zi|hdBC2LPA2X+iseRtLu0* zPoTPp9iT2Z5^bs;&hp~<7|0hZp%FtvLxR_?cMHb{SOio8V45H(=tFR*x|Fzouz9e) z?tXo?H{IJ#@|5txc*AcItu?JcRn1Hpe^;E#VXOME`fx=2+J7Wdv^xTi`h|Z_A9c{~ z`Z|N{XE;=FaA`!`)zCs)o7lV~Xz4CTIy^iETQKOZ^&D^l4yl%hCco73GxIQfhFL1U zQmVTfB<_K41(8N7e)2+YjpZjRo}HbshOx$NP+H=k&~UL-SGIo|L{z?MvpP!rk*uBU zxbFzpr%AC)XaBR<=65-CeD2kj6(2vkQ`I&wF!=S{qNt$IrTKS$etwgnOTCx9=7ff3 zqUO_UDpB9xePr{fn@t&>kZ|v`HRE{%&hX`B7n}O7!n6zf^qtz+#E@WVvw44KhD0lY@`ad9n zQu2efvwFPAVLx-$I_1#Bh=D&)pHJ2h1p?V@M%R91a|e}8AmxM~d| zCvV8myBNokckc%L#jN#9*Y~?8BQv&Eqi?Omgzg`m1 z#&h7ci;bk(EC$ovufyT*x8cCTZ5Q5DZ~2&0svdTzLCnRKZ}x9Cjwq) zFi*hQ-ik7mD-dQ8r5C%pVsxV5(*u}Mxib$Y0l|1yU>VqaZpe{xJ8086K1^#BVu<1# z+?^v}h_6dV1PG=Y0LMOX_J`b8X1*eEeQU=}{#03Mawzekdl@L1+WJIp7@Y`bA486~ z!L<`_5vr^ac@)C1J?!N-KCZv6Wl%-LQk?o4&CxskebH!9CUCL~3#||X$;AAuzZVv~ ztoEPrIi$9@zK=HjwXN-UzFS{gJ6~rz0TcGZrxH<6*P1J=D=ub9K6_rK;d-{=-26NC zz~Pl%0sx?rq5uj|2D${6^Vj=eza#Zca{CKZ(+CL>vAB`V`Ptc{OaH&r*8v`|KHeBk z7nT)4tp12*P0}GTVViorxW~CL;Pl0$-TyLH(8*z@I;XsK_ZTtA`lTu|DoVq4smFU0>Z-cL@u;^p|%+DFqn~+*81iSv-2Y^H1{FIh<=<1nAGRc z=D;<29psQP#1B|wh#$U9O7+CHs9z>5emE8uA%XoC@sAp#`2h8WlN!wj>0&^tTT12J z#8ZJ36`cCdY9z<&Jr}p(G%9yD88sYtTDueO%!I<-O)K#g;NpIU%J2~Q_m?Rqz>P_@ z2kwlmmkz)mScOY>=A$(T8w)8`ss3JQYpDaw#g>oE`!gV6vD45j!&B3zqsb|41Fmp7KmDYEkNS%PliBb(`y zZXXC=`4v+LITS~CTJBT085tQx;8LR6xwam8tGTmeEvU?Xt*`e0xvcLbuBfP}v9a-Q zp}|?{qL3H{~k&Hf||K|#__)SKHNZ>NZC=k;KB_i zyfg%1ep#qA%|A;5xj`cuQftzai}y54QYWOwb>djn{hU2CAF?kWz6b^-oc~*8aBmfi z!AMcRsm28Tk66ipNr(a;PfNB)Snfh;z31Z-ysDm685x=48^?S+8SCzx_g7o)J=mz( zwsVI{; zDW)V!5${9i{T1qi+pX)oq5N_$~xFLT~t$ZbbG!S2c@#~uJ7&A6Jwdo%h9)w)JLIj#gU|t z3kV1>H(#qX`o^G=*wP|YINH6iw&1mNO0_KNy8d%#x~hx~CAdtt>Jt@jOI}`R;UCa( zQ;hxp48w%4n$4oN@HeRz+XKE;WpT=?J32bfH#nI$%1*fZ_*~BD_MPoaJMEU4vqB&? z&_&w0M}&mSEBh-e`;rsx9v-Kk`!z+bedJD%U!tABW1egOp?|%-aSYXy<3ni%} z>V?OYTr{j!oH|t)*Xuj+zp7iC8Mr>(>${t=ONK=hSp#9WHce>ZrsyaNwk3-l4O0zI zm{r+K+JBdIOoQ;PMwDq||1N1<14tF}C~boUOx6|8&FOnEYUo2VGBT2q=nD#pR5PLc zPMM3DsdPeM{~apK3u$C5D5$TmpU5kmpP!dki7qWENf;kjN#`RbAqfxvu>ZS8Q%Sk3 zv{a{{94r_NxPl~&j9}VfOeU9EC0lzag zdixr^o1LnTs2{5!QkAjh*v>611dL`&ZVtojZET)`{5M9x5H7>-cecxGKLz$B?#||& zJUl$?r^?O1J*+D#Vt%4-W|otZLaH*c))zN20;ap`Ki{Ka*+9=uPZz#gD!+L%yEotH zw9sOyozt&d>8dm9 znU0U%=pnMvBsKM8JTNHq z3RKW(uC9M#!tG>Zh)0FsnE)Z+i`=SlUXg+pHaadqzkF$MS?fJJ^8|{^%XyS!*m~_a z!hAuF9xj`YBl(cnZ$YkM(k$@JMm0uTUt=4Auyk)kMMZU7Y%OX2Aj_0gVf2lUojta1 z!ej)*Or5}zQJJwcvN9Z%?!ZZcq^JA;_woL3K+L<<#-?_n<_6)D zL^2wHLeqIf6y@S8@$ujP7oEVrR(LIyGdeCt6ZzwU8XnV4D<7Sd4E~M)6lGOqDy2+A F{truRLE``b literal 10023 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 I=&KL^2iNLxkpKVy diff --git a/doc/_static/gui_make_spher_grid.png b/doc/_static/gui_make_spher_grid.png index b24ba0dc8a3077a1286a16f8416f64206e4f2a27..38fabf1ec749ebefaf01fcd4ef7d8d1896324b3e 100644 GIT binary patch literal 10153 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 TX?+6l8OSRsMae>mcc1?sU=srs diff --git a/doc/_static/gui_make_transfo_rotation.png b/doc/_static/gui_make_transfo_rotation.png index b95d52248b653bb4f6c0691f0e5360ccf729f2a0..354b6761f0ce0b2b869523c1ac93d1a3c73828a9 100644 GIT binary patch literal 8873 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 W^&@?8biiM201C27GNn?6KK})VgvCby literal 12389 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 literal 11741 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 aPOnvPTeU&l9@u&fc_ObWR}6dp=6?Xa1(KNn diff --git a/doc/_static/gui_make_transfo_translation.png b/doc/_static/gui_make_transfo_translation.png index 32d717fb4f57ef5b11e6bcaf559c9448beacd1fb..4cdf38774716fade5779b67987bc042008102f9c 100644 GIT binary patch literal 7319 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 Rz*mcaih{a)x$Mi}{{mH>nWz8& literal 10924 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 diff --git a/doc/_static/gui_merge_edges.png b/doc/_static/gui_merge_edges.png index eb0c4f2e365f7b212430f9efe12053d2859b102d..bb0cde701d32e794444ea4741bc7b77db8a7f9f7 100644 GIT binary patch literal 9570 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 Dee3W} literal 10724 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 diff --git a/doc/_static/gui_merge_quads.png b/doc/_static/gui_merge_quads.png index caf75e9b863add08889bc55fd6a772eeba7a871e..6a41f0a5b30eb994ecfbe3331e3d27ca4b8b0779 100644 GIT binary patch literal 10033 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 bK_l9KBa%HJGWFm~Z@?oZb;Uw?v%voXwt*I{ literal 11245 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 literal 87863 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 D1AX>` diff --git a/doc/_static/gui_parthemispherical.png b/doc/_static/gui_parthemispherical.png index 3346eb862418c8fc917bb4464a695c64aa78abed..052d7a192f6584fe9db4027edc7e2e9f88301b4b 100644 GIT binary patch literal 45125 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 Y`(?e;PJ8A$&%vKv2B!M?+Yg=n2VV9QNB{r; literal 30030 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 diff --git a/doc/_static/gui_partrind.png b/doc/_static/gui_partrind.png index b2ec679e0385b95a6f108eea01147b540bd0e0c7..b6a03454e03d976e126db0cd6d740981d56f3d79 100644 GIT binary patch literal 45083 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 UIy${9T!63d?CEwTwm-)G2hCZbaR2}S literal 28630 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 diff --git a/doc/_static/gui_pipe.png b/doc/_static/gui_pipe.png index 77ec2fa5cb2f47144807e39014ceda6f1958405e..8ce9b947fe14a0b40a0dd39129a84caa228c8820 100644 GIT binary patch literal 8019 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 literal 12462 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 diff --git a/doc/_static/gui_prism_quads_irregular.png b/doc/_static/gui_prism_quads_irregular.png new file mode 100644 index 0000000000000000000000000000000000000000..8e00032d36248f232d9de927d2bc9be1534f5640 GIT binary patch literal 11424 zcmdsdXIN9+x-H75^dcyV0ufOV=^!9A8j&g@y@PbAk=}`Z1`w&zdn^AeO)q=eq3 zO7A_ikdQmscb|Lq`OZFj-yiqa&68&(>q*v}Yrb>N@s2Ux74rO<0uAMLN)i$h8YM+J z4e&`MAvw=Leja=a6Np#_AEd4@B`tDt^6?q9-{6$l?TMb7CfwT1)6B(+#KsBkXvODh z;bLXwGMTaRdrsekFR%qByK4hZ2GKZWZku!rOBAul^Ii)(vOeN`V2#UjA}n``#bys z@|QR9T1x2#Kh?Vb;jur||E0%4Qj(1|LPS!kxAB_xA0Y#E5hvu~%BAw{{MC47vi?r+4uaD`K7*;wVS$g3N{{219j1=tD zt{KLfNwIcuVouboGGng29}COkJ9{AhtAlAsB&>9}@Pba&oqRc0S6AQnr8w2k=>ZWZ zRM6hhulUoGv8pQk=g(x4StBWLNlPu2P~Lk!xT7i^twH#-NrQ)Dh=%QNin|pEA}t)v zTI8Uwt}-O$wXGvBk7kwXprYJd``R;{Z?#pgYmVJB!!KGT61DRxK3ugpNls2in$gkG zhd6CX9aolwo=*J;F+uq=C8fz&wnYitpLXmqFH=#X=x!tbRaNZvtK?75 zsTI_ROHIxlqW14;Qg~9LdNJSMNVwu-*X~$O3J98e5Y&F@r}KmsjJ$dNft1w!`*mZ38E!6; zossiGPa~dlvVVe`n@3evhQ1~Jf@3NyR@XQ3n{ICYg~4QIE%udI>57QJ$+u4Ndn%`= z3=kBDi+6oxrTvqZA1H(lcKsO9)TzzG(OFTf?!CV{8A!E13}- zTR+t;PLyz8^)Q;CgA%{>*2HP8`Qfmxxhh(d(e*wu#ol{S>R)Q;Vb4$vGKkZ_k`l=w z=HX#kgW}IG_7?la{0hV(=dyI#c#sJVvJJ_)nb(47@x%xA0P#|Z0H&XW}E7cLwkJ+q$?4z_1fa;=8HF*lYNZA~e3VAiy_(k1uDF$wme zp{Ca#6lrP=R$dhtj*qRo9TR9}9ZzmmS8q(guC48kd^I%Wj--dfuLkJzVhF{`yv-~( zk?-W5dR3j!LF=k~4+q}7QSeyzx_7tD5r3pfOFO^ZXLB4qSzAjFW0QV)8_9uuIlTS- z?M0a4;U>SGeZD>f0@3{xRus!Bm403NXzwjqu!5Xd1nbGdWNl~5V%$|7#;rQ&|!a0?>qpl4&oO-4%%k;PXDHuLCio?-`3Bj1>dyh}q)`AQ_aR1q(K zh){pQMNczpbrdyWc6WEvWqfxp9OWQqc6VLMmCCYFb6HTI4E$n>>D+8L#Z~~``55B) zNKE{2X~cwT6b=2H6C&mD&3t1F_USf8mOm-s&}+1-OWplZT-<&@Ky-mIYhLbZt@~We z$VZLWS3;0itgrHt8&nmc&_qUap~vJaLu*Q~(caz&WRw6pHqYUDMNQ535#8Cv#aD-$ z9I$uRG?NplQqlYE)oP37(BrM+ruWDSR^UzKEG)(hyIypIooZbKYNtrAljIbXu>Ek_a%{i_8 z*x6}sYdaIlbRpj;36(k#N$;}!oSA*SIk-zrmV0y3P}u90jalyD)Q$Dkdz5t0+0}cJ zz6Wa5kIBubsO+1Yq~#+wXMb-`AETtXQ4%78502Wm8fsO^`@Wey?~Or5&9yGr*%SH{ zMiTg0qf#f}EB&E<{uPcqOdaGZ+`M%vxEnMO5Q9K1D|APPwNx?v`?0dtoJG4cs?SBiukX_g2H z4H!Jq>2<*wj&`gn@J9H)rT?tuBJL!uSAz{^if|kY77^y>j&pEucy4a~^(|@42WRi0 zTovTqn3$f-Od5VZ|0nLbWo0Vu?WDVVT)7cp;RH@8U+m7Dg|>pz==1GL^aa@yhmoy@ zyjy1r{FhDby|{@i)eClcG08rUZqI)HLJC$!Jmv}}-q`DKlE-f^guY2&VXWM@)CR?g zOcUF{?60Awszv%ICzAvk1@-OLzLs~dja;oewnmRvX6LBxj@f66!6S~a154!WT+g&R zQHU&>8w2SSs5{d;F$*nCAt0mqUQv~le89leYi=a z0&|az)G9PxrLxBv)^51_<7~R%y%Mfn1G1mxD3W+Z`ugCGW z-_*n;-SYu_H!mh!`v&6&C9BbM4`WVO3JVIlrBbi5G7>h#r}_1YUd&~Me^H1OGw&L+ zdVcg#M_iKgx)jOFekkFWZ|PEZiVC@e-_drJ^Be#r&Zmhl>fV>9$ldDO*_`lp zEhc?^T?W11kx_ySq+ke{uarV-Yim1>H*Aconr=;0b9_*|&7kyr`eV8Ma8M9Z`F8Z@ z&!4Zh)?Z^|YOtNl`q=OYUmHD5Vc}u9c?~z%d+7s5!-M0N;e10B8xC8P9qfO4yu=V9 zXTpvW@|S<9xQyIkq@fYI z^@zHc1-S@4$M58BeNc=|ORIm?2eYwRdJ+;^a%jEBLBT%rwh7aLk-Med5gl7~?0g~c zLPJ0UUaP6BNsv85GyB11bTCp}F@V8L{(#9hV5phoewLDeg>&NZRT5tV`d zf#{g%}r_o&_YmcczgE_tg+NK$DDX+*ZO%Zs1k4!32Sc=ndt+q* z%*0@By>s)=9~pA^#F&fUAAN^jA!dAeeaZ(3gnfvM6ZQY;*0Pn=lh|NC!XF6xj>Z_q zRoIOOk6)y{re|cdzP$YP`CTRfef+_nm1K0+@rGS+Kc%7FV7@k7CMOZ%eKfDcAtt=4Z%LXxv4Jk-|CPSWf5@142U zL+h=f!p}jNsg&?#%_oP&XjMK){!wA%{{FrrHw*KncEK~==#V+ zaj2~&&({r%0ZS>+*jgyiaB#lcO-!JfJ=w|MseQz(f z{4v&uTv@7>4oPOZW6UMvgT348%*gpv(Ij)j zw=uS=eT|s$6%v}H{4-xf8yCp0CVR48iXB=B2naYmJ!NKQR*;qYJeCkLCOA#gzO4QQ zO*k+Nk<&0Tl0I$O@q^#}Ta){%Ls3!m4Mhe$ci7q4b*Tz+HyFSu+yrNeQCo8JBc=!% za`NB7r035A_O5jztbQY2w*#&{F;-{gy4s=jL9xtoCwjEH80_4ssVTptTFgt`q zAs>EcSJzrYU)_xFIsr(MMVptk=uCdKKfod+EG!DhkoqvdoTlp94_Ch^=V{8B*HoFE>R8nd$vmG!pGCEs)e#b5_MX)nhS63z7mLHOTP|noX*SEE`_3ODq z8Q3&AX>8AW#7a`1I0_*>SrlxlG+{MPr-zw%FT`Ep(NVP0fVJ&fVJytek9Lv?$(ELu z>tp5i%L9+qP_l%d-^BIeht_HCNK4n1mEGs%4SR_-YKpvCBcUE>@^oDzk2Sum1IY(z zVEk|l@7@~AUlZX#F<+MbYV)v%S;TsKPV_`HiBZaCs?Pf@8BK%R4g-{vPX?q}M^Z9s zUSf4BL?i%zRER!JM!f}LHuc{hI-;1na=kZ{qD-!bP1S(!B=d4vWe zr=%qC86Rx=ZrL@Ig8+LD*Kwq7Eq%JmC^fuVj2>cBeHs@Kuo=HG1_47BZyta*UqisiI^jw*}jSx$B(dd#s&n<99qxet*-ri=h|#)e}WPGA>HY*F5ctP$d<^* zw(8H@w{K50_>Z@?Dzx5aX)Wfhg-HzZ4KC^gZ0% zv0xG~k+$l%3{FF@3RK*`GRjlRdZIdtqEq9HYqu1Jm6?8jaqXu=f>@)DAoa|HAbR8W z+dr3k$d*pNua4T(n(hg(r$%`0BrKw>UkqD7PiNud#N>0ETYsez|B`3?fA%9oiWxJD z0=Zdd(aqN$Lf*Jc4Q_S~O@Rv!={VI8R@#|4SI>Qfl%4z!r0YL|Azw9ogXOZr(NmJn zo?fi3j`pb*K1MzF{0r-s$0UEDZkS$IS(C~7Fb%rb2jE*F+c`eB78rjb`#~doU zG;E-GHhtS5QSO|ae zBrq~k4IHQ3MP9iG(z#|#k7H8kXXoeVx3-9@d4&z-zxh5W%8~bR)aHhWTlRS40~4UT zp-;>eiuHIs+}tjQwjk-bY_i8aohm)kjiqbJHCKcr5>ZJJgk5ECO-)U8^}do!%<9@& zLI$r;kBeawqU(wfU~}_#JuZj-h%i^+Qs9y$bU*9Hb?IzTe81J{S&r%JbN=1o$?o%hy}Lw4p8-LH9RY{}ICIdvthB!hHUCZ|TfxxG?uKVsCGM?_igygNhUx z#iLswO~mg3D%Are`aODd4jRxLL<7jlC-zU()zt<(dq=k;+up#pjp}{e=i5Gjl((|7 zf}{uBl9p9+8=K#S@2AJX zw5;Up_}7BoW@a<*E^$apOUs8{Q`ge^5t-0#37S23?i}c_yH|KXp?`hE$M;~}`=r7r z?i&(9g*can91iMjCQe>I$Dj6q zS7FD(MrP;cjz6SHdUT*uiQgCL`gJmG^MB685NIROdz@Tcz%xpzbeh~fJmf+?kdUB2 z1k>EmF*V(qpTBR@omy2@MMlTwFjmIR&)?nN&MhY9vDlg9?(WXg>I`<$3>mV0sXOh) zjT->7CIP7(9n}k{%g(m3va<5<@K9EM&sf%3^?iViG-A#TFF2A{o3M%6s4#eqFD^DQ zFp%W48>71#K>yR%*Lxbjz&Sm?eYgjAatbgKIb*X&C&yP!c|6?Rhf=RV*SD4s`SZ!4 zp`ox(VryWq75Mg@r|tYC5bZU1Du%s}*i;172K9Ag@i;xaV24Ms#&`IXOA8 zvN}LB4=UzbaCjmc=W| znmCSRtDy)dhahci{VL7QtO*PbK1(Oiex5kxhKi)5r10=?*yKGP;;WnFw6s&DHj%JT zZ5_akuO0>qvdc8YGBaODKe_5O;B=xnYF^&~mR7(e$63(Pqs-q-1n| zV5xtb%D2iXP)Gg__Ac2knXL67+ou_;gii<2+`#5dfuk6FY8@oZy~VEhj`e9Y0^CTN zlqXXG+1b=uSyk86>bzZBBUnX5L`q9auz5EUBP0xDhviEb zIH;v0BxXh(?yTo7kiKyIuhKTOUn+Hu$Od1z_j;i(@$_9AxhBz)*5SN?>_5uge}Ka? zEzCS)m!O``O7S8fC<`Kkdb1&XpKwu@_eSHNy_t)`YJ_y)nu${5Z{Vqo6nfjF32uijf^fZhJ-@psF21>{1?wt%$%L!??mw&-L`$)JiI(S*dr z*mtZXgV)A34_7ybrj&rTKiY1l%gfD;Rlb9WnJ8JnO!@5PhcI%nb<0Q#II*#3eEfKm zU6!3)_RZG`#lsQwY1}joKrt;{-Bu{C;=MR)E33@R%&v49DR1Wz*r!*Xo+C9z0c26i znYaQTJyy~aI`O8;sd&4_l5b-q0vsF`BL&8fQEWaq?25Q`{r3_FU=mymqQPSa)G!?# zL3EJre^jZbd3;c^)9+l!sO|0T{{H@=B0*Ri5UHv@-WmXxF)=14u~qLNg%xsBKWT0- z#xOV*pxs}FY|?g&HzAk&E>m8B{$5(+3gd0ik>>K~uJhg_XBV;QzWlxm1tn%e(Xr9d zP3TzVOpsRas953*Don#KU(Y>gt~HW~TPr-lt~@5ESiK=f?(FFq85*j2_wwIKdSLXQ z8{-voopfKp0<46Ov#~Pza}%Ri6$4>H0FEVG7qc9(gJ10-0yj$8`J9j%uz+`GhS`Jbs3}o5#IZnJSEboq5fO9mY*P-~@ z@@SvMJK3@yXS5$L4QRh)BA#D-p6(md=BtZ;v8w*EcmM8VSqhA#+@Viw-h_ zVzCJcx(WQoV^yEpAiD1>RI|lhSxyY!2jnS~7ZnxVuo5R{-$6u1hJf zep^C9f}g+OV^L#kYxWQ&d74eWUNOwETjz-=4xbpoDpf()F09cgbCe_`3J^BJWz|<2 z-fvCh+C--J6+W4+a(+v%p`juCx6Ly0_3Pd89I(<>F|0|TM6nx-MiJ+AIf=U%0Xx@< zdj{evw?69QX-rn#OF%z`2u?cr!lrB9C?3$REn1SBjSIfQZ z4Pn8-tqG<9zj}L%Y!2Cml7M>sW{PgW`mBJg`XE9xrBwS;MNhr&;gOK4s;XmQuAS1D zSX#i-bb#OQz&0qmOlWIst4Q7ZRbqviX%2pj3*7E{4r{A%Uz5deH}^*Mu8kB*NlG%n zPK$RTR8t1@Y)k>f@BTx!(>`nY)vilH!GWgLJ}rN&+1$6gk^AY>BT<~=#Pj5rqi#MH z4@~rs4<9z35dEg_?w37a zbiAv2P`QG&$P!~A&V*kVRdx(xU*EkK$t@PkSv%q8Be*7h&1l$>!{P2;qfGk0NLNXC zy972m?1h_1L28Rt`~JnM;ZTKnm~Yb38{Pk|82)1R@=l9@Y~bSVT<*qqnzy5Fp{W^@ zX@73<#WA+FrmCi@>b|U9ncEX`b|iaPaIJ!>BaH{ibv;=EGU}&7I31gGksBYIz2D&S zRC|3^MOJn7uYUJ)1F%|CV+)Hp0@4MCt^RDV~ z*D9m?WPo?v_eB9T633T`_(vWsH_n)I#8I>8nlqSng-vHD9&v6HS~cA%R_p1~O8Wxg zz)kosO!bnZTE?ucKY!e6nIEZ=2{+tAWo4?~SNYkmVhaU}LVCSKzDy!qgt$06D{S4F z2$E>{OW#{p)Yi^Aa6A*z5`wg>QZLAgcq(E8$_E6J&)SnsPB3QWLU~Jz>7haG}y*Zv#Zeni0)KtfgT?nVYjAD*UEq`Cf?yxR#|&3fb5mKvp;MX zDKt#M+j(zuPe^h=CINU+!?!mhgGflIxz3&i7##NU^13TwF%XBLvnxNReF*){(RZ73+ z)<-C&(r;p7!lCR-PgYjes%c)IYT*>`X|h@+sVIUun(y^}iLN7Yp{&Wn72* zwFQF#M=KXv^tQ_mQOwj>LsL4D0yX+H^+6x_F&|9(l7DKpgb8P9J8R>hT9O#kxFQr& z5?}CV%PSU}m3w6=`;dL_GhHjzuwQae5I)W>E-rrm{vZgVv^0LcJ%)2~@qT0Rbo~6{ zBAcY!T|q%XDJfq7P=K9QxP?2UglCwBU>RYG&z{jj1wGbBhw^j{D}+57<@+No(C>3| zbK7IM(8PuhwRs=u`wP<|D;Z!YgGj?F>hZ|E3@c|3wcy|FT z6jpJk)XX(=x~PCPgRf2iL+&8!j%Gvg7@&VX8a{b^lYpQfm3n@ScA2@6F4jaqw5Q+D zDpa@OTasgjY5Tpd(vS8d1v{kvCkI!8x+>fRMZmZXWM5D!qTTr}cT%j3Z0;^#6w#B9 zagHI|^U^bGKuSN+(i#MU6i7lJfV)EqagXw%0t}miP4-tlC@CrRNbhxm!RY22#HFUz zA&3E(q3(lGMVvEAjp|vtwEpwwzh`HoqoNw2UoVbzpN$_u1@btkJiy3zu-I?;`Q>iz z4%Ged@rlVv;A~Ci8&(3QUR7IbSR*NRai!8xpl-YAXZQ`>0;6i@xt~BYO!W^H3n`-c zE;VfJlCrdd3;6Hd%LSqpF98W1?moClsF2%}g+QTbfb)78AnaoOs2bs+er*ydOVX9d zcVWF_BQ&qyIDAnfBhh?#R=+~?nFVBv$%=|-;t)-fy7#GqY_9@%vPq)$!-+x`VJ494qYrTuEi#FftAxYp zr3X%ZpPwM^j|21};q3gtt*MK!87<^@QZcYD42C8RP z94oB?H@^SjaGP)$a>8sKmzme=wA)b~UjR$Fc~)SXj(?iO5S@&3K*^>d@H-wF{W~#S z@S~$DR>}KT%g?v=mKN02tFK(4<26<={1ZDK&8-Rh@|iXveppU{PWsggmjwQ`jDF{A zH6p%=3X*Rm;WJs|EMomTn0^D?Q*@4|>+u^#t^xs5+4uCjO;q)`!|DFs-a6+w&kGme z24x-;$m67hBVE%54d2Fu^ z^|bu(bHN|E2Y?kO&cF~Yd(O-@eoSf{VV->LtrHaD}$+GDr{bIIm~2F_?e#QNf37JPwi5;BAWj{Pkt(*`<*H|bh;XTff9yq<)-$K zc9zL|Zk;Y^QFvSuRFp^GUNl~fh&bItB`zmU`g(vu*>EaGbpO_ah;cweH;ro%)%&5q z?}Yg^4SvlD>KWDx(;$PuQIy_KR0LFu<>pHKaGo1uqGnA<;GsYdCtMee3UaO%gDjv% zJRIms5hpvOD){=<3o&pKW18l0+KH#xyA)zEw23>89A(X-=e^n>x)65h>1~W;3xtsq1I)A5>v8fwbtC!geTw$1iXGc zA3y&o27_3+(rb_X+Bc0L)=v!yw&dn?8?C8yb?m`y10pW+Pd;RNMx2T~;PFb=!%JmuZ1W&zY-fk()=__M?T#20$H6AAd( z;pz|%2M4$n;HNUe0Qs=6u+We9Kb-U&7#IL{De#N`X2Q$sbG#`QOBnMzN-*G=?q7QO zh`QBT5|_8Tx|vxko(BK{_@vh>pMlsV2$&Ab$TvDqfMJ0~TFeQD^Ho(3x@s?|7TYb_ zXy;|kxemS^*46|U@&I@|7D;zZ%^uFAW|JOmX|dWEE2nPO8!w*j(6<}}Btl(Pft>UXDF_52S9}K51cC4f zfwvYhKJY|+ewi8&1g?K5z91$ho|;#i1E%zDa(ZrBj+SnoW-b;WD+fn=3oci47Yhpq zS8GSN9fBq)5QrgN5i0w_D|KtySMR3o4AJf^tL($N^3hu2TYA?7;Vx8;nK}jiHltNG zy7gmdgTg9pT|qDX0xp_DgNV^ey_&~5uw`ux!wee}o_yLuPq}L}Id4hvDk~>z+ZkfL zuM!vSl>d0U^heMRW^XU4CsoW<^%IXkY*MPzTV_g`;M)ug`OGZQ;xDGS@bWBdgr30R zaO83rNE9ywFEx$1{?ce!Z2QWlnDjoG`XdRylj7uuhUM0>HUuZA%lG{@+FldQCG+OZUCsVTBCadCA`HeiPkW{kXl< zRi~A^VpQXD<;`C4u!N7XYGY!epKAJO%Op{(Y_ug*7h%95Q0BEZR0)I0)zmbt_3unp zz+SyN-`!0}7W{}ivt8~@p<#j~UM8Y4KaN$=M@f3`Lz5lG3X;0`n=baz!-_MeaW=d( zV5&|Fa>muuUXf{jeu&4W*Dj!uXiOp+?K2}}{_5g2|Mu?uK4K<1{6+%$wQQMXMY7;p z>g7eDq4@b3dv;cIs_34Q({AMT+h7Bqr&zXoW0}3CJ#%S*y4S(@Po6ySv9P-XW(k;; z;-b1n)Fjh(y~PQJ*J*!0+G<=qbCP22 zu5rJt74h}x8_f2ExZA{k9MsNn8Ac9QzxMEObdF|*ZX|qHCD@+vuea84(A1QjZQO>s z9j;53#PIRikJ!W|=-y0CWdX% z@c@4OU(v%X4GeO3cXvb`u2Xd_8|mo{3s@P?R+lKrG;f!etFp&U1>uE9SofzJFRVl< zx%{G)rIUj$u;40_V9mSpo!rLto`>sKoQAZipFi)+4~D?EX9Jy&_IIsc?XoH-I=PG@C^mk2vSsD#2A*T2c{V4tQ2BW^w?Tux4o%dqm+b-1nKFz^|i zpGXnR9OZMN=XtQ&l&dQFkZZam`&mJrd8Z}RZS{jrfuuzJ_ZRZX6OFh?=tUGgVxny7 z?CetZ%N+bi|4t0lug-&qdJq+C(7>I<{e4zlvOWpCIj+%$#iy#NsiE9kUcS-L5a-}f z>U(_m=3u40h(e6R;i&FMwRB?N<9JS!bj->a9Nyi1m(I@OXHiO>$Mgj@)%t1Px z-!eZFF?3?|Y?wPM^JQ?wkeSdqMq%`$`qIv8loD1nGy*?$!Qp)wS8@p1C}x4hcE-pV)As-umIw

      51nXb)lzvSpb#UK`uW!B;m?K$z(${7!vP;?x2ArE!;4;? zyDzlau>|ZbU|lg_%o5oM^7YWyYZmHnxZ#&t>f;A2vWYTKNSf1P2d=tW0P2S{-iD+VTdEYvCNKznvY(<|-rhFQ z|1R#j()X(-H{#^ugByhgqZYU`2bC0I+DPDggXMKbEn|BHPG2PYtS~^iROB7ipkP(jv&>vzxi!7O{VdRU0qI z3$yI)7A_OyEQptGa9+~V@JzZ&9kGVx2nuA`5=y>DMZ`XOwzE`c?xo-yUH-1ONXGS- zl?S^~)BN{5inT3=U9nH7q1;Q~z7PI_Q<;f-KzgZl69)_GEi}-CQ=~MKG_UquXPA!0 zn+vgV5}OFq&BROnF|hijUn>2Ih|aJQ3i5eY*w{+)R^33y;Lqxn41HfvIR%>I zqy&S&W+2ml61T>5zbKCAnMAz&Za!KuO_)beK>AceLu2fyVD-yjeB>CrN*34~6lrre zY=3{hU`yY;BU;SkU_6RmKnJPML_=fI8ZVhZVaC*lNk!VMC6<_fAS%vVG5ax|%IDqv znq{)l-*>jrzpS+M?0CnqE=*D+M-yhbw)7FVX>j=1OcoPr_=j?aKaUhTVB{>D{de?;z!tBo9_n*L24QvcB zs%dqe8v(n`sDA0IdL<0^%Q`pQcHPeB=Q)+o^Rc|D$!irGv&cYW<8(bKp@$V(ovKtX z9~^B?WZPu3uxK;H=^5_VF8zQ%Tl>Ol=@Es^n33T^oaQRJ)EIFmSiOGTlP*x_yx8G7 z;>s^<1s8~TT<}!SOyi3Yw+U|`Y6Pa`igju5uWzsT>Yf8*@mb4BaN%C^+h2QBX4z|V z>4L?IVSWZQ3Y$5{_0%s3;mj(g+FmD-p1eGFXtnLXf(%QJYB-ab=IsjaSw;_;`y_~jhl~DQ^g&NoEL>6 zlH1zalBLYm!;`%8ZK;Lg`{@w|8JJUGZ&+xk{bapjs({00H87=MkctA5(4u!b93LN_ zUqB$7oT2hCu;J5Qq|eC*TGO!RK$kH zN+8uAKUY$ko}P}d9+;C22H)sLqZuTucNq^EgDsJlUKJ3X_l~u~GH(#g`KP+QxAIQS zH09*l!^j!r8-x%G-!&ZHKUY&j=H*c)ypz(qkOjQ_VeZ4lh2QPl3Gd#$^TuL&Q~3ny zpPuwLU2w*a@Hk4OB_>weZ&c15p`>P{fWd~2ViYU&t=eADEE&)HnEg#P&0vp{k3?vj zf5b8VMyxV7O-y}f6q8nOuY~tLtELrs*d&7>=ZYRCr z8NS}@(Jean<=E$}c!<_XhQnQ{U>|}iCjwq#0#Gn7=&yw^9eYO>#2GD5KDX{GX+Fy< z+ONky%~FSRx(HwYyyPu)i8~2-NYW8W+feuTGT3X+H#daJdYwr;OqNkeK6}tw@J^EQ z%GQ>oZ{MbIgU^IxB>12+hEL!_)SCw1V{kZOmZyVWKg*qM|5 zy?ksS7l4Qd;W2IP?c{X4%>jmjmH`)Zu}3>o(*7N8u^dOMgXZ=_ldG#&+pE0zD*msK zH?3iu^emd}ae(8Cp6f<0Ms~RU)FG)#BsW}Ac+}R#KUe(-wxLgJ( zYcT6ni~Wi+1tJ58hsD{LE9+&24)d1(V(;h|j^QnCl8$2?%K*umR+Y2G007 z)7XEnto|wrv)8;h-(yqAX;)X*o4?g{^!9GeO#8Y#a9{Ri zGBqY|A}BOzUh)HM;{*8|iPFTCy!P|=L%wVp`>GfVz)(heu5hZVUZTO_)(oXWf<}eL zbge%JmyrE*t-FPV1td+Ck*mXt@XjLtSxUTo8sAJjDo@}(>b^n@lmC3^?H|@7NwWdx zTcdZ8#?@Y^*9m<1Dun`9#uYz3GxLY>abJw05}uoPot&RrSz1ysK?DT^%G@``7L;Lb zNkKuNbPQmrwgT3T8@%uycGZgc1s z73Af4Sq+J6eN(=lwYS(Axe-u&5`2nXdBmwoCv2A}ivQl3-uWUi{KmZ%6ZCCN;;;As zEIT_pkbaJF$Fo%q)5-9*n=#*1Qr>0vF^ai-HMt7tm{wF&MTxmdng+MBrbIo=?!Wjj zdA11{z`|m=r8<;D%D}AN`m+A?9{0I=Z69+Bv7lO|QfkfS<^KP|Sop=r$$1Q_OWf6RpuC?Fyw{r>~pM3-=@& zp{WjK2$H1((S_jswJ15KS@rP~2a9UHdX?4C#J%vrIacrofu0;CA(34>l^L^wJGl9d zsMS9g>3=HV{}0wWsLUt{QFw-U#h<2IKO`nv@2G&rLt17S9&>S29J7J!@G)c{vKCM? z^WTUl@*)``1b!isFmp_wA#A902&fkJL$`t^Lt9z@4@K(OHrc+mE)-%pGwy6g~^hf`j`e+(h?SJn2K_D8` z(2}V*($*6VWTn^aWB_x~X3&1o4_uw1pTu?Fo%a3J6nM2cQHBsklv(x9GzB&pz81ml z^OgPPQX=Bp^h zqS)8?hx?3QGA1t;n<U=)HPagb4ETleXNX+emo^rB4y~K*-w+!lFL>|d5*17|rW^NXH6HCq;i3|u|GaTm2GknpgX~&V)I{J0eUoGT+3!2}68pn|y?A?o= z^1V4A1NDe3x5Y)%iF~i|b&XyWjgEEZ-`1xXhm71PyX51rRfvBnG7snd@r;d4w#_+J z@Qp+e)(J}YOn#xxggXJ9PMu2ycDhS3Deyxy$%rihO%~oIL)Yvr%0jkDtjMkP_!i*g zGm|gs%w%&CjMU)0C|T~(SQ$d-R^WMo7M=!=FZQ+ral)VNhL%j27YFmH}o{+=@c zd}0yKF#sF~{jX@FoZuRonH?i2CShd5`)i`{FA^eLjn9-vTHZ(p)ry59du-o;tCc}Y(`efzBEJgCMy4--PC)N_KuFRPCCxNG9g#@=y+n;Vi~m+ z+%9LF4uq)jJX6c@&Q##aK~i421|%&SPAI!dJ5iXK+014S<~1$jeGwOeI3h!#P@!_6 zKp#uMvhSISN`r>i1KtnQI0V-yZNjZbg(?Q+)*88eX#kmR#2p#3K-||~$ozfZ$LVqfi7y+Hcrdo-3(rjFiM8V;m1YtWH%q-W+W4 zyj`SXpah+&vd`dmf2VSX%(RC)Tya#)ikN~#RYiqK$mO##8-tL`3mY3mwUu72+ZsYU zpEQ8;WFeA=P?niRTDl1+%hPq9w`pkHcV?#9$icjp=dG;4FacjM%N;(Kkdr26;)R5e zZ)zD*-up|%1I3XE+|NTtOV+CcJ0e2yHrs@6Pxr8XLENb`y{E|?wW$!@+eh;pN3Dx_?V6^P(>AkCg`kwF3$Cn3(ZlG`QFnl(0N@mcaRn)k zg~`@WwE&AZ2#Sn@&BrbKgKT@$Z;UgOouJ7N2^{9Z|9BVuS1IG1O$oWT@&?@U2ilu^_v^Ds^{I4>`+fJwgtJBX^yLQv?$lD9Nt z>wyIUx8gT4bevC#7>Gkq{QsF4hREvnXFLZU?RctD0 z422eHkh;&yA8JdM56j#Cc+&C#U~fPPdB4Wsd%V3hry_330l?T~=L`afVtZ3X#jZ!T zQW1CW*vBT@w}DIAn%t6i46D`oA)qOnIumjI(4 zTJcKn@9J8c%5}`wDLgw`^W9sJOULNKbV9?z&dyGNu`iL4k#V&$CxSCLl{<`rc<+A| z;wsT1I@}OB9jLy(z_R#rux$mEnQ*_gZWu%p_C#Wr{hsvUS1w&!V#OY=pEp&`D^|`7$&tJ zFr`-kBp!3Rw6s)H;tJ4w;6gsTnqOa?}NKO`>>BX7xEbQiij&RjrM+D}>brP9yc<8@u>u{W%e%<}@)pa(yjE-Rd~ zI|iR-T_+_)Bxf(Wmz0!rb#+0Et6V$#s%8VGk~_w;gCWM4`FUsDqT zE&iCS&U1%?grsKwg|+qS_H*Dm`AAgsWXiFr0pJdp zzO=19&-P@9cltd^pM$s8uDiIp-jfah+Sb*kD14Z!MF08eX#{Sv*45BK+z`7PePxZjVByv-A^(*X2{^%pRhDz`PwbPSMS)u2FMF-;Ig-H+wa zDR}nm89XK?@L-h+Xxy(D%swCx_M0I?P~S`5{6iZF<60n;jTHL11*M8B+G@g+QyX5tnSXlbi;% zcP~c#EU%oKVMPz1z%7c$WUAMg?3gLRzo+RJD>w40xLM9FAp5=`Q$Z*YcuDK8l5p|J}(BMevkd-CjLQ&Ic7m3Zs&9-dlm WoXE3{3*hfOkfNL_wCE4hxBmr`V0~=> literal 0 HcmV?d00001 diff --git a/doc/_static/gui_quad_edges.png b/doc/_static/gui_quad_edges.png index 473dae7ab55ac7e14e465f669156dbbb969c52f0..57dd154fff9fc15bd9ca700685d8f3ea49b5a394 100644 GIT binary patch literal 8210 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 diff --git a/doc/_static/gui_quad_vertices.png b/doc/_static/gui_quad_vertices.png index 56bc1677037fa821882236c03db2cf95283c4076..7325437e8a1ec593cac43eb7b72cbb3760a29bba 100644 GIT binary patch literal 8354 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 B4Y2?K literal 12725 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 W_Fr!gfd5hfc`l_SnGb*Y?tcNlw7Mby diff --git a/doc/_static/gui_quadrevolution.png b/doc/_static/gui_quadrevolution.png index bfe4639bb2754e4f7f64121c8cfb8fa7c832f285..8e60a8e273b0fc503e93befc920da5a7a6962ba2 100644 GIT binary patch literal 7747 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 en-FaN97pe&Xs%VF^h@xW48dhtK8(P;Ak literal 14649 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

      _6;u4k60O)Ju6|E<%rot8woco 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%0A)k)a?FYgV>vw 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 F{{xi*G^+pr diff --git a/doc/_static/gui_vector2.png b/doc/_static/gui_vector2.png index 6c6655049140e37d9f1cac963217ad4856ff5fd9..5e7dde3a203b8083f447d5617fcbdfafd5a41c85 100644 GIT binary patch literal 7906 zcma)h1z1$wy8k8wq}4%bL_|tLT3RHeL6GhkKstvK5G5QMX_S-@>26Ruhi(``dgzXU z|Mr~k{GWTzckgr0e)jXs+OyVv*V^l?-|tD03eckCG{ErFu*3p6Ff}t z2XkeL68yn(k(ATG!^4|dR9OHYDO{zsUDX|+t}qj43&7Ie!Onu+#mw2l!rsNo!F3m_ zSquPZ-Q=WRXn1_tp7YedXL*ggw`+cPu%dGM_)$Q-Udso6-1n@TUK)PKdD>DKk(I2Y z9~jaLW^}cT$ME5L#e=L>9;(E*=q^mOV{ zm{WNk&cagrv-j`kWWxmA7Jt11$i*6D<>b~2_40?v1c);dXuGr;MWc!K{ zLbMavBx;PBoc9qs9@7$UZ_~fpsn796*Fh~lbw=)vG}cQrdck{OF5b}2h?b!&Z;Y0W z5%Km8!~DW`>8c;u5*BH-v{am6e&ZvD9&X3Gvr>(Gv&}bWh1IO?sJw{C(-`?i=}Zn0 z+U(M2ti2X#Wkd_KTibWEhWCQ3_0X?y10OXsWu$s<&LVWs1Z?n3`!OUYU_^&B@_QGV z(q5a!qZP!SE*AJznw4Em6!Yp@xZKar&bDB!#z~X~|Kez)%*ApHec9g`p%nGXOF7Z; zAi;>%sD^8!<$W|~<560q7(V{(jY{Vg#-xIaeY58PGsFe(&m=Cbq!A(Kb^e`Z=zGpa zOALLffHvuPMusTls#(?%HA>-jsBJ-vRl?%RI+w&V?FoySB} zI6Ps$<{I;gc3#ZL`{X~{?6n|oAL+!Eafqym2@)WTQq$E-71~J8%blN?6k(1tsmXP7 zbK`6}d!*<8HPl;QODmTQqFTp$XHw3 zVE`&5DvcJvLN|-*%t-zwD?Af|f2+EX1)iT@^qQ4K7t3*_XU=8KH~IO|OLceHd$sSgw6wURR_g%S!L5 zOxQXF<#cE#7QoDoPSU&InrEnC4%OV5rKoVTS;&+|cCElGZGwyRbxa+J`WifQwThbr zeH+$WNsK6Y*U!VLdf!lHaZl_vSO2l$IRkRiJ*FM$M$skte|*WJ@;YBC`bVr%2$nT5j5-$=v8@qwPuh^P>?bV6XkbacQY#Tzq!jph11pyR#BT zvH9Kc!U7P*ia<)Uliyk?l;>(%(MtD9+F_64<^7xt9@@}wbh`<0*flk?fdnoNcA0vO&R&YKc~*^q{>mX;oYu^h6OrRZpLLw+CfLOVbjg$= z8&j|34;wGuBKwjzH1R&#e!OF}mAv?;)mBiVv&}LeqiRl zdsd}hKoprd)cl}e4(DURZ7lzgAPfnqR^VZ#2|zl;1%z0U15&(%z#~c=;11DW-ODM4 z(omV4jW{a?r5N2J=Z}i`5(WkaCNE4T3%Fb=WelJ)PoRKK#D1;>BO~KTu2N(e95o%( zxvZ2TwB1SPhsswkd8`e?uuvOPyD$3d;V%k5Y(ez#hJTB{daklk5_jO&*V@|T4*iHrdh#SFI2c(_J2f~tI5-IaD6Hh1?AO-j=D#bqCLS>`+`D(rIvEG> zEA_K8U`O*>$3S@e`;-wzAD)X5K~6#We@I7+Eu4X`|(y*(KN30RUicvzptVO#r_Vs}a}truFm@)6l874`R(m zOrW=~tFNnztFAgkLdbo$FH8|V0Zgx2lH&l6@5)u%&lwsWc~!5~-3rF$Aza?tsyAK? z&@%K4oLi;{+CMnx>F*DZh;Vmw1OTx#YSF*d$sdLr-z^LK+Vhc4A78cfe9*j#uiCRJ} zEun@-M`Pnt-PafBNnj)=)>2YZuN?7CUn?s|ASBYzwU;9!BPq$ru{N3=J7}5e`}E;Q zX_(eNaiTPl@Q5gq_cj?CK zM&N67^-G3O@X3(1(R^ET5=&u@xKM3>%58P7o|s)($p^I#i@z2CYNHJP!IyIxul zdX1`p+IfaPQoubF-fn7-jVqQW?v9$=U+xU<9~H9F9~#P}e;J(EbVST$-W8RZC7m;2 zb_RbvUkBAu>uBUmtj4*wr8b4XT8G0mBVBSJvqHPheACU8hK-AxVzY6d@pin=K{wNC zet#5Mc7vPn5WI{zuF#lG7C13bT9(PSzSt^m9(N~YW@mSEaZyk5I6qhc4Id_OdUWLK zE)QC2X67S6(Cf&mXA=_s=6j#p{;&4Ip$z9*Y5;;SUGli5u14! za~9A2rFOD7vRMzQ@7CXOiK)A~yPtdP8Nb!d@5t9!rR4WX3=ZxrHR}Y@zkO?K{d2wC z)gR>7p9l)4T1BK4>w~CtzS$2sIF|ACU>>3Dd40adSH!$h_@gOvc5V*cevL~)jqU#d zml)Iy40c)*=QK1l^k(eMmih$KlgDL@!NfGW>Uvos9gdC*u736^*x_qodott`USNP|#*;&-i>OfHrPcGtP za4?;ym+R!73FS<>n3j@Kf0;o1yOUi+%;y-(1|f#WkK3YZfra&4*=oBPchp%ahe4eq zqaXTsLX9)L?zOLUr`Mo@r}XjWSZK=p@UUqcyv}3M)YcaDy;vojmQVM|=Uc=C8g!A0 zo*~cTes*cd2Vk)2)Z+Z8kg{MSKVylSk9^VZf^9Y7Ew1qN{>12Lp5oEbQ6B=~ceb}E zOZTo#+4}9<=?2fkpD%F*>}R`Z-;RAptgNoC?(Q0CXlQ^C%4v5(a01k5%;(S5yOTu? zr&tn7O5x4T%{x2f0ea#$=v}`lmf87Y$#cAPCut%ou|B!q6~@;AzUT{ZW!QkYcyocB z4(jYPDis^hU%`C8Fz{6vWp*4BRA6o=RPbk8HH$DF|BNZOM7*83tZe*&(Q-sF5*qqO z{Ceg~sm_zn=jRt=6XH5f4o&Ad8mu%tP(>6~so&)cQevbNZ_@?CpI5GKwb%wK+Xqdf ztgxh#rxvO;tM`PKuTIxF5ofB^*Cmet=2#&=g%sGnr?G|n)ki(2;W5uVGa%t zmzkc!=gQ``?Mkc6O7R0FOMT7{3JRXSmoPrlr)+;3KGkGaKW~<77*x!>vRpsJ)-ym} zO?H%unY5;fcXBVRxcOT5oSg^&ogn^+^If;?X}8mzxqDBPOXRUCN-N36Jd?I4TSTfQ zOJ*F7)`wWt3)L|F}5YTSdXyNL9h|w5OZe} zwFklb|48Cr@AT~n{7j-q%F!}a8-Dz~GR5CERt_WY#}Brr%!Db~ZiKE>(Mi#tC?qH; z==_CYJCOSj8EM&fE~_aky$P0fz4$~#d}h7V(kM<2cDAvTw;HYxC}3^w1Dvew7?ru+ z1|SfK;upcvk`l**-`%S=+V!^sC25K|bn38q{6{G~?|ey$rbr{@gy8SaHNq}W>~yM7 zoxUk!sB^&)2b^{5aS#Z9&M&JH)J0c?D({LM@7^gk~ z3!Ep#g+H>bg)H3U6>SxzEdt9!d4wM@hsPq6Ho%2X#g+LrT_S2~YEu0+b#yiBTqXua zkH3RROmA3h&sElam{MypbgviP?rRi@5K)JKtDQFgi4(<|*Rwz%l{kAuA?lwN7tW zoNHagE!}$xFZ4ucNdOI60bYJ9Y6rvYu!G5JI=XWY@WnT8-h|#~mp6kA7b zG@BsbG0DPHaFh{*V2`#uSz2>&$>E`1DkOGi1af;EP$4l*3;9o zxbZ~yTJ{{J&)Kl|>(f1^fPjDl;+0Z$Kq5o6ghYe(zv7x~n~5UIULL~MwL>Z@D(}-B zB48v(C58W;u7$`$!y1JlWjN-;~uvL6RUIY<+o@kd8TD`30x&t2AdE0cI& zVB%6%SHE}3y0yD?!!g57#qH5`yftwP^M$(lNdDLl&8J3p9un7_9*S0dbM`#$q@bV( zJ|rQb<(+JwYHy#CHcJW#35i-DJ$X|#`6cA}vuDqgRLo9&v+Bc8kZX0n*-7td=Yf5xDH3 zl^Z$GR<;I+JYUQ3IKtn@=Wamey zrDbPZ8?%aom2Fh-${Hd~B}65W%Lx+@L2jRyv01DQd`%H|xSnxnHqh1d+L^75W77-@ z3~Vn9(<^cO8TO09a^Q=c;wzDNs}&K9WpuEzv@4NrAdQn0kD8hq)YMqUgP)-fI3wU; zl)~;$1y<0f^T=DY}#!>VPQl>V!xA|aAhmVWCe`l&E zJ_1(y`d|KJkFRq$5_g}L&LW5C>)+=}{Esa5|FGx(pnGbqMxxy^v~UjFTsg-0Q{dYw z1OP}N=0!arB+LtHBAeFZ_LOhaKx7zCwcKZq)q+J^zjf##Lc9ANHxZ+)bOr!OmJM1pLfoPr>%;ghZ~Ds z+WZ9lq0|Q0qN?ayG}yu zkPz9MQbb%r0+>5A=JF1X4rZ(DX3}4Ln1p#ne`fZ4Q)XKomb2mJXY`<&n|RvYl|eZw z)d%(RaB_t91=Ur!#<#vD4ASSHJVXq^M24KYA{J((7o+Fq<~CK9n$Ktelhi#XWyipJ zabzP(UdPF4zlV%%>J|AryB6QsZr`)4FBpWt>+w6e60GVVD_E5o*dESSX!{c4wl&Vu z%==Fp28j_E(sk-g@ZP`KxplC&*M&eh*xL^X$F6OxoNL&m`a0al!-nn5ZcL8Tmub@j zNqXF;E2zVh12M;imhnP8x7aXvL=3i^MiER}`H?&RDL|j4a{_s_OwpkI^!ng;!e)Cc zL3t!dO2Lch`#t*Qg_Vc@tuFG%WTx8Y(&Jm^<=#ixpHKi`7Wt@JhQ;@d_2+BS5q8qosNg0_K!H@z|ZliWLufZju)vjsmN?q)7 z46*Wf9`d)u!tW%I$M}!01GneTba*Q7|JOp(f8c}vDpOtDJa$e$Z6UV8mDJ2&0>Z1Q zz#_!>Go=@K%Zn_ee^b-OIi%}*v3h3(7CnJ=!(86-8#EGYJ(Z4LkAKiReFw3>|39GA zf6ILRqjcSDVtTgm?vt2uB~ljfxub!IdYoi0OF^D1`QM}8)s>3dHYH!aZGiJlOsw=9c-5#E-a20Z#qVwgwUBc~@{XW|Xvj9wGZ*e8B`5cm>)q#LM&z0k|q92NneKmFNs z``#1Ry-fBxJdjLSB2wQyzx1s+e%b7cURqviwG2)%EUZn;CPGW0H>ox&MJwCx_V+%) zjQaeU$MfJfIJhI6YT{>T)%v5d@^W$X?-3edcfunIZ6l)_gxw8c3K`U^a@DkmKW{WE zOIL5b5}#)l|7T)OQBhG-)Abw-X=i1dS6FDlbOPJBiS)Z_o$2)kc}D_=!LZ;hKwe(H zBb;Vpc=#8WqK(Z~UV_YAjZ3m{0-!RoV5uC|vX}JdDZ*FA|HAyThEBkcs zNnKr?@)xeshK4UDiR?*wLBurE$ZS8qgloc9{bt{H9Y+-QMfMq4FA-_t4z4^;D;8rf zGp{uo_fZO)Gebu>iN7u|y3ky(^Rg9*pYRnnXBU@RL$LV9TC2+KFy9b6#xk9Ac6nJ} zTT3JE4o-2nh5*}*XG@{029Y_gg{7rKWBqTI%gBS|l;w%jXbd%V?~4hG$R)RNg(*H! zP?j&sE68io>E{aLRik{ylzDa2gY?C;tQQ+40UvBSv}*5BX>c9n_pO1`Mrom%lGANtwOKmsf5w$tPLWrz_>_2 zT3Q;cZr4sj*9SAewrv3c0Rf$ehpM*r`p!;~9eyhp2M5OoToN%b^1_hs1bogM%bTMU zhwHn#x?*Ev;c$3oB;CaLc+R(Pj=iSj9bh$aTg}(EDL5Fnl}kNG@ww~zU@)EU+4bcv zh|-sr%S~E?hKGkie&u_)UClqnx6;EW_QpY^f(ApQ>Yt0^3?QKvEU}&9E(!us^jBe+ zatc2YU_V#K82t)7UjilIRQX>(PHwqIa*T63nm?b;gZXoq8 z|7%pzg%X!!mEx|zPeI;Ce~X;|3b=or3nX9b(c^fLp#0q*nv;294tmt9bqaLjxw(7b sfBakU|1W0=;W6^rDK#J`tt?d}X&mtX05)70Qvd(} literal 11022 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 Rcvlr7EiNxs0Db%Me*uOag%JP% diff --git a/doc/_static/gui_vertex.png b/doc/_static/gui_vertex.png index 3846af1c9afccd14ced2d05ddf9acb32884a393d..4f011e836c5cbb0bc7fa1b43278983c9c1a280fc 100644 GIT binary patch literal 6723 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 b!rINaD|EL4KN-B71bHT_@}vOv>ivHK!Ww#1 diff --git a/doc/_static/gui_vertex_assoc_coordinates.png b/doc/_static/gui_vertex_assoc_coordinates.png new file mode 100644 index 0000000000000000000000000000000000000000..75d0ab6fe18a4c651855fd809ab9800b0b5fdcda GIT binary patch literal 14418 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 os$1T#ti1L;Lw87b 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 literal 0 HcmV?d00001 diff --git a/doc/_static/gui_vertex_assoc_on_edge_byParam.png b/doc/_static/gui_vertex_assoc_on_edge_byParam.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2603ff8749ffc3770428e69cc53eed0f58c611 GIT binary patch literal 19201 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 literal 0 HcmV?d00001 diff --git a/doc/_static/gui_vertex_assoc_on_face_byCoords.png b/doc/_static/gui_vertex_assoc_on_face_byCoords.png new file mode 100644 index 0000000000000000000000000000000000000000..b17967e810aef5f911fad740eda8dc5419493836 GIT binary patch literal 20219 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

      %Z5!5n-D6F>hkaB>tt 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 KpUXO@geCx#bFW_j literal 0 HcmV?d00001 diff --git a/doc/_static/gui_vertex_assoc_on_face_byParam.png b/doc/_static/gui_vertex_assoc_on_face_byParam.png new file mode 100644 index 0000000000000000000000000000000000000000..617020c84cb912afa72372f347bfb698ee7bbd03 GIT binary patch literal 18976 zcmb`v1z1$w+CNN)f}~1H2^dHtB~m&_NJ`7VfJlRMH%dvXlyo;k4>2@IgLF!F58d%C zo^zh(J^yo_|NEWqy1spRx%bR$_Fl90TKBqtagYC7ISKsR_iv-2q2a%ge65IvhE9uy zh5^OK0PjRg4!#3BOdH4>Wo&Hh-?Q>F;3b8v*gIP#3j?^6gmT90pTIKeE(h$TUJD zFXesnFhW%wV+~QR#ts>ZWHf^*`e;WvoB3wlt+ zXS~5iw|<6Ri#knd>Wbz!^gYpg9M(=D1y^N2^UQwq=+O=lg!q7AgcUsr{!NmIkk0$- z_jzBmUeZ^{msP2%b;D`9#0OU~oVcHDKOJUgWVEz>pR96_FjCtyFb-W+%+;2_Rv2^- zBfAL~b8~Z33Sf@q3$#bNpXiTzqQ~FFf8l<4F6#Z(vT(jfgs{dg7pYc2yS7eQiOf=! zc;L;r_B(?c5<2?sX!G|OgZBqr_N@u0R3B;6AD1KHH-}T)YS0i)c6N3fmdn5541t+`&GM!71rh>J80;;6YEoWR_0l0yHuh#$^gO@$ z#G8PWLzIW{Kt}G~60A3_$YNS9iY*vvyLu;4{_O1c(fU!-VrM83WM@bCuKzp6(q!Y? z?Ai`NeiD8M>$mVI`bp?)cNZp|_SiJ5R2SDwV!z$t{_y%pF8;WJ+?-dylPCwSa&fwz z>h1kG?1^?C6t}E!%E#3FlOJKC+xDy3(*u3k6G}9Ktf4R_{fLbM^L%q;;;ACBUG6R^ zq;0zAsy&Q#g9W_%kwWvO173m{{fYY7=)r#WGl8@5YNx4!>bchnSuPH-_>@w#!g<1$ z@AZtb2HL)f2s`g@oS%%;o?CBAvtJPQJTvZJt#Pr)8j^%3d?rfCf;qa%$$i;k!6iMP zLs`_>nQ}l@e)@}$vYlhmMJz$P|-;af?pQ~m&%x;jrWg5ax4xv8TCV;DC?q%WS?P>}3Vq!|5_vZbG zO+YB3thA@Lsg&V3{(Db8u7b;UMaR2$XFk;rZ&g@7;A|M4Zc$@ry)&mR9z^86(=1)% zB9I5QQ+McU4m`SrZ+-toDYGnt_gnW%Oz-gJo@rd%bzWWZg08ObNMs##mGEg+9h~(Z zdByZ_B)^RTix{1EIMlR(bhyeA&YD!k`APqS_V7XNd_Pm_S?zlHv_})VD7FIe!EaRE zYBjUz0~mI4cWlAO>C0yjMut=(`QU(4tL~Urzsr31UqI)d5g$}8eI|mK4ind&H0Qx~iY)Ngh?&xRsgL zq^Q;f6Dej7E-reo!A@}@Qj?s0eIjseTBOA^Gj=kA1k-YNr>Gr$lHK}E zQyzgwk3{$@aFk5@l z?#j|Bha#I<^@ra-xNeyAx9XvlI{UI0tjoX+C4BJ+Ua?!-9ZsmHS&8Yryh3-x6OeYP zR>MT&6@jYZA~I^XN6zxYGUZH22B@2UVXR_o-l-LsYfaquIFeeP!nrqzgZ0v-H;9s5 z#_|a<+GfMgHhwXGP-V}8O6P}4pqz@+Wl>vuYvJWgF!Z`U$Y$DlNYxi z3+?GwHZ;jkw&*W!r{SV0K7gTp1$XcymLx+}vgULZ@i_|LAL5M2qGd?% z!bnI+DqUT{Sc` zl!o-*iIU9ja1MNU@ZOBD!8Tsds`$$DvNe>JR=}QxCM-5q;C(%sh=@oN*Xm$EMN3m~UFf-@&l)Ke( zm?!5c^4fI_qFs4%rnVB3kl@_FC<=8P>QF(yME^j`36b1jAU*qnh4IO}eUK!(HH7*e z_6^W-S=cwGUQ5J=$xrVu;BUX++*w>)bS!c-{zw5|WbiK2GpBg|{(albSFc-yYj6dd zDY!=2O+q{ZLR^v4x>QO&b1Gs%qwS;yKSJ7J4Hqk`os|*sTZg#k59jZBf1UD~-^n}n zc61CKk0h!#XycH1|2F9@<3yc@NE65Og8TgJ>K$U@@ULGvHsQwlYMqLzX%C+~;==PH zx{Y_cTGa}FI*2{2Q_q^Bi39maX+Y6obNry0OnYHrAuS{Q+5Lxi-`LvjN6azz_4WDt z`{OkgO6ztSvC`5ltgJY$?xx$VkEG{I4rwsp(hX)SWqy{%N_0Oo*3^tsBFjAge2!1a zmnW&7Tz=RbNZJ!4lv|kfmXUZ4p6t*ZT^IK74R~7O4D!ZbGo;fMvp-oRRXnd+p-v1B z_m;Poi+_R8+xbrGacZ^Fo1Ci#cXw**+@g0le5Fe)rqaRW!`4X2XR+-l=>4@dfj$rT0%yi`a{AR9MY#Q#xw~r7#NC&+jZ)JC&PH5THrCdU<>G#Xh0Skn21m89C8k%pdVht&hgq`A%~-k{ zp+^I?smYx*PU2aX0=jyl5| z>JlMT(fl@#FL{K7+6qgha^!IN|c0XEY)3#xv8HOw5z7%ajA~N$N$EuxdriI;@ z^VPUZEhm>|jlP|wqS-uah)$jw+llr2Va)m1SYO~md#`!YL`O|s^dgtA8 z4z{CM%@mbVgl!*j@I5dBWCw_4`-o)+xNqS7(AJP9OX=Mca2`+xrY*%`$a_&NnaVd~}OWygHF-t|>y zTcI<+LSJ9Md3lcxR^QbX&PGd{nB3%RU|{eoUO>&JT82$2TNxz((qH7s`Ar@|+8U;k zXA~Pi5}#Se<2F{Te}Z*l*pmROc(0?Urw2miC`Hko$~&2I@lrC9f=+8`=3>Vk0aUQV(b1@!mOS;64=K97gtWgx#*q5!8M3kF)3tEL>`^|k0o}|2ZlRB( zg-9e4T+i`%s>TI7xv{bFxZ?P@!qJnemIWlYm8?)4CoqEGzkNEh?+ZDh=S?);`aXH+m zcmEXSQS-5DgOc~-Xq7`jU1D9Y*q7--^!M%81J~)oZFix4BmE?8AuVm;p&-jQ$x^8` zf}`CPgv*gR7dJUtm?z)q-z}|Xn=~gC70>fy(duo?m|)2|$!T?+_?|m6T}1!eYW&xV zDq~sTTQFL_h>M=IX>5#KC|^_yDEN`~6s?rg(g6E!R`(Af7V=U9=>}QpW+13uPlRX1 zt2tR&ZIiK-{G7#o-*u98oD6rNiX-6pmYYqgYHJrb@Uv2(Jcsa0>E*%v@El`%-c?bJO3$e@o$~Qkh zzfVrVnj!o=*>6ggyL>$nY-#x>k^|{GI6ICga9SDIFf;;EZeVOr{9#2_B@GGwwZ_+79R3!$+##f-q^#}}52kt));{Xn{N!g-?5L{u43Fr! z>kIF%ZL$livz4x6yP?9D*rDN)55dX_p5JQ;i6@UA&wV(~Oii6n?~EFTYeymJNkrma zJ&tN$cqZ<(wej&yS64GpJF1j6W z>-g%hX;#c^ZnBaFUX^XVxr_bI^c6rZCuUBfVd<-i*~%s}baQOK*qmFRJbE;1LtfMK zz=5nXDm-#@bd-_!wssLJIF`?nGdXZub&>Ual+8Yfvt%7EX%n>deNt@e;NYOA97D`l zm`G;fF%v5@qNpf4KmTxldr;#YipfZ|&&UqiU1ha*GqhC{J0dEo$HU<=xykQ)*ms6Y ziaRtk`A4Yl2?X0!{ zXbPidElAJY&JHHaEv6BsBM=D0wp^=a9PiEdpWC!FrEy>u`Z#3W6Xa3`9pLksx;H!~ z66tnkFQQ$yk+)G=%3b!uKu3@Yq`5StY}WTE5?~f$F?(xl{QtWCmPTGphhLdbl~!6L z);2dcy9#St%=)UnD(A#k8F{-$e7m{YX>UsV)cy5q@2!lcKKdgy%*T44xkPJ9=8tZI zoK~h^N^WpyXmO+CWY&+ixVWTC69I+0d#s*4Wmep-q-PdjrcBZ2{cFM9gZ;7Kruq2z zDiA-q>o0uVbIU+05G34`l(FF?PXV_BwvFS7no1)0u+Pjg?D>1$mJm8MEdDEjQxSXe z#LDP8lWu21YQY9Q9_~__sS$}A)YvoefYSDmk42`hs z@x|E@Vo6F~{_1?MM@dm}%4s=%L989BWL2M(`mCOQvLKRw${`vqUAA+tB{Y$vHY>}h z@fgSd`)jy9L_+_iQm25jDRGn<&!{_ttw6q{tTYUePq(fv>jwsGhH_M(uwr92^dk*b zB_$>FJl|KZW;;b7=x8RI)-ZQSdOuutb-2fDLOITjEjzD zM&gQz^ur+F z@-J!udu|OEY-4-L(RbF^{XI|t?e&(^_FYpv@MqQPGZ7}^;EUWrPwP8P=__2JFy@za~^rI^lL z7|3VQY^v>Mcb+cYnIG!USWPnc8~;{bM%iV3Xft&UEVrKwR_73UwVe!-yIETb?W(D- zf*`ZG&Yb8FHzTA}u0BKIA#Ti(d!FjAksRIl-2~jmI6lqAQy(_DNc&Z$E6)}-nsfaK zsPSlkSStK6(#Hw`nuf9Lg4abc_35%IzPyE-QGqI?a?*L z=!@h=m_$g~aXovsFw%&bxkaBandD9)xoI~e5sgoKa9|bQX$nR((tguqVVEn!zNR(5 z+J@{l(`A-gPQnoL`Z~DYntF|*f|3hrcK+-LrCsM(T~~2yxepR)DMnKlv^v>~*A(~M ziheh^CGqQLY5^5Z6%`e2ZHuxTT4BYw8pk0eJ#9NwF}~f^sK0iA^dg{^jW)Su1^D^Z zHPjte`_mI#+-I2?ZBDlE$NFlTAUaS~~_w|7Lz>6s~L*O4=W z85?|6R+5h4CLrW;mzpxJp%Ep!7&Sj4}tt_fX=>p|oN+S$cb&U1YvF zs6u!)RKnhCst`Yt+UARU9p6 zYz%xt-zunGFiprwWHKS7egU;Z?ZP$6YdbC*lXKp zp`rf!kFCmof-#`6gac1hDY(vvx5`97ph~O8xw3+E>?lHU*dwbdf)M3v9{%L{ix>85 zgZ?^r>Ckd}vZ!SkkHGWigM))B!})d_r|wrr>EX=tYZo&+C6}TFH;!p5g@-Q0tzN_D zj1R(Yg)-eX-97TF<*vxcxETWLL2y8^>53#q__X%Q%IAMGb^bX04H8F%?0wA~UZ){J z-`$-<02qS2yqek+QZdes>YOgd0gV#;(Y{lSiru?sneTuF`AB8YQ7~q=>Tqb|^qxIo z)C<=LE>*ZH_+FG0tli@X@wMS!zG)d5kI&XELZ(WpM*4E!9VX??iJ!z|rW;as-ZM47 za=#2^7U^WWl>ZhbWWMlLp1sHY;a7vVamE5I?e@F!Ju+s^!M(yBF-!q-Efa$(>3t662T z#L&jXz zP7M!vJc4LNriO+P4ydWEt*uDQjXB|K9N^^SbnN_XE0LdtrRxW-1IPp(-t`$8($0N* za&p2iAV9hIVthA;!guFzMN36R-@-ye>7q2VQ1pp}nxWyccrNdoO%WOqch0){@o}il z0$95|1l_CGvLOpgQYj{vwQlOqm@}tnFfU#|8|yWP(b_pAcQCD2MG9@AmPdm~Mqbbj z=EURsgA8=EcPb)+j94XLnLVBuf(K#0{5AI~`8ia`dB3oz=u=PCWq%`?ML^0&GqXvT z3ISW|m5IudVFHPK6PnQFwY31EIWp3A3lTugctu62rP9unRUh7Kl_#J$RU8_~42h@0 zqP{$|tZz(738CIF$u)J^x8-w1v-lOgO(?Q4zLPovSIiVz2b;^m8UW&o3{h3`?#~(4 z^;-9cC|pnx-w-8q6e2q35z__A9ZZxjc!;oXfO%}?;80#v^lICQjG3Foc7LT0JNe!d zIip%%I`5c$ov8Rfw&>ilq9Sl6YP2XdMXIl_HgyNJ5eqwuU~ZnB)uF!eS%g-^>3C%} zQT}Q$4yvuD{WJ`VkjhirN=CzOGq*sl!uDxT(NW?^KGuyJ&-wZLxZ$d~SkyNx>?@8I z4WBH9FWR4d^chDqG#MzF8jAK8=}L%rh*;2~d?VYJ_XO-W+T2_4Tl4E?%wFiV5y3g( zDJH^+(`oZ6(kA5y#O9>H%u;tO7#N%HM_%!@(|?PN%9M~e3jsZU-N!h&;_Skx9He#g zSVOXIYsfK!t}C4aTvhr7?2`0={ABWyplAU9M%5e8K}BU{=KW7`uA^lbTh~Yb;;ful z<^glsXBJ8t*H?bMsH#aSQ{;x zpNvKwXP0ZO4CVGT`3(;bw@jFg8f{u8(s9uG>S$_ee*E}x&;&6xSuW~F0PvZt+n(`5 z*B^JWZvdIcO;1K494tW_w7LRA!@DQv8B>M*L=`!BG* zf60_~*KkiizP$=XD}4EXLCANe&!aM=E6pJ`lHVU{@}a-u4jE7Zh_H%}&pM?@o}cpp z3pWc&MyoSQSI`&<2yncaXa5F@A<32vjaaGB?HL%rz5o%Qe|Ejc+wTczFCvcjXi=*j zzd90x49k?6SlOPcGDU!VBU19=ojZ5BwUS;wc<&L@`UlCJL>C7e0*vSUy}2<#z%HAb znpP3mJHAtW8v8=u#M7hxN1tv$K)?-*h9%ipQBep0w?(1v9uUnWlGBJ|`@8)-&RkN~ zd@sEe`3dtT5E}R$w;u>7ZZOci&|6s@$lNK=DF290Lrz6Q>b~zG!Dl}4oYAp&=9L#A z5E#pa09AafdRlwuYs(^!=!B>UL~`Nr+F0tcpE0e0zTxaQ92}g1sTfsz1dG0yl(pis zCJw+qYa(rpPY~A8n!d{)wCbC%>A;c4+_M-gDr#zWSZ%5K1rqSxj%hM%RVq%V7rqCb zQLL@{|95!0UnT)~3Ji2iR!B*|fKe z+x6jDPr=kyVI&SDWruE0eZG8kffA_*jq>ym7ZdaG^O;wF_mN~{yGxyGxhr}=B+KKn z*|mF&lBwV~jqG!1oSDS?Y(@msY=%TFh7BZP#}`3b0Q&oC7g92LPG|j;2{e{6WmT|O z<$ayYW3oRwWQ5)%P{$4H7$b2y7f(kbV{&i)czsRik{V%0B|6M{22%+5Hu0AJO!o47 z0If$0L3x`DjTF;C>p8Yib3Sgwr7GL_#Q&Wtb*Y7K^CHZ_cl|Ni9u7Y4Vj21-Gmxb+ z^X0f@m56=nK6DYRU$k%<)y$E$EV_qvno*9!kVXL+Ph(OTV=|0mGQhD>cQyKZrcE~3 z7f8?EPor}Q5km5jU`#WqDrqt?1#U4e?k12~a^Rtw(VAW&J&h4nwn8H2oYy2R9-;1a zG7l(AV~{j^vo!+p^oe{z*QH6)lhDYNJHn2W)lOV*zVBarLOHq8B=#)tI3f@T%v*R9 zN0Y+x@;$ywTWf;{TQybP`PI2fYJ$DreLRO7>HB?%#;Xi1933lSV<}ey7+-U8iz=07 zW`ZPB2ux0@6Y+;~BLHHFLLlcC=lJXm;~mH`goxAb4LUswi|Icuq9`mYcgA71lhTZY zdEAD1L&$Wlk}f6OpMUn~Zfn~n0V8eTsLE|R-6L*md3_nRoERG$NW{d->UME3;!<(s z`1Cw|Z@Fh3zEZ#?>KiTMaruNIkpoXxUters|4E{2vE$C1=}3O?eV!cYC^pQScomkj zpTU=_sk!+6NE#rM4;B`oM8)NQY-MG`tkL1&`xi&k0I#E_>qMSDZAYSGC;L7|SE8$` zyWgr90uvS%7WKpL?&^vYaL8YBjMmIh%mx5BiYSr8dQj5)t5=O^L;B|u!yY*g)6-)8 zPCx>H{-^?>7Ess~K2}9s9~i6|fEpC>v1#=yXMCfr^Dbys;D1vIYU?ES?k zZF@`0A1~}o0J|<8ME(iLc6bvYuTjD$TqdEcN=Gk<{13 z#?f>^cDC`9J(`&>*0mtAw8YDA^6YFKbPyPF)PMoqEr<$^b^|o8%hA@s(OxTRI4F;s zlXIv36J{VOYh#`J!H}A|x;j9leJ)2War`y_JORY?9hZzvv+U!TX+ce7TwL}028>DM z=yyv~Ntb$c`H{HiVGb>_3kJGoU{vYro9Q=~7ngxdrMRrPxRH#v!u$b8bYUS!(-B44 zVnY6JOnB-&7i-*c97(cQM49#kzkL3MSu%D&Rc#w~qy2bwCZ%Tdj&XVV=B>?JaTFN; zoiemF1ZG4`GASAh{*G}eRIv5sOw%Wqx*e>R6MYKUe?BRNY@!#Xl{0OZ2#$-0q4q;hkEZ$lA8(vswIoPH^&v!@bTW1t| z9kA_e0sd3l4N+M57De8zQsubw0YuD9KSL<=ewE5j51?sJ1KcprF%LJ!QmYy$Cp{xW z&ur;})wBV+)z$-(g=0zo-3q;}ja{I>zk2OQeu&Zg?U(HA1(>%89(cQ7o*1(Kv32j} z=jZ!~`Jk#V+0FMzdllM4s{Y$qTZms%|_ySI+lq`$^tTU z8~0b2zQL52Rp)is$sj-tWXLkJGRvxe`~KtWmmUwGq|@}q`j0|xuD1Hr^?(z6Y)!vk>thBy_)c1$dR|s3{LA}Xc zK8q>5ZNgEop0%#hGI%fjtKyiaF}ke``%82bIa8$r?5~j|Bh7I9I0X7zmKpkZ!W^u^ zlMyAkYCT#NWBok+)W03Rxc$_2KUo|{m>z`m?OUC;#`0MZY!hbXeSCNqNg20tlN)oZ z2k#C9gq5}e!EHCT8GxR035)=MEK=diS zcMLKR8|Dr09mu3j2&=F^^5GiZS%t74`qGK|8U-6OVM=83+Rrq06;8e^QI|p%E^Shv zmBs4MUFO^br1Sr7H~K3${sr)CCYslo4|zmc(caykTm3#A8RlO60xc5f?;|uziZ;G6 zGJO4UY52o8jdu4un`fW@WijHt6#N7fj)^BF`rk98>E6G@jao(8EX#o$70jCmDdQM> z8yjg!8FJo_Kc*UifbHCR3+pBice~`PPp^W9`?LOlaY;U%w)%#^^2nvZ6hRtA%pB1% zFG8&i5}(l`-B={mrU(L0@Rtt& zW1-fWFD~;1dz~-%=r93l zhMZ)Hij0&CPB78cy~p#&F4NfgczbqZz{++tezHC&2EW%ifEbchn#TR& z@pwnaZ8Am{mY~qU(9l2$>{$$`Wqtp^042<-9xk3p+YecC{3jNJqep`LSWfQOPyc(s zF9W8e75X`t=BB^e{{-Sn$;%}S4tIS=zANuWZo8H#wZRb0yz+* z&r$Ia@sW`&qysELejuf6Y-$uUr`I(Y(MTOG;4SI88OJNnM!>!{7GU-wd`s1i7 zKC%=nZmSa~GJ??`MY_*FdSz3+aKui*Dz$Wdq8wZ4j^BrYtN;q!p>(h6f2+XxoVoCf zd$sZ1NA2f4vaV}?gmmo{{L04lM*SPas9l~$gsxPt7tk+U4b+aF_E`P;kH6;IV}l*H z*)Xmo2qiyCUUU-QC+#r9d;l}}aH$)mr1k{BtAG}2wLWgyn)geQmh|R2RLf*8;Pb}b zB{{NRB(i{g(61B2!8pQLNdzf zC9>=157DEq$z?O9Gtbzn;Ob65LNtp={PJwv1)6F+6e4@0t$;W7Nnv3D0pu)4ajdRs|MR0Ml z-~Qze0|)~BY4-uhOrWg>0CD^H+WB*Bp)t?}A<~RbnWagMM@m{+MDuBIkk-Pg(02R4 zsf4_Vd3&Ou>w|)9`0611sBa#)jBAdzs-0Ygr;qPHeGNKMiJO2dboNi<57%BR=4NDi znl!F(44{My0Ik1}_07k}#~;VP?&`8iF+03n9}IRdMWfhZr2el>xrT4vx@9vt)k5*y z9xSo({5IytrbUpWqz-}G(HnANC+Q-z({Q+xGfHl3z)ww^f_Eiiwkc7_rDb_9*yHMO zB$}>iCN(nRdLv2f@w1KgOHT_F;@6|SpY|_ct*xS>;;DktRLmu*yBy>{T|W<_Wcflq znfe}~CJL%A7$3ZIUDoPG?0(qV$Z6r}o7u|NGOKviIs_qs{=!f9?{e|6vvMEFA@dr6&MC=4APoogy# z=XAYb-tfHi_RU`_adB~jIcqLQv^hhA^L~7rn;&UKvTX`;X?ZtDfWf0xE(AbVh+1+@ zO-)3Eim4M1dfT%B9*@g&kTEa-Y?$EFng^@m6&7{}hA5ypJdQFOE!5fh-VEGY`Ea-x zd?Db=r`-Fncw~TPRd`20T-?QpDu$F9ms7tHNI=gA)m>a%)YL`@s9)4CE5k#?(xjPb z-n72~{~X`Ze|zA4y1#0(zoJm~l08(b$^pe|h^z5yd*}<07ZZq zp;mL8Ro#w4&(_?|2!#PZG5t~Jn0CbU=KULnz6Sj(d~eBPR>x8eZ3lmf`nfZn%PJfw zE5KlI)odr%V@ibTb`;k=UAb9c?xH2+_eU6q6y7Z%$~tzfRkN^fy!sE21)^? z?Byl;^5x4;)1bgW(-X)`>Fa6V6-5gYG5)J50Z-d#9L)(+KhQpmM0JEHh+`**zbz`w zF*x`nqxkDJk`8g?)cyrf{*{8v#3b|A-+R*)w3nIq9{icr+R}b?*y8~4!95Aaddz!x zRZjCuz|tA>Vx&-~iDiL-NHQwA7dt_+p9(l#oLe1$@{yC%(FIZ>$*9WSFWsb<&qOY9 zv^h9sERa-GR0dr?`jSQcfCD+U?oEpqXy;a6ynzu-lh>2)Y`&9f`_ z>4t{c%Zsx(?k;lDZ)^Y&mS`}-wJSf28@%0MxMu`n&DL~X;@7X1V0i_}uxu|c`>xki_D5JtuQR(2?@9^8KiA!h=+$~sG;GN zgJP9pL1{%7c@KR*4=|0(i(J^wHu_*EUmsYuy%*G4e_IG1^|enLP=ZraQIl4i z%1ropcpvRa%rISE-`=)Jdy<$k9ni*?X$;1jVz#ZqZi;Zt*#mE2tO6^^)Q5k-qIy)- z*IGY*qi2FDQCnfOA2OP~eZ7YV2g$EAvFF*j*fh#M{)*!V!aQ&&UxJ8z2l7XW&Hmh| z5y&!WXfDBExL;Dr8zegdjC7|5o8`L8A-4!=fam=R7&(qm)2&Tp>{`{fC*QFWC=@|# zcGsBd)iXu{9B_YB_u5(3WiErxpx&l`y2KymAiluX80uc?zLSVR@X&aLrhG)At;br_ zu8!qqF8x5ixCNZ>!misy%WHrw1T-Ada_6%_^wCnCVORWHU@T{DR)Z?mZ`ZQQMnQiT z;Xd$w0ChH|{`Tv_)f~9?QK0+h~YTWq~|k?s8P4le{* zT+fepfO#9d82^y!164r2JWJyfY?Y^?1**=@y;fF!D0V*Bxazw<_xj|47Yr+rG! zu_@42pM_QUYI|bTqCqsZmrW`cONOWb%E|aY1mZ zbj{I}i!>>_6BxoG8b@PmD!B^3*Pal2O+jLBf%araX*styH0S`Tm*9|qozRH_vFZ-t zTwxuQ?A6G^VR;99kQ5e%piDym!Fq5n;FU$P_~$7|`yuIg&KXW~QhD#vrzyxMnwP%XKC4m_%3Zvyf^a9W;SwsxncJciF%e^Js^4q#8JD#rlw-4vB9TGfT(K;qES*-en^DP zYcWoB|1Q(voj|vr7@yFter|JIm&~+?@MPY;@p*T5w~def;^KVgI9Fed;qmJm$G2X~ zd|_l~9}y7WV9-KXt9W{NzI?#Q#zu27z5?9aiF&S|H9E_5{uNF?_)QM%y8l4W!zS{n z%*_GvU;K_z%+LTt-U-Vig3$9R^w0>2$eeL73*d&z{2Rcf@ErrIem^i=6+{58OOWhL z*+MW#Yu}$WtkaT0^}~m`v^Qb-k=o7kkN(ff80Xdp-WXmO1uB}lWDKY3_VqpTV z(T}iyv;2-c`ip7Y)$c@%53EQTf4{DUfyeVFd`fX}RaCqye9{p59F(mX8ylyBr}e^? z5z+=*_+@|Zje>G|-tJZHNnMY~Rds3Ue!Rof8?EpzVREr_#mY)#5n<5aSv@h}=&asw zo}saUgEz+h!NI{`%_2Dibe^a~P_LNd{1X0o9Gks~ogE_6FVg^4&SWwBSADE0RN*_?_FPq$>ANma9?PWGSe8ksp&e%D*&&t^1HkMWXJ!5tR)#E zI{wWj`4eb8v_j6@4<9}>R3oTjOjm6G6S;FU@BW3)-9u9U4d{dMx<&3yB&Og95FqoD zC(8hyOevMBO0mD@h_`eGfx-f?!gs$o?F zGKlVHj*d%t(Kbt6tF(h6S08H4UGBr40tr_0!r1eT<)N+Mc?Lb8|CFG=we$@2MN1`3 zJLOxOP~*9|xs@iK%^j1mxP2y+73bBsw?1}_a#EEw^#8#M3>g4cfLPOE7^BZb`VUs% z$^SQ2AZ8OdF+q(23ls<|<@iR;s}O8{J39z*3h4AfZA|Rh#3Z4xhf;tvSS-Vb3&4m| zEK^GRzOvQV49By*rh6?CN(Sm@g2Tk-YuV6dRGH<;AlxZdaam+nsm3t|4`7}y;Ez10 zbBtmPMz6Sl!vm*6egyF6RSxTyzz|LE9eH6mM(c1jT49x1#HF-ya)1|;LLLxIy7d$v z&D^SvEFX$kiaAL227ofDTj;(Q?55`WQ_47WiXA#TXz~X5SkL#;Csm1eXib_PWPF_n5nHzZ z*zf+a|NQ4`tHk_AflYygu+8#13HL}y^v|oWJ4-LJm@H>#?ctmLZ8hIeDjr3f>Q5n#clMicSz^=EOvO5G z1K9H82RVEv*dF`(UV-{|P?sYG8dobjslb4K{neGgP(ZBb!hl*kS*t5Bf{$MR6HK8L zvA}St^s2Ua>QpCQqhnB+3wqvmvf6H-UK!XiYFOsLTV{9vgNwKH=q`Me1e)9qwL)I+ zXa9cW{GHqCx*%x;4}tdH_`h*m{b#Q8XF+lR&K8$8qc?-U$1@5Oa+MVb3bN z@HWvvIn;ty@czE-UMZ$$S?0HEO}Bf10BxMcar*D7p8MN)M9B=vuFoEB+ZH=$sf)!U zTSV{e1ZmfC;K|=x#s0JLteX;-AXbKzHZ}VA`j`Y8motYT_J;Vr<0O3A1^A@gl`irl z-~%eB7uG^7{`sLVPCu{$Y1Dol&YH}BKKx5`O~zYHSDGzJbr;UXY7x-?Uv@F{?`LpBA>r;w{_Yxil%M2vSIhK+oHKD@ugWD5^h;oZ-r zxc?qX8kN8KyF8SF%b@j;x}bXZwqG}gO>lH{^jYm>x%-8)w#alxM~A$~3Ago!w02WY zRtWw8H189X#lEu;)TD>^+k$dZCT3=lvkk6jP5aGp9>IRt!X>Cr32^%<>Wfzid?Qnw z*vX)x`vk;rP`>gsqT}@RG)mjKGA-@rL-@0%0Muyh{Cud$;oeayV@G%QW@@O&hg@Ks z!@|N!6%PS5jw4y$QrWa?^OTuJBu9WC+XGwJVzUOhEU2OZ_ACH6fMmT7mXr*Wh_TD9 z7@oBY6$h-Hhm%4LrNPE@olk z?HzSh)!|<92t`n8QR=j35TSVBF?~KAM8PF9#L>^3ub2}TA1^H}b)X7Y%mI(=vAA4m zSy_lHLvd-Ta=LPQMh4)U1-KvDZpI*((m_$6k-{#$hsc$~l>0J}64TTs7IF*Jb^ULa zkxr8Q46{ADF~FPQ!?H4p@VEko;S*bxD&(AVpsMcsu#j%xHWDqkgaO50A2sOGu7@g`1& znGCLauSzg`-MRJU`N>9qN=gc--{f#Vcl7QB_IZe?C?HE~trw-Pe{toK-(sp7=iXx$ zXla`={8_!X3Ru2^Q?iba9iwF)6W<2rxF$9r5N4#MoiB@AfmP{Xds|XkT8Sy5#^p#H z`?^{uhDSPEIUmsQ%>g99qfh|2U2GCk(wH2bn?&P{(7@)pHCTi1;f>DgYC6n|Pr%Sf zzQwu^A_ky&G4Ri%LI1JAka~`I(r{IFu=auL2qxfYJud{#!L=!7GhdSBxG9oW7QF-f z4IEa(_XnI!H9nx8lhk&@M3Kaqd2_n1E;zV5M|jN}W6EE9G15Wh)U$4}NMQ%R_*SX8TER(bISwVV%N-6Q5| zRHn0sf1QNcKjgY;-&|y0d)ne@%cK40=`vsQ7dsDFPxfgmi;+ zNjKcZd*VCqIq&z}bMJn9keS)D_u6akwf?_a1in&`zJBfYH3$T9T~tM zRKte`W)J@Q9k>?p_jO_x_bTLNX}~(U#C)QQiObrvfyn7NfP%^otvM7Gcz+k zk;hb6lkOqUwmaVF)Fqtk3Oa3!Gx@$kmUdvo4jMdb3SPuWynNY}09RopBN4~lO8$ft z4}S34qrz%6kR*E z(hNj@=8xLiq^NtY$->Tb3?CELLP?I-N`gM&R-kOY-Qp2yNccTgf96Jw=$9msy7Doy zBAtti$3iJq)Uz7)wzl?3G&f3~Dn*6$ssRfRrs*w9L`V+GYI|!Wm?XD=c73{$>{^4( zR8obL73M9D@V3jhaIwjF!JQat0VBD27q}zYHw9hYw+oEa0{d}~nDl;T&*45>n>hK= z8aiasC4{clJJ{%s;kaId%<;#tG&j?@?>BK-VFx!MnzB z)opKe2#W!EdRV7f(yiN|v$}58;O6-A14Cj$;t}#u^;jpacy`LOtyMIixj9uh9bI}k zrMx~WI!_cQoL1yw`W@TqplazaKFGsYtZnKqa$|KpYdv|z_U=Mwo%XDJU%6-;MzO@l zN_o_Je&$AEbqVe=GWKFt#tKX^zwq#eOuMe#=KY>X|0+wtX>}+@%uS`jW~ygc;~+&M zeDLQJG3Si|bp6W754MXms#{{`zcwZWqUF+66eOXf--z72^z}m)7#$W)Z_sX38o%Hb zU&=~8|15k!~Lj= z?jhZ_-St&|kHc{0!2M0SLPKeJ`OXxZ`oO^OO)lq+qnGilNn+|&FBF`kQ{R7=iP80P z-3#VCCizBGR;G6ifl6?_!l7I6fZfvy9C>vxdf7`8OP!bR+*mh+9y*}AT$uAQf~P@E zRn>80JeK1rXN$bLs%j2<>U@4{=1XANh>PRL(Vm5)9p@wnPA9_?U; z2Km=V9hn5HI>3eT^Rp7)$<`@Km2^-*>l8p!(xmV1S{$q``+TTXq!aM%8AQ!vlJnNb ze@wY^GPARH4pq>EOVj(Fp3$fzT`N1&sv7(eYxVIoEU^cnrscn8U*4Dw=>){N!M&-ffRmd}%Rx zv#rh9<7_X@{a{jAxQ-#F!DR?E@zA4hBGLK6>s^7=+FJH?>SGmE5eXf zW{^dJ&=&dYVz+gPUUs+y%5Je2% zqITu)FN$;r=V!tnn8l$KRAQ1cUK`_Qm6c(yvz*#HYDR|-W2}bS=nhINvKW~TM#o-f zDTXsceLrYhv48#wV^ep(!kaAL__8zE5hbl{Vayv|<8^W-AfyLn@S(r_Ei{drW?39+ zHL6l=H8w>eo~N#xLibWmsMo7C-b%fopb}zeUv+iA*tjJ& zc7j9a4(d2P8->TCiT% z-w|^G>q<7|8p&oIF{aZnB9yYX@M_xPlF0#N4GPw+8H|ZZvijYFyS?x#dPIQn$jSn0UTX4KL1nC42 zZF)Fl8haTVLM1~5seD=uX~gTpgK+$F7sZR_S?wb8W2`qL?Ok01-l5h!;I;;~kZ?hM z%BDw}bnqr~;ILssvfs}A-;a95Gj9C3t)Oa&yI^!g!fAy0?SIL*DJUr^p>^uMe*L=3d7lItG7u0KciY?BTV#*Ai2dxc0m-6< zLb#n@r-kwux+$_UGrHr2Z6>N6ot&Jo-!`_kF6^L^F^K}|%IvYccFK}2-`>wK$;rv# zVn36y{T?*W#`u*<+(&{$oS}&U{KJ0xw8Y3sZ9jrZ8W+21ra7Rbq!^F2Kvnz2&3F=0 z+6XTGl;YyZf=>mZ57N}c#LXNg7bff6+IB-n8oV0@DOF=8id|nIH06uRa3y2re|h+eUy8*$))>4YWDYR8BR`g zo%?|@`JPp8#W~hFxO{VS^9MGWD%yD(pUNKcFh!-__kCrg@@p@5b+_g4Mvf$7^egfV zO>SWp_qH$^U9Tf!eSLi=1^x_i<{NieSYkd!-(z9P%F238-tx2cqf#Cn!>`#{`{nJ7 zveiKoQ)7fx#9I=3C#QOs<=L!cPa&JhC(Z%~v%xK^0{Ix&r;M^ayd5g}c+qvab_z~T z&f}4u>e-*Vf!vZLT*1Aa@Y~<242m@J7pdaTVDweEBlgJa^l-EOq`(iIovSZCLziecu2a4T-J-_M;Y_&6?y1E*2 z0YOD0oWfm49UL4SMHU;4cD)7r`kP;SJB8SeXXIg3X@`*ng@!sJksgcd&UeOyTU*-N z=eK|V{{7%}R>*C>Aki;b!KAp)6o0!s$x#_CGL-iHU?LkUUv5AD!v}rs6Q^#H?gtwL zqJx);gyfZm#$)U8O7K{I`9fdKpXudqaRz0`P|krVBc^WV`VCP2v=rguDl9Dg9V#$6 zeAJ~N5}n8QmIQXzZlUB4wU%$L1{c*=+*khdjUDFIeqZTwzt`bRfb*nlz&W3Qfb&o{ ze4^Tk>=^1NDjqAJ348qD!2?l_q$ISaeQ&B%$z&o04UNd&=Ie{1-*ns*BZ4Dives6D2G0h#!*KAlx+buN-w!lNaM3mP*M2uvvMTcO5t06 z`%ZcoS9lYDpYDyBCT*>{c+-(F&a={oH}>;fW;}87DLruT{;w0*J7L+#_fMI(W?8mwjKOinxotLTQ*D9^`Ss108Lvhvkjq9g z%idsqc7s_ql7vgo?b9a?$uCr{sXC|9H<+cAkd4C|cM3VcyKZAr5#&l!%$MDY6lEgF!)KMA(1uGZk%zak|!3+rH{Rnm-JR>^gaF6 z*_PJeR2TAa4A{#w*4B1%csOnS{wXdv!?Q>64@JXmnk#0uTy}rI zgM1DN?2F#f@Af$&*e2K>n4Hx~(t$D%6NiV39-A!{rhu0_RGm|m`e~t|FP)tB2lCV_ ztS971B-NbM3=9lhU0vPWj^|&*_=(Se76pcd4O%W?L?nVzD`5N{)L;`$CceC!R3sig z{sCQ&7$>LALT7C5&Ryj|@s!8z`<5_^(H?yXQgMYa1u9PX6NiOPEt~o>qxMKJyiL0k zVueku4Gd;$t9CNw6C+=Jw4MDHxLdkA#}bC%mrQnLX{XBK*0HQVygZo<71yKw#DUNJ zR-?auwd3Fu87)|j)EdvVhB|MIE8QpWeAcV=dXiDrzVQuKXlUr`Oof!J&8dcPl4|>T zxs}?VKV5U643FPqkDFGDE#f}&*xi!8&^RPEQBY9m&Q;9=Q>^7wJv>LHe(A#x%I8)H zGE&kax2_dL^boUh;0kmTVjCsv{K><^;~w)%J+DL&_x;`FekONGo%6k7hG4XAgV({v z#Ekw7=+s>-YKXQ;kch;<&L-JCc|Ch6;C8O*$q!A`I0rjX1-5|cSUxg6JX{gx zHu?q&r<9VTUL)VpOU3A8LBLOs*N0t`n+I+#E=#b%$;o=Wx;D&jRSD=zg;+u?9^sq) zsvmT@JX?`P8rn`}@*FXACtJg*Qo+x|?u_)g;bOmKXtA)cI6XVtdx+2z$^4nh@iO@l z4YrAnZQ=mQV$kb;OI(4HUy%>_*eQq%x}dEN{<~+(B;w+9 z`ft1&`|iFF(>Z!1^7_wZw7+F3nS+BPhC>%tV{PT6#_#EHB~XPiLhe3ATrkhwSZ<4s z+yQwd6&MWmBmM!!5bGyn_Kwc)Dk$$6A3q+`u3BaL7U?AkXZe!CK~>xTz3ythGdW;P zV??XNH^Ci$rPtH+4*x-rkoURAt5>gNWWMVTib&vM@lg3H=X{)uSaH)xV51CfakFOJ zSf0so^m_jMN*!_99__Ds@u|Fd_4TziBW_JInWZi*fn@_QNGkGd`YYBA7H$?-4*IJs znhmb8?OIt_xNSWo@m;yzmSlVP_s?V+raR8d7Ed{1@?LUbV`E<< zAZQDvR@czDNlq?F^~IYtT5bT(^+}Qn>-un!VM#E8KfOF3)-^LT1E!E$d=})M zL9*;U^K8ry48yH!jv?;;+_Ccaq8^du7CRJISdCFq-d6jd`ync-nfx`oydulpyDe=k z1fIUfR70a5R*K{J78e#aMyv9)hOEWuQebBnuzmDPY5~X1!MgnX5X>TiJs&~AE1Z@m z2%m^*H!3mdg4LSYiHrLzyq1JEsb~sGnWU!?*vS_(=X5+TH>+an%?F%_ z*Tleag8Rcp?#65U2ZW)b%wzu7sVUiEDz0_PR=)f_ z*tPce$81cyF)HpKiEa|AT)A1Um^WSaEVk zMZdsGhM(j$g;1vm+DbVo?1L#!)aBycn>TML*wnJGw`am|M65MEJv~PTxR1FyTUv}k zp|x;au=??ijJomLu)O+YW^Ma}s9;V?L?#;-m+fMAVkeqAHiRP+_Bn~t`2EswPk1iJ zSNUep2Nd}k9Y%le4od*DxR|LyGc~?#N5866{3uZh2_9|;qQZter1)=96g`~1hb>n< z&l{T!cbQuSovpJNjA8PHZINM{Bn~%p_h|PhJvu9{mdWT_#3Zjim|j^Kt@m_Ks~{l6 zU*;w+S?As=hQaIH_&9A4Pv10%=k$1}?91WYgc#}6c17FlM?Fy z+^6%Vd6q(=_&wLw>z23s%kwhWIHKitw#!+ge}M5$;Zc^RTj35rnSA~%=#=lv$&7B}KwEQ|NEj6{LgOun&(Cn5AfH~>+Ee?OrNKH}NrI?HKx~VX^-$NA6yiOE) zY{CA81;!5F0zG?sBl^z zZKtpovDq3FS-k!ZKfDTQ-X2PNRoz6o`aYL+H;^`MnfjuSCA?7!wW3$SP>T75sUGQfq%(@llJc)C9AhOp=g?HXhB zApVsrPD?#ajZ_5#=);_nMNYM|US{u1i>+CU+$w42eukTjs{ z&wqT#Ei||Yd2(hdze@H}>8GOD*~de-9cP&o8bKvBEv>PiKYvzdiin5^BbUD9nWMH` zRG5SvW?*l6iuTWqg=d>0lD!_V#emXLW&n$^+6#(eUf$TSMi{OxEG!I-ptUNj0fpY^ zO_R2@wSD^Z4GP7cjLDMu@tZ=R)|@tcsK~Ib@OL3Yoy#^EizSDbUd4ApdFjNHlkQ1evk-xOa8Yw2_hT=Cr!F)@W(gV(_DPi3th7 z6yS>=tUhzShXB);?fO{QIXI8!4 zO%nc3ShQ^>D!rO3>P8hB3MRgmqaQ2Z3Tu!W?c)t^W1?;@@D`a6)7$GuXD3QLZLX8X^t8isIjb$>z>wBK**gz|VO&LFb-9=lTBL{rN*Ct^ZeYjr! zE~}#0!L$~I)~YF3S`s|?&VWH{yXt85|D-?3-m0?qi}_k0Yj^A})$h=DEVg9kxIQ{C zG*p3C*W`bOY-w#t5^@X@)lEN=Y-?$`W#9b)vq<3gwX!vHRW+!vkc*g@SmHb^mk(7g zkv&*i;DUSPoQpy^B1_R|_ra08#FF5OfPetlBUDGZXG=J(uv5xmDhh>K>BJ|dy(8k3 zzaJ~VG-ov(RFQ3do+NT~gZiN0ysp{zhU`TcjfIfw4T^!6G^|N`gbuw^Gv%clv$NdX zx{eCIL9G#61{o4Av=a~nvQ?%jm zfl1rv=CIZMfVMeTcXuY=Lv^`yXWDYa5C<36s~x6$B8!At6|-VA!jtF=wlYjo)#DoI z=-K?j8+AFk(FzB%Y{c)?wLEW}$)HRy8?PVEnoY0UAHY}R;^L~2%i@vD%8VFyMWVz{ zkA;7q`uXd)5A+STh0we{b~i6ehYjuNV!!LKu zZQ=|qdSd=uN~sM~{Bcr9ARc912Tr3uqyMbwS@p`Vog+Zc)K5a<;R!NSZbu3Gt3!%b zM9y)8C1*1`N5`Cx`${ZdsE-5Ug&2Adt_W~8bfScC7c+sM=v%Dwb(*o0qobXn>a z3XI^HtGbnWPC(S_ll}GOo#(rOlAsy(^`~^d1a@oc)-!7}ScXxEiNV2gsTyYO#%N@( z{HJU+-q1ZEiDvb208$Qr>kqLOlsT9!uB_z77L1Oi`djK1RR;0MBjPF+hdoa54sx2E_yEOvw>p{@=?rv#G2^ey) zsrvQNvXY7lo8_jgw@Y0gpVHGq#n+h(edrSs5}47UNNcm{oue+Ddj{9(;r_GV4{Bs0 zk&cc74IKgT1)-5Bl$DWDdZ2K#@tW>cV~)}7GVep{Vn-k3t=s|K6KR+Fc*08JKPle- zAj|(Lif2}KbMb!bd1M4BWFG!I-ENt<2DyXl?*CUJdcxsC!(;VMCn}i4M+So$f;asd z3c%b_?cGTIX6HXSFB$%KzFkM#9OwWf^)LAG%hm1&)&Or8X*{G1mW|xq-j3sO?k?mX zcNv=R>he)9XDY+ZT~gB*vI@$fVzhmH!kKwbMrD?d#{q;9HC@2=Csh09;DOYXaZ-Ufx<6D3} zo2dH#pM-Q!q!_NLj zU1z+?-jD+7I$K|#&?O>q$z0n%U-c7@;C*C%6wqPJt!Zt&QIJ?u?YMq#m-L#aFTiw3 zpFi{30bar#YkBT-91v+=;~^rav?o(shVJV*i$NgvCUK*euH07%99?-KZIf| z5smsAKk_lg5~Xjv)^uA4HkI^prm64$)d2mc%k_^j|Mk4=b|&)pr#Wz^IX`b?3^P zA`N&o$y=RYfyzhW9;965!uSt^1~P)_p^@|tB2#68Qtt;H*!!f?!y7B}IpCb-TI5n& z_i0snn zW=~H~jryj@)cRE@w5JS-e?WAwF@cPQXy=KD2Ro=t4(FH-4S; z{TG=a=I?-bb|(tcJ#pdM+LIK5k2MU_l97?oQWi8^(V`wxt2qDFPUia|EzMAi6>GtV zE&1M}$LA8gbL_4ZvAQR9z*BL1zIQs)L%fU5Q%4hBzq&q&I&pTd?|{crQ{JYerPNVT z@g-s9_4ZSWKi2zPQpF9_TbjV!s2vkXZbsy*l@t@-Ok;AWiKSZVVx4fXj zBna*d#@n!K7N;K?Y{l}JE_BDnfByU!I03-1VJ5$u@Ys$~g#GL=a1I7zB=HnV0tVW5 z8BQBCP>1D{o>T#AhMAd}pTAr&S+v9yqaY_IWdG}XXDrW)7cWS~LA5*E?N?mpp_9vq zELcu-o>XG10u*gX$9)})UHAR9kqR5SWXw=mJwHGHbB}$9fZbg^QA)46Wi&h zCSkp8X@k5#00$OX2%Xq@TDa(Fp+1gyc4ei@kB<*tXUZ#~jQY}LcQtl$d0%WFo#GKt z65iql0(z8NDqcRW`aU74`2Qw`Cyp3=_?7IbmiQbhB`KM&Q*sQO=L=L(X3ybI?`=3+ zw*k_5)V-I$x})Vbf{Neg=H3qGtj|WFR9T}tlUTzKW-%nmm>4--LXsTK;_`B*_Q<(TJY7)NQqsJdPd_RPTV|>%EcA`NKC5d{v0dumWL5JUH3*7O|$vWXD4--UT zJcYfxySt#rx{}3`&-Yf*4c!=wvx7sw+g@wPEgqojEgi+(1)@g{Fc;KyJ^6Te9J&(( z*y)mKaB)UF0w{cQ{prU--~!q8A6d04OJU8C9T?Ch?t zsaZP{TnncRMONZKkdK>A!1O*U`kg1kzo=FD89^L-OBQ zPIjp0W-{4VVOVbvg;_7$q;oF_k{}wa!#ucu;RMWlt6*uVGAOUnyYe?{9Ogg&SHgUe zV3*ve^7=l&f7TrY+BADJ+g-r#;%>3A>Wt)O@h7=g-|At_eq?g^0BDvn0WzX5z*vNDh35f}YR2i5q z#rM};c=3yb%hXR9eSz`}xp=G5P+H~n0*iH+3NIkTg!c5jap44-}_xCf?Q&d+D>0%JD zv-h6te9=6fs$Kw1fs1_Tn71Gc0VM)R;&yYb6qJ-#@bG%^mXbl~c6{~+&=7W7%dU2j zl>C;jd70?QP!`nx>Z>}dsyU)5f7c>7TQwU-{ETEb;eX6;qBk(tKl%XGJ3T#pdV2ct zBl&R{x;oA<|JDW zQSnUn%r^^Z$1wwzyq7VCAz^GB0PdUI`?fFAZ- zzumbljks%dWo3BfjUekN9JiO7$?_le^uzt8kUPWPkW^zGfI6-za8MJa8arJItCPHq z%1r{V{yk3f51{cUa^ZJ|;475#s5|P-98CqFB7YC3#AF75GzR*CtPS^+1QHTOYk zQaH%P4C*__8-KqCkh!=)k}A?3P!Aky5a>I&i2I=lURMe9y8bR zX-wbGN2Sq<%+MW9y#)jtl)G=>R!^%wyUd?K-R4@-0GOI=sBMk1@@8yzvk2~=#}0UnYVPF;l;FW4GjwB&b6O}gR= z;5FO_8s8I=tIX%_1*LvEM=S#uyr%<|Jjnhz$x7YOaBjKZ6u(}mr9&Y1xImt$EHC9*$CV!2Ox6M=oX0OQF@aO3+U0n6xyoT-rTY3c35;MfzB8T5 zR8HV~qAK@>bGP{c2bODe<5dQRQ%aM}i2Rzl#nt(RjltiwDKoAT!U0bH$?oZx+WxF- zsyJ7ci}|%>V@#g>=;&a%t5{r8@*?hYDRNnPAYd|Xn^HCs=-D11h*ZM2>M9|?%X>e% z7Iw?R1NM4z=i?))c@~%y39=|{t=|TR zh7e*KeV%G*@7(cIDzvK7zfCYD*f7z5bRugdCMG0I-#lCapmTkFq5v*@m~gF>h@~%s zj{^7x(qXi{4==r!?)J;ASGDTAgcS7o#qzswxUhez^R|c6=JNm|8lQLXmfibCMn-yj zEoMd`zp+{R{G!k2GJxY)Sx=h9;ju{9x2ZP2?C*a?`j5?*rM|p0g+>^-yUoU9|1TVHK2|iZq)vycLg7F>UB>mz^WJ^B6fVpt;VY35O>tr~KMt zzi7wO&^)L9{sI2@?NgH5w^yd8d-96=dV3?<<{pq=JNybYW9m?hVKBW1bQb%|E$IDw zGxy-#7EOqTSGByyF$3UDdz=Y4VQ)ajFnB(TK(qwgvgj0fwkUR?UqjF+r|D8XO#&^1 z?#KPr^!V^Jfnhx2n^2M00a=`176HSr$)-g5t6gIejTF`6&Z`S3rL^Z|$Q;0{ZGT1G z>`)vE9*d~0L|`ZKR5AsQm|0l#2{piLoXX0|?rq4w(DbS%N#QOOmW?2ny}@ZMhrK*2 zidqKEjuUdUsBu~c4vyt9$F1(|eyI<>gWx1GiYCu^;MUgGAk_gP2D+!`24F}@w3ZqX zu=GiVzqSIyc6C)4h#oOz`%d%UO4@EEirR=+a+H7{kyQJXlr{r zHz%hEXnxz*AZZ4DK+ERCd0~&g*yjk4R2YqLU%!XwMcv3|C}29Em55%NQk9&Eh;Qv9 z%K+#A;ET@50j9%SE2=iWcEOli&35X4gQ*ytZvy3Yv0q5ovP2OBw z6ae?v*|gyW#^d7bK#EbR;rt9>;n|j80F+caDrRYaKvV9%i0S++n)W(Np|`hp%3~+g z&W*TGzt0h*9%(1sJ&MkPfqpFN@_V`$xLveQzGQJ~SK2Ob-v!>gg1Ukl3MQpUNc%*? zO1Qt;3}h7R>WFECj0_D85eNbaYujWClWyI|Q+cN7wS=|f>f`Ddz=Lhizq%4VC$M9N zLzYr0<4eSn*T=FpK|irYwXdwKC;+m$zgRLJLg|CV3hS5eZhy@(H#gfBa%-oVSS;a* zV`NFM_y>+gJ6N;BT9zT`6tVsOM;y`w&#ED9%RewPOaX$l?6}L=ciPUN%lb#la)~iN zoT#3%85^g{vEN$|2BX_C@m88N?(z^?G^8$3ZeYr$OQut znO^a#>(2@JOu1n9vzp9OOu!2(wwvtaOW0|Cx3NMfua)}riib*AmGy$A0@w6}VbE^SvwAGzh^JLbO3|0B+eUj@9UQLfY57-H!*(#CenbV?X%B z!E}(5&SM(quQFRRi-h{6uU2uv?oiOJ^ixa@rJ z{nm6L*nRP(8j&f_s7I=TV{%le+8us1w zh6aGbuMpo38MPnZQwPm+1=l<#r>+9Bcct024B*r|ppUWN5P;ha;Q;*xsRXwZsB?e3 zdBBt&04fGJr0(Azl7;SkUD3lv{Qp1J4TGtTdI&-u60O|=r~D7}Z96*_1(d}x`1Ca; z|Mwsrnx-!Z2MRq<7jLxPEw9V{r$8?OYa06WSe+27 z1RBPO`wR>z0~FVAu@_iG*-;G{^I4eBL|7$+`Txke#XbS?HZ3i!04Ji|(tpdT0Spe( zLM^S|{BZ*Srv^J7vxFu+hx%ReYgIZ5C~kCgbRe3=Kftel2mR-Kx$>zzljoiF{#ula>ngadD4(X8(11G=YT%_6q0PGo0wU^@?t z3hvm4yv(}`sQ5SsAd^~8R=3Y>sdNkt4B#E&XO~|_%RQMW+`2z?Y4KZ+yDWCo_=!Jr z)+!V0D)>0KC?+7Fj_D^D6~E9D;AK|1xLf>({$2DStOmIUB5pin<>lqUl#HlqED*}de;4cg@vapzfJb15XYB;FX z2RYvAtBNIT8T+Sy*nA!6XV7c6MAHeYwO$ zehf9{z9sVLk@+kTPK~)oPVsgYYX!1^d4Nw$*TdH%78MyeJ2$&5brXcph3h9tZ<5Gh zFn<;X!UhH9(MH@O#rekZ{8lTIDEEO-)`4=Bj-LKad3RGFA&R8AQR?0wT)S*$P#C2a z=XI`Yuh(u_us@|!kynTvkDP=B`$^GqAd71Yv($cAL&G(P zWbhpqu4KX{eNPXa#a#7WN^Xn`?2`iNprSGS9R;elP$8ui85t_QWY;VLQfLI{EFkpH z`q~+ni#Q;9F|hzL--tjaypOqHl8sEKhrjV$NGuQ&P-T`??!0&)Lp6=P-_Hk9+6pwn zXNZvo67d)3RlmaBy)B0en|l1N?#_B#ktHE-k_@JOa2?`QbiturWYF^E?K}VQn*}PY z4HxGpOw!>u>mN2*)@v>&v^IBFGI)Pc*5&xi>U=AK zmMIn&IZN2N_v77W0HH1_585J_*oWD1-^>k9If=OKnl<_0#S7S|-KXF&?R?_#tFWYm zXDkuB5ehy&Gn^5-C;z!8&lwHa+Yp(qZl!I?N*burmX3sP_zk?r%Ix}|o49SwwpfJo zyN}~ROp6-Uu^W{E7W%jJ^~oaP7^B3;CJ@x_X%FcKLG6xX^%|@moWBlgcOE7%gtQRs zzAJJW!)=|#t8Ub&wZb#p!sg)FL^f&EzUk|6YN+Sa)xBrF682Uhy;56 zE*c-Ovh)5e;uvqUp09uGw?E|vL^Uu>0kr@d0K0y|*D5S045o`OKj#LYdx(02^+^4b zvG*v0#SW+60f@eRc0lYQIcUP;U^eNC z8Pb{S*RO-0md?14v>CZ-NZ}Kc4;(kcs6Ia+%6KufMM2m`&`BQ9hxf+sKi7{bXy^4> z{Bb6pKd$QW{}N;W|LL8a>+$+FHr}Z1xD(NhzAU!NiuEK|GL zCGUw*N4{_b_o8X>1SupW@XTr`4DFmC=wLENH8#8fg*XP6Xa3+}BsEJdT1iKKtuv|DOcKKQH0?57cvW<^=wGUItQXfvBGD zh=43%{}+vlQ;d;hee_HWJQH2oc@gpPh&V5Zo@<6E-ZMz!cB9>2tss2Cvq&f+ z^5kVdF{Cr%JZh!OTi}+$51cQmz#Tc~Txd>W_^V}y|Iy}B$2&*;Sqjt{ba$wzsq*;S zEYuTB=JRamnZ|L9cb9st(7qj@a_jC|MJ#ya!R_Lr(e(@=A2_PCC->z#BL)f{cl}VG zBKc4-STahHrFpbMjomlkrdBh{%ckoo@w6I-`TGH(hUqW#Gcd*f_y%S1`u5To;USxszTBT+A|y5|DYOcxG99ZA3VWj7c7@y zzdDH0wLF;}T-O53KW9g|P4TA9u389zbX#p*ZQk91YA?QL_#wd#%cJF1WA90s>WBAR zzC3%UvF0DB)!ET8wv#LZ4nc68098(LD$ zkvnj|j=L$yyJ$T)noZr`FMt$xW^Qh0>qmHOCP*E$1XBfErx^rsXnlzQc)f=vM-2J~ zdZjll0NpdBzQh*O(edL4SaoseytN4s;z)^U=m1+(-9|3E#hI!D-f{r%)YaB?d1{d7 zJOQQ0?Dh4KP|07LW2)5rwaN2^=twrO7~+?G z)qVI!-bc&Z=$NUC=`&!Q-po_K=RTpTwboZfuoG@B<$%}QVHGnf+*Fxp&cu}df<_Ch0U<*eR1Gj&R-6&w3>>_Qe4^xHg0ZiuuLia z1Kau8dIN|LTjYn$=-BybgGB{OUS-;d{%cjKsi_9qvyVa6^xF^_z>gI6QeXuZP)rOB z4a79}0>umNKX?$EEGYKm;VEEFo@d97<80Qu1L{^=xz{o&x+v1=`aD=}R`6JTOR*XP z`cIAX=K0ABQ22&xoH@@}(zCO(0T#^8zE4m8bm&f%HV64N@MjCkZKmo04V9FZrp`00 zRM+N+0Rk4#9)ACbX2T?lHF%vJfAu4{yth>i4PtfmV3`sjA>qf4c_!(walr1t8vZKd z4$3NRT1v`tkE3m1n1Wk!Rx#zpqlT8>sm?3Q-c#?QkmRg@TWsRaIc0`EMyk!_q3h#B z-1%Q?DJ%CK@2vvO;T=h}=ZTZ0r6uScu&_~qswY9>B7qMv2-aYL2ht{AXIcN-J!NHO zsE^Fcm(eoJIyyQ$CY^e$AR*lGiTwoVg|Uf=>zkX&QBh1W9YCxLBC)r#i{-b9)8@EX zN(%>^dw5R9I{uPemc5$TNCTFw{N$m{25A4hS6ne!i00F+t#kv+yP;IS0>$Gp_3H`b#0S96by`l{x7P=CJ1-gT^Hi+}D<4@a4nu_=^n z4+!{@_LU*q`^wb~!t$M3%+>0T{moX(ZbLLsCg_1T5e5I%!m*4awv<1L3o%$Y##8nV5NGh&53P!#D7^R3Nfa3X%oldOrUL`+m0V literal 0 HcmV?d00001 diff --git a/doc/_static/gui_vertex_assoc_on_lines_intersection.png b/doc/_static/gui_vertex_assoc_on_lines_intersection.png new file mode 100644 index 0000000000000000000000000000000000000000..8c79b85888f4bbff0c1c8203edc0e1aa6a3c5ee5 GIT binary patch literal 17440 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 literal 0 HcmV?d00001 diff --git a/doc/_static/hemispherical_grid.png b/doc/_static/hemispherical_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..f70b83631bdda884d63b5fc198be7390781bab7f GIT binary patch literal 6047 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 VUDfgR7jVVSV4!D;BI?|J@IT8m1V8`) literal 0 HcmV?d00001 diff --git a/doc/_static/hemisphericalgrid.png b/doc/_static/hemisphericalgrid.png index c6409939e97a02314a1fc3afffb41d86434e426c..7dd5846bb1fa7ee951064d9d9b321140ed5ca005 100644 GIT binary patch literal 77405 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 X|9eAyKi%fML1D^7s|goO?S1|aeJ!h4 literal 32370 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 QT?zeTa`jS)vFn5X1Jo3z?*IS* diff --git a/doc/_static/HEXAHEDRON.PNG b/doc/_static/hexahedron.png similarity index 100% rename from doc/_static/HEXAHEDRON.PNG rename to doc/_static/hexahedron.png diff --git a/doc/_static/interactive.png b/doc/_static/interactive.png index 0aa081632517ab4e09592d6cf7b0aa00b582c950..c7906c06f3ea14e4c585e346a83f8187cae4661f 100644 GIT binary patch literal 119445 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%0D5s;9=Z#k(30FvFQ1h5zom{eK;-$d>#= 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

      *memk>m%hhK0?t@RH@`63k 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 X{|9WpDPG|R6pRc^#>R}c+VKAX)nx~` literal 105096 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 &Hw`ZD&#(Xs*;tTw%pHV$vqxt)k{ zaByJW-opvK7F#O~>LXM|!9PeE8;_Nw>>hika9Iz?rbK}oO}kwRg%-)~Z`WG!L^i3R zk6EhjABX;(#)1Qo0D}{V9$Y5f=K(Lbejr|*JzO%71@UDHyd$p+ z`H1WM-IZ&8pBEmDc$`9u#h*m}WJdjd)`gw8+COMxG9+zd^e3V1yrbqwk2WD+!uNPO z{2dvbwhkuFII{NGfZ_P*U@wtVZnr7t=!0a|NFx2kF$r35mM{Cf$Sx8N>1hozrVft1 z+>I7Ci$;#`g(Pe-FsSnP@1M1;$)c4e5=@mEB#7G{ZC6$T*M33)RCG_pt@(Da;e4RN zOti&-=&U{0ldl7k#YFH&NEt!3o64b~nHho}rqb}k<~BqE1P|-US@qBkP=b2j?N-RO zyj@uHZ0H$TEx~`P0irs826#&WFzL@SGHOhDessWVwAsGP-vaYlLpcrOXT&?#_*L~{ zW)6ipvDjsbtF|gEU>dQ69$V^%oDXzpH>%R&+xUluW^Ue481&|x^^1@Nt}6AL!xLjd zRQMxoD6)1V_dE&`oanW-GFVX&Z%J2m1GVR4lB+Kn!I~A%$2~!WP;&7R-S56A6C_{g zfLc)fl?rr}2{N+@6M?w0r0Hc-bi=xiGqV?`2o-6Y8#ZSL#f@)g>1_VTZ(c})*)e0e z{lh_&X|}=WfvJDe@INA4Py=w(w$XA7csPbL=|OUm(Ig+;wzuc1RCS#&0tn=PCq^Q~ zkCQ0ki1}0A_AUy?j`x~Yg9pP!KWN-zBd#tc&*Ma#P(fzopCtV3)*s=;9mn}Vr zt}KS)wzuKQB)BRC1gcMD=k0RthE)aE-(bupME*gobRYdVRqK@L@74)Gn>- zmM~C0LZqv@@^~SAs5*?S%*v3ec?IQ)lwn*}#3Px6>FR_0`@A=A5B`V(25i&Ob`-eW zBGSsIv|bAr#jZA-MeFK+kRn}gj#9HkUUV5h$=;Pu!fRwqh+g>v3ozZmm}Za-d#Cd|J{4eW$ZC?*k0{7E`HlX0$~ zE!O-ws27fYzv~uOUxm(537BL)pjc-lF-{gc0Tz~4#6nkkU!TO9lXo}bhJPm?J(JRR z+6V5Al4fwv={1}Eo}5A?a_?g7e+ba)@7-Nsuk>o&UcpDOP50qsKKJKFbVf${Bk!^U zvt%$cY3l2*M3m}zvZf}!rMlVqS4qXlchQGQL7^CX@NNO~vgNElIrUvdh}adS^szKH z29DbQG4&QuRYqIaFd`z7(t?B{-5{OP(%q%Bba!_n-7VeSAl=>F-QDnQy!XEU?{EzD z$cg7Ud+)W@oNLX=pYWp{Kljrb`X5pOD6}SfBL6o{0D7;Ep=|B%H`k?$L136Lx|B^&dt^xy$iJ-MPA7rEFNN$xpo~Pp3 z<4*ddrD_ny!Ey_Jkj@uc+V?axG`xJgx$+H6fs_@*Pw$a6mj1*C+k1OQ#6)b1qs#J z&-RLrrjFM8f?=kM-e*?0(x}(%MUI&=>6a(p_E)71HKSERa$;lG>#Xa;Fq^;T-*KRE zCCc|XIY35z>;j?>(80gxgTf?-_yviFe|PU)YKAAOf2+uy$FlA=U|XDuoa2#>rau2z zN3}n>>WWRsRN|~^DO5!k9Y} zD9#vAY1ekjvu|;6@$>V`8QKd8?0JAGtym4W!F_RieyA6Fioo$)NpaD3DZw11zunWZ z{wL^ z)v~$4I3iTRpjT$e_?K-TS4!a8RJXlU4uK=A-l78ei7SW086kO9LJylwt@$csGZ)uH ziRLnTgKPxhnqIP&G#;T$&8Qr!yu7x5VR4M?>064n#`9kTdy{p zjezz^k(93$)Q)+h9fKenicrw%yJ*_|d)G$<0Z*e^>$7SU#f+B^T{>91N_mYBvbNts zI2XCi7Iyk1=iMF)qDJvHiKh(qK%Vz7A>K<d>c$~#1GJysU(4vMuJ+?fPu<*f`ghy>hxV%9BpnocW8L{>%-C=r*JDrReY#mHTvQq+7f3f}ymiZT#LUa4O>X?7`I2BX>(BFbHk4!dt4 zJznkz({t3@D1!h04`vN~wm(w6Z!^Y(Azu>309UoOY0b-9rxj*T44(8)#@SOfQVUY9 zomiYd;D1uh|5ahmAGj-Nv3;Z_{Q(Vr}jAUba}OorzQ|gii-IE1fyTxBTWW$y_QbY%Roj+9<5y)v?Ll98;gliAh5vTu>vjR6S$K0qui>zOr=QC<%*M&vrMU@0({vyNR{)$ z72rbDBp<#&P5|X5`R`U~g)n9KBae9{Bo~e#vzJ01CBfagUXJM&bxBxB7SxckS zdj&b2hM&2)HDBI<_^&Y?D%yt)g`7zPdT^*x!HR#Xm7uf7fDsbRJSGHOWt0Iyk4`X16`pfNyVW6h#sD8#C@K1%J{d=dMwOa2jk&uuW zuo2$ezDeS=iUD)+kfjdidc1sm!XhI1)_>315Tn@d6$y*Lg)h7p%xtpGF$L|j|9zk4 z6LqCp>U;^gvI}9%$Ub$N_b{d=3+U-O!r(@?UP^$TLfeMqom>M;ODk^}@I4nh74N)~ z-^se@SrNLqnm3Doy0eC8R=!8z^M(I;y4G1-3HqqTTy)6+=geO)d3N#z>8r^c!!#X$ zd>l@FFlT`X81SLo>MfJRV2>R&&;gl%@m%dY;fS5(7H+Gpq1N&73f?7|mv8yYkDBPv z}FU34eG?7Xx%frL$zo>eBgAnF0*>LpLEl%Qn@u6 z*36Y7PjR|p#h_B@0DYJun=hj4rq-}cu?Y;OGU*or%RU0rM1;g?GI>&HokScSe9j`@ z#Yo53!RN$dabb&nx-MSle;}3qFdbJAAf*M9^38nxH;B|au?7pZW$)9WAX{xht_-`S(rMEJU$t0nc4=lFqOoN=_#u-W7 ztd_C*b&GCw0yLJ69Pk%`w_^ytoYmpgChZOmBKKPRHO5@sQDp4BgH>sh`O;{#@dx%! znx<^bW)A*Gi&N&Gf8ng0a3r3cnH|i>_U$oVqhi>ui|eK)80wt;NycIM9oYI~{h+Rl z(YDwZ;dQa->8?slE4Q!%K~x49AEnfI?@4a;^x)7HjMokV3W|@k*T%+{IsGc3cp?M( zzjbdqS|4f9GxE7mqbfnWI}Cjv?Ujz64y06$1nzV_&`$?O3qdAf!NJxhVS)8HiNJ9I zpapq?5qU<0qg z?wjpy*&5SDtzATXt^px@7ygA)7DC|+9xrHk7i&_N`zsrx`;ZrHL#yq9&6zUo58{GA z!L5nCyu2d@3|xy^4)*HcuWjr6A_Ylgrn#NK>gXRi`XUV|Y9&60)uKX?YT{ zDC!@qDmR&Dg+?;ntM;dJeHaFJtn@1JtTRWFi&app;dwN7wY$>f{!M=@KG~Q<>Dj|g z>aV2(*#zeMC``?p$*Mtv%G0xrlSqKqH8 z9n40qO*Ip}gBw5ZK&3L6qRdt4v)gq;{Azkot+k&mx!hU#%dPh8P=ZU*#U&#AOLgs- z?cN2WWJtq8UdXR&?oix*>xRPSJNgv2#ap5(wx5X~@PTum1^Ci@Rf@Kb zoR0MN3S`X!*rzJ49Ys!hzw%Gy&dCL#h04r59i>Qj=Zj?|lm(dWN(&O^!R7CyUy*+BI!&X%sz zJ7>}DQ14o^A?Ten-J#Y3*LIPAY;4RcBnF+qgver>WjD9LE^)}Z!>b=Pp{EnIso#Z} z&MxzxZtgW_SB86N=?<&7m8uIdb0or6r#0V>XZ7nMt;K3QpjRks4KH=GI2uE>ry3m1 zFwe;ok2XUzn-ls+4x(1^HrL%%x3#Unz$~ z9shm%vCQS(0T#A!$hq&~Zh5AQil(@qw8vU7Aczvotov2G|9HK$y_=Jotv{Rs_FrRTqrLHr zw)Os82yk5dqg21$#VrKXcu!AGz7;8qSDUD2OQs%8T}8Y&D7=N{_y!J=+UMr`TOh5W zJ`cFMcyQ)6IbCKe4r?@?c6}^1A&v}iINutrk<@g&-WyC}-mYy_8cOCA0x8l<(A)(M z>qzkS?!ZX8p~_6y)5{Bs!Qef@M~1=}%O~f}?MAlCNv(Yh8jS%Uho^RHOOnd{bn_*W zMBFyZWn)$7=DOh7mWrEp<&{JV$F8li%k$$k2g?c1i)a%z&3}SkqPjQvU3kMzx0zih z38^-W#?QCFloV6dbTq@qsBWXW2BWdl=-D-d$*!`sz1_`xrUP&u16v_UWeU;QE%7 ztmB{(S8mpASAR88c{_cY>Trd~fX#TlxcnQPBDB8A%**!)hn=fju#btnFIJ(5ceZku z((5hrX4rD%=zdj42S3`!Hv1~)sexE+CQnB7~!nfk~s$ zp+i4fYoT4!PtL^!tk$Q}(kAS&)Jh1VK7^9Ihsjs<&M&-?%Z8A@u?!3i-LhXerPovd za;-S5jvZBl)6=m;$5doLfA<$3y1Ke{P=`_dJV3HAnKoc(WIANjNW4Qd1l`5@4*I6l zg)K?((%3%6Dbh6^y7 znwr!6?9g5w$t_14^ES)%Q|P`mwDDrbi}lf$%SGMbt8)*}6g<1Tm{!k#{ktB<9ja24 zEp&|sGMu?X7vKhOBxau{Uw|=~z`PC|VAI{6pAP10kN~`;Qf=H@SFx?OTO2dYX0x|) zcqq=x3%NaHg7Qb;ZIjsq%C!XWyMkvu z{rnPMy)NeXlc`uzf3YWznJBJzd-jC`XkHx5vImdQ(#VmcW71%Nw9En-+)20)!OkU@ z_ToKV`H1|3eMCi+?>0z(fnxZsJ^-1 z2Ztuq)v>7dMcjNz@8uFKnj7ae zJ_F%)cXxN0?z*|Fh@0D6y62)>=f}zE#)=!<1cqO2V26$8%TttBR7j)ws8kt7&(TnP zg%ggjKN#%}#JUzB*^(}p1kZZ~ps?M*!|kDF`E;k6qvB=7JNq$kvR9ifiab9(f@})T zFcXPUZ^2Do?CX95 z`|dPDHs?DCD3}?Uj|O9er82j`Du(H+{)4bmT*_RP%gN>C%5%yymavS$Ed8IcX(y__ z6+yIgP$rrhAomRqhiwfezGzh8xo)g#&AZNBp#rh2918Ucy}=vZZW?%J^B?iuWM)pv z)<+BRL&@yg6|+iJhUnut;`)zv`|l7D1+!$rBO+u(ykX&C`HK|J7q6FB*Vkp!jf(o3 zkIWgv)ZIZY1nePEfb+%8Wvu3{L8nl3pMFF2;mzUo^7rPb0U(-sa(S-XzeR<^YUwQm z&21@Oe67d#FG0>Cz+o=6Cz?G7#10jJ$_d0$pnP~}8bGc% ze|@p5cDLLRih7y}VIbw^W3=4192=3EFLR6Nm`jKHWcGGE+b-9d>mw8V-|lWNL|j95 zpI5k-d$*`48A6%T4K7LLwHUhQnbLCJB4T2MG|yeA=`SP36tbG1SqS4y7wdo4%mcA* zvm2o6aAUlwPaPH?fJy>XJ4@C8`8i#zK5D>#!|51xxj%J&7d%~3-$V))KN#^sK}GeF z$Y}@1RFz7IN>LYx0pQh6pYD%es(X+?`3D7M>h{Ng{W97hX$Bf9+ByPIPtVU^O!k0y zuK9MdU4~`gq>qC_o_wxUU1LVy{I$rnVg#XFu3CG20ZJ(w_<(V7AC{cg#R{l? zTQ&3e)JBxbjowH?Z5 z8~AwkKiA+U%%obB>R-P_1S*X5p}3sB8KexxGcSYT<29O^HPx6A5fN<^vKp%sd9r}G z27+=94t@QgjDR+WVgwEP)Gdb(gUJ1PLP&Z;3Gduzjkgxgp=5H~0Y4@Sp$BaB!jRAABZmZ_g619Ir%)Ax#R|iV&z?9vL4k{N3FDAH2fI1M`9@ zej-KX=5CR($N=y37d$N?2KJj=GO6?@$X4-h;Acsp01COGGJp5)G65a4uo(zqSk%mE~MkpcUfUUD<5WkM@AIWhuljN^7A zaxHs#1JuR9cR)La<~i``@qT$?I)8juq^LrrXj)*2+GdY`qgb6;Jzg^YjDkw#qTaB+ zwl-C%G|edQGCn=Mc=AYd=c5lrMy7GQC4gxD=fzo<7xhKIMl6^+#x=U5oc7WWzJ z?(DQ6pbqu-hjDgx&ZolPh6_Erk2m+Nf_)Y`?u`|ascYaN9&N6XZ#l6zC9v7MdEekn zaDR2Qc{!~~Q?0(e8!)L=_iN8i>xfvVGxU#AX)kdCqmkf40BTlo9S5)r_%1G-ch#7c zoxQfdE?Z<%OTb_IN#94ji|Iwyhl+Ps+}7e$)}S}jjB6lsGF=D)kfT%;l6jL|rnDY&}&fbtM0=dJcuWmaewpPI=3{k!rX0yl!*TQaKJY?xx}pRH3ZScf%Peyk0v(72|>4!t`hr6}AexF`1AG91Yab#o$u)8Mt`}-Ra@S>xk0jyM& zQc}Iah9cT@-4|iUnvJ7mEPy%)7@eH&6~w#yU}`o(CA}@*S!$xe!^3;HX-8swa<2L{ zA0r$|91e8&iY@@NzyYCJZJaKd$_1iAsmhrJ=^?>5lR)WqBmcEvPHvW24>wQXDH`hZ z?O93v&w;vY4m)ol#rZO3lev!a86_E+VB@7b2s)GH&gJD)5V9dxb~iUsbb#Ejk=ln{ z%j?C1#fDh0hQ>05kR+1XI=93V^DlAAwfJO=A8tmmf(5_mRm8(#Qolz*@zf~k9`6qd z`N)hi`NUDKweGLgPOi#wvt(ioSLbD6H4iuq^`gUXma)_j-@Ty2%Pn=QCRh7P?Vg+| z$;grxn-W(W>@X=3`%qA1Y6dRLW^F!O(helOv*1=Q6Z0A$>w$;+!a{YJPG2=eo{=l~r|Sz5T4eNX)j{cKl1 z_0>z~!gPHG?qvZM8c44bg*)~*pU`Vf}E+>6=k&jga(lOT+J3P z5Nm*;3{ZgoE+LT(bPqZzjT8@cZ|;JzVmoni{Qe#&SAd(c`R>DUQ;fGr5l`k+noNOo z9z*VAXiM4i)v8PZ^JqR}Zj~VeHWhXic8EfdN|9iT6$i=Mx^&*8x1XP4?+z}bBLhHp z04`f*x(HA-b|C`;(xs&(Mj1OQJ*zyMw}^OzOiVFWWO)}(=I^~S_9L9>0%)d-w!87& zHu7>()_}!1bjcpwZ(Zf=XP4{rNki6$ZhR&Bue}!77gVMVA?w|tleI9HzzhDQXXT#7 zi5MN!jylTOs@F%A&U@uG8>2IRuK*?7hThp#usC1R%!Z`oLAk;pEc~OYZErH?9h~fF zmZ&5LC+BSKPreW}{dwC%`xTF82>k_&)T0)+cNP{d-^IlKfax6h=4H%~(?Tw^zNAAH zSV|_y#)-5CE8L>Cb5r(T>%&%TPm5o@KHL34-5hTe=}u;~BGz=hd?m`gBeLw8IbtC9 z@X-G$#on0?m)&M<=<2X{pyv}ILsVD{&GyM^J0REV1^IKqn78H1-&eLmLXols7@)=* zJ7_rmE+W!)u0b>NDjo}K($ZA8jG$M+F$_^arm*oGG`!B&SP3OES?`Q^Ok6jwNfw|d z8n2`o^T-(EsEj2%IHPKF8@H=!yKe7xQU!#C<$#oC((;k(BeT}da_TTN{7UGJJ)plp z^4XAmS?Caip<8@BTY$-JGA}46CzloWIK)m>oRF>Aat#W<1Amz5`m_l-PZ?S8FYuT0 zw)S@-;zg(WMUB@tU4x0EyVkjrhJY7{AUqhFJ%^1gQlKD?dF4!$qY=bSN_A5Mss zI5@P_%`VCU=}CRLcIshl8*6HpfG_03YIX!|P<# z(I0K|AtWJL-`@|)$y8G6}fBrVM`-PLiO@c639)bGz?N56D3dA=i#%A>gz zcinofC-uUv)yU$h^}+qsDf29p`Vnz+9mdqmi8i46ntGI#tz4#ixToin?Jde0Djo^T zOn+4~&uh24WyP?;L?#RU`>PM|&=7#9f&T`YPxIB?RVr+$!rnsBish^qj{3vGC|CN& zYB(dicOEys{`TE~)B@Q1;o)gyam?t#MQHKJ6gsnVzsel#NpJUa*xSu{_7_%Kh;zsI>aUDs1{OI5;>)*tjX>qT;R&XIspc z(PNSDSia5Eb1l6ni2eEVhunz=eavl2-#CfxEPuBTCBaa}*|LVJTBV3IkT)`A_!9-J z?K_=WtSyM&=)ZN|B>wqP);kc->_JA;qDB@r5z%TZOor5s z4QsS%Kh)Zv668civL?j%YSF*?9g!dc6ve{B!*A~IGxN4qs#I%CKzfaOW8#E%$ev8n zlJ*y!p>A~LT5VUND1PP6g^nyBm(7OUX3-6wOU%m`0qZNV&+`+rzw6`O+9vwo*Wm#G z>?PO+2 zkK}BSlh*NDya0jg>CrN6&k6hO+0hot0xr+E=w})2FWcCXEV-0W+JKW{v^b8E>bcf;&IGl^K z+3mKiw0co2hV}$5-s-Q1_exW$=yVz|K$`#DLm3Kf;a|uW)VbvJRAwqSQ^6F|W1nxq z>UOD8`E4`+wE`wSCS@?dAg0caRI_y6_c-Q~iK{%>9JVD!GO`zh7GOkrw3lZFZrjO~ zxMjb=F1a>P#eD{u1={|fHosGb1Q zw-`d5-q5QHHWU2%-|Mm@Yzx~mH zDp?z0@96N;);6C4MXp>rGW+J{78wsEIJJa^%k|0I$7gkYU-XAL%#ued2lLsf7Vbhm z{Q3x6&TDE?(r@918yoXCjs?8)*~;*>-H8K*kVp0V)Gx$n)`kv&(PX~N=;7U?o!=?5 z5k`gHK$>hU^#S>RiHY={N!I(fSEYB$I_IIwVv?OA_}2v1p$xZnJ?-8?QehSJNM zP_wx>8<{PJD?8hzXfC>b2{bm-U**w4WJ}%$nN1Ow>r0}74P0(NN}#BGhlZR+(AJLI zKl!P?u|?`jpILcXp$te&sk zFK&RCsnAF24#U?!h@;bm9<1m||+bOus*!zaq*z%QNCURy}m;jyhk5U5R zP-|!_L}*!w=zW#Z>jBQidOEi!XZy=Z`p%r&^X;!Tdvc&$5yj^oRHNCiIAvd&&|=O|EhTM~_6meGkxNOIYkWSz}vMfQ5n63fFC0pj+)q^h({=02;V0oA6&|zjL6{_9|I4~QGJ3qlg8@ODu)MqiTu*)Tl3jF~ z?Bd+Ri8D&Yw8L3vu^NQ)CH7UzmZ(T5iB)sW>7oZm`2g)19|d<4IqD&*Jk@RUkJ`UI zNC-N*tl7-?GefC)*G2*G<)e4Y3YLS2sxJ095ZRo$8O3HgStasCqo0IB&z*0UGbi#l z2UX9Je#ezo4``F?MiteBAqm>CUlA#Rxh;#K*~#jM)3=f$D5*L+CtZnV^tKC|Y>(T; z>cLo?bJ0^(&-wDsx08wkajX@VhcM*65_x`;hMSMqK^*sbaJI9-pes0g<~Q0q0bBcU zh`1s_N+#{9iK>i97&J##>6_(VAcm#hA}b>s;P3xw#XirO`l(BHf3OqgZ`}nV|7( z$?d_kPkuK#Oqp?mq!@6T(9mPgt9}IspEdECoUWl)+%(;M7ESd#PDqMFAc*>lpP33m z)-5ckS5;$l2^%_2Ygtq(4S1B4W~hk2p}*s$o+ScZnx{jtF2GNwK%q$M@8fHw7S~64 zf!sFjfWKQW5xa?0suRJ71kY{Z66mPXG@BO{kosLc34ne+m@xlO420fzoQ|{>Yy28X z4Dq0SPZ$X?eIu=~-R(IfEDQ-ZS+jy-!NL;T_vr}{$$!oeU6LD~6&fMr<21=9+L6o4 za>Wu2fIfNP=?>x99KUcSwdW2(rMG7*J8phn>Fr< z5PMj58|NaSlJ2xf*2Mqf<2DBx+)f5?miQ?{G&BV>f){+xrmqxzvsz|4Dgs< zBVUBn_Cco`3_Ls`At{U|ek%E57%+K=^MP~A7~$zKwL|lph4;a4Mu0AzHD)l{I$`;^ z?%SiXeq3jGA`);`-2Na$Guov5p2jT(8slTG^DiugM1l78UmrI5oj#7$S@(7@H(WH1 z6gciZGQ0Jt)kpb3$C+z>7+%&-uhv(mH{Kpm8h|SJdD=sJ*J;020$VUmpN!y7_*r2G;)dtNWcJ+r_8d|MLI2;XX1ytKe??Ju4 zrdD!y&e|A)qOMuX$pSC%I)65CNwbPE%+dskR#bW#M9^$7r7$Ql=8@q>r>XH8jHgwv z8~F1I2gEKMo3s^_1yAfYky2P z0f2zHF0DhDM15ZEy&Ayy3Yu;}GVS+Cx8gI!O9u{v;mk?Gj8x~+@{qDk$eTC1KqU!6 zzT<2YNp~=nkZlRN1eTw+=t&f{{H5@f=(JEHA zl387PkvA6W__>TcjrT_=DUSq^6}x)+l)3${daJMzm~wd3Nk!BT9gBVa{QSnhP0QbX zh}K=GwO}xv3SL4&Bp@Y(su=a2HEz>l`Z7xdduBCTYs=UG>U9~1`T|*!(1CcqzT*}v zV#a8x6|LsX_V|==9)O}EB;(o?O!g&I8L`I3`9~%8pC;kR5C%x9)MV=xD7Rsvopu)Ditj@?r`*=t+G2gC~dN2e$ui88<`z{0)fZZGP!X-{|i1(!gt?? zev$op+Wm3L!t(aa;%fb`DJ?Vs@~Q_q+w(U+^`XO-w7>99=Zb8LRuP`Hn>p-=5qmyx zd|1}xqZ+;=b(gOmAyerOmTq0Z(8y6qsnKY1`f9eM*hpW6YqNg`s#GsO3B|oyuIA>0 zr*lc$$6FF)WaLl@nbnH1vM*)*F%~yH;UaEQ5Iu|^ZWeSb--!odQvb0@WCHy_fyx#7 z<0YCc{RF|IJsCc5SnQ@a+CWGHOsP z8tbf-PkVvI9Q*X=Cv+@mJNnNaU@a=%EFfPd{&r+apQ(?q0Gchsv2(|hU2d#;{Qe=E zo#_-Mj)z=B5)9vbW!=dSls*=Zl_@M31flB(lWdZAhwJ8GMlAa3FlyI)_)Qovu0Qnt z!v`h3fsV7#Uu8hw3|?P#+V5apOtrCp(tP8yL|qT+9lK6GSuVsTgcKL)?S{~KW`_+)A=OQ zS2pTn6$(WC^M|Snc(4DYLEvj@HoCabp`k^oG-pG~tsX~s^g3Pav;qlYwS6FJ-;c!o z;0_pYklyKnVTD4avVR-g>9{HOi$HT9a9fXwS9l>`r_*F@eM-oexVSjDjN|%$6!?pR zz7$twV+Y^>`O@f>B^q0=|6TD+G^|K0Q+*TG;8(>g7&-v(7iE8?!KmkAgB?4EmSHYO z7#_ReW0!cDC_U^aGFYYpgo<8&An;tYL(246{+K_lwxl?1QS#$GW9I*Q0nk$;?h8sL zZti?f=ZjGrS+`xbIM{=)mo~=qztcp@U_WVCw6B4|*)<}BuPgsk zEX{ChI+;BnUp+B?Jymz31M}BJAuC1&R^nt|oos;f>2emw^FhT#fnte_&B6U~Gv8z` z^0tO+JgTrT{~M^^$JVd=`uj6~dO?F92?K`_@CgAEfZCCRg1(c1(m7vPnPZ0|BORPt zAtPwiGkDOss`DldUwA$5cW(++8a!^{Dp=iGhsvM5#|!g92L|B5Je_;5PTTl+B*-83 zrVF-vG=Kbvh9q>dxBnff-Ptc1ws>^nUamw5%m5=36W7op;a*qjr%!o5uU8O6%VQRJ zikzhhC=rTk(4wr4-ke#;3mz38_r@&NC9(c&Qa)E)B)UDcu_;jM=Ej!XFrf$fV&JjpJE|6^hfkY@#l<(lsE}92?}P~6 zK&vhx_t^@4tDEB%P~%B{C9ZF|@7AWzT_-n~qn5kh3VlDJ$P+S(Qg~s> zg4RK}0pv)<_WtOf&)WiI_7RJ%JF37}f(HVRSSk}j=IG9yrnPOOeu{%HpC1zFY%73G zollNG=H(R`&c;qu$0T^$J`n%@dR)H0@e?<`CO0=A*2Td<0cibL3sY|(?HO*_YYt4r zld|o_(id*F#FhHX=qy{VS~^b&`bT+OxtJ1*+DytiwOaLRv}@+W52pH;=*g=JTQ zoC<{DEI&9QI6pgUGp(^&e!PBF`eSt-qLJg5WmUDPLgHmPgl-jUr?3znY>m9#ygV{& zDkj*iuxIC@RMWW-@(eI_grZqf9@@2hrl!S4E`ANv%uMZg_+7PS>!qSs^w%vi|B0}u zZ}Ml>*26e`!z#Q^xpRJB+-Qf@+2lT5FAoFvg*Pma(JTGr$jDy7wJ~9)VfDC zCjDFeAx7xFy-~W>^TtdAdKDD36`>EyUq=9G9za~Zzfwm978X)MLcX4Dy8o)e;FLBO z_*fB5aZAb+GoO+1{k!;P&ZK79!2zo$FJJG_K$^mLm}l2pUB&HEdXO(q6)W>KwR(w~ zeN6;F%lnmMNrUhHnX)Mfedk2k&~6*yLOnx6#56P|Dr$S(T(^WsoQ)AG$k@$l(ZgV0 zei4RcOAck%){;W&1~aDkpho}(9+vlbS2@e7#&|a3=B9nh(r6F46mrW%Jat+K%=CzS49ukV>`Y zY;GW|+V=fn?vxBOdTSZ<+NhQBMq9h}Y{&UDF zpud-|s#8auNla;e(VcPBhG;;QLvG#7o1RB_sI4_qM0~~tJ$sg$GK53z3Ei_V6kpK}j;rRmcD=leo z;!1OHl=jf;31|Ez<3gV~M4LIBN%okKm6gG16Jl&W26N-07i6U7@MYrS!U769)uyw7 zB1IW44IjW@S z?{p!phz$@IA+OiE*fLpcy2!{$;`K^~E-C>-H}dClJciT7;$TdrDyd>#xkv#7f55PU z9uiR0zIpRzWBbKMkk7+v&M}L)Z@l;MHFT-D!h`c#rpV&#_8JC^?7WH)ID#V&z+PJnp>;ujV ztd<+VeiBd9jT2Wu`s8F}?eH)_<2XPtQ$YF?GqX>stA^(y^=Qqos66?3G=*Y02UAQo zGP2r0?@xd+E!Zu)fHd9wGg&~-T-C3oMu+G<40q5g36Qcka2T|@eQ3~#IR2FVP;cK> zIP_xxtRHk>ftDmIK#Nb6Xb!LP`LVcc!Kb=hVS)BR!cU*v|E7I!TjiB!O5G~|!W7FSQk0^{|5es4j~N$$iRdGb8y$!zyq&K8Xo(9uci zG#E%v`xFE=;@SCl&!EkW0~R>d#Y6P}y1$xszWG+6x7~kqBEK4^V8Zo_)q#|r|9-m8 zv-NOrwEdkykwS*iEkUnsRKB>qKjnPx$DLN6D9BK}AqZBKP1sELp>5)H1->ZFNzc@< z4|Je0HZ(lW-uoih9ubF)f1b$%qT4tNv@U8-r@DbQdLb~`AlX%IVvNu7`|7xn@BZrW zg>wPl?9JVsLf$|-FW;h zH8}})o>aQtrKeTr5*BDB_EaX4HPbQ+r>79xSMLnK3_NPM8T_V^z>H*z5sAZ6doBvf zMv-;FkT|AvPP67~stOWr5#VX@fqm-H%B9(o=p(b~MnOpnF)^|41J+wkrQxArT#L zA)Uq+of#3jSQVXWl=hF@bWp>?4u?L&-+OiKa;H8>`HZt-=z`j+(qtY(I0DSj{+t?6 zcCK9eGFM|Z44MalbQvL_e${$luW4vrrio#SeIT>Y=)421=^q~*jCZ6SARz-y6y;Y& zawIX4))IdI{u?Bq7MJ?*mL+if5)0=P3ygY`KW60s`=b||MbL9!H;1DfGiq1`nyLV? z3>ffOPAQQn9-A2b&)uPTozvryMB|$4tHluT|Fz8cpHd}0l@ii3O( z79==j$rGWoN0r!U0$qAvS2qjz3N8sqIQ@W3k@rBM+}2<+-*fQ6fqKmWa=Hv6JUBVKf$y~OHjLO_t{wI0< z@BnvBekkUC@<3Xhh40&JQrTizJC#fBEN|HYS-N!y&K_a?)7B8+rRpqR`>_bP$$o$V zCG1p8%pVg+p|OW2gO93dHI+&mm(Cpagsj_a(>9Kl;Z|q8+w~H1a)ZtYroz;9YSfz> zTlsd!=5KE7N`{nJyw+Q+cV#qB$hvnYW-1x7o*LQK!K6#^WaL)$sFU%#chbgU!6G6e z7X#yx`v7H-m6wkO2R(oma-&;re9E71C0&vtGe;5q0+S?se0}ppc|DI>j=8{nzTN5z z2nqNVIbSK6%p@+!b?V*R-!CimTgbx$+T^ZO%&VkDqdGU2sn@W8(e~kHj|NvXb}!uz zf9mei%DNN1T~5YQth2LQPA#bFbi6`eei`G5^4anKvG?9#O|4(s zVC>}x9*-iT6bncbP^1V*u>jIr=*>b$iu8`1gNR6%8hQyON|lnJ2NeMUDFLZL>7fdQ z5=fY}!E@gCo8OslX1iNri3mWGCVDal#B$;3F?u&NO zf9sZ(hE8rE-zqJYJ)Kk*s<0&bmmSek+9xN!1kG`GrON4sq2+oDwzqKKU6uo-+j6jy zo_{TrU24oKz%dJ)I#tOls$1i?=0KAW)|Tg1Ul|SXA+OvcsYx|2x~`YpV=Pw`j8$3n zUNx%nD8N?h7CqJ7V0-Z3!T#TVi|n_8W|)anT3WpuWhW=Z19Km>acyx!$xp@NSiNm zfu_1&%GE%^4Mld{ARWgYR%2@s>VEN|Ky09JuJ55YejoRfik>!Lnx*XN1A~>;#iM@a z`bmS4Xn#*!a;#}5_05bKj+HS8Dz;jjKV~78U@07j*3wFCYtxosWi%g+%(hbB7V@zz z>ka@0rIwR=(h1RAAs9?`r}OkcneK+)vcnU@0zLs3yDxL!kIOnHK35oGY1(EfLaiSk z6H0H@2nbNn_0B_UCklm$-@v-$xsL5L^)waQwR`t?f)k-t-n0t)*^qNNxZ&t>7}B&| zLw2HF5r-Gk;gUb9YtQN&4Cl@|no9+5JR96b=J`8U^ zWi%+`j?!>C8!L4<7_FWugXdK=4*}z%4_(|@mKNg^*2%3^v&~;KW9ex2Fhwq|T}F7S zC2ZDcNxzj7G>>^s8lS-Qo`j8we$QF0+qcsMXS;Q1)FlVXh1iV4X0b0UnDg>;&?jV8 z6s!VqGx(Nsfv%a=y6meb9+tY;79KsGhjMXER{BzY*)an$&%Ju^Jgoz zoX{D3m|a?Q?IP1~>_pjxq~WEQhMVWf*S%BdmuLSJ^K+JqaO12paJ<&d!nOwCs@-fd zzLH$jn87#Et|3b#>YEopeE~`ZnU6t3sTCIyN%6wS6z$x3BSLWRZ|y2w=C~TwxYM-N zmP&%yUgGweV-ni29S1V=h&AT2(6X9n>^Li}kR`Z7o%h6v6M4arXLA+9*b9<(kPF5b z^NNbJt%?l;H`Yj{^><@hZ5EsEjTOc@WsBL2cvR)h-q(wCuNuK@Tu#4ZUgcm`Zz?(Q z)KkXvk3XWUN`BQo%;~hR2faWVgtqAVYxH z1F@#c$&v>-OY8Zz&8(V%NwVfOaVshmc3F*q_~6XOXD{kcUZafN*QadPV)3S=er(0IC3k=iPw6zC*Yjr5yO??>e4}5Pb2Hsv;oHk9nCVe(iJA49!PB6 zkd~L%TLqY~LuV8|-#kD5k=gw2>vO2V{Oc)L4m&eKnM)?;M6CPSBnF0q`r)-&uJ;CB zi_TW3CpcEf9~3N*-M4yis4n@ByI9XRh6{~)Ey>b(vj;qObN56=9Vsv>RfYhdBm9h_ z-_RsKAD`c~pX)T5rO0v0>KI0!bhVmIIHfFLF?`h0vi|n@&uqV^aI*&(=r57E%6t9E zCb~^FB;1<=JhFG(=jus3z{YszUFH*PXuWSAkcQIHXOr|YSXOKLx=U%FaE|hbr6rNM zBDABs&mSUe4Z9ZwI?*$=)Zrl)E?~qsFBt&)K&WcyaG&~iVY;wh&qi%`RE_9Wl7F#z zpf}yyeX>J|#KdI#tCwiwxq`-h+0%zL(g1AKDU9ra7Z$5WC^L_->462vqnr>ODDNd>;81H$_>th@Pf9eF~0!rCogk_!r%1v-9g ztjV&;BytCC$c+r610@0{o1)3S6r$|6K8;y|Z`dDIZmlD+rdcPR9%vnr_T~F_*O5a1 z#=tyIU)xdYYF+43!{164^(~>}{mJ)~q9Bd7)V1q^MB)fxo`uEV?Mm$4+%yL|J*4V` z9a%b-JRyOZc&z9XK({t3>d0V^?HP8_wHpik&F#l^N~x345&ZJD56 zd1OSSKRPIrvxmd)HFY6X@u0k-B7eKR?<6XG#;h^9C;QNHovmD3DW7COwQgNC7OU(@ zBfm=a`?1fVyGVY`UO2em`}cX=zQxtGHGUBh^t~i0eqLUsq_p&rXtbUYUmmfi=s-@& zNj%~9lckydyp^|?KGuDla1yFc0WvGD$x2?~`uIFQ?(%e*KVpg;dM(7_dZsoUKfizE z;y#h~^3k3X=Ps^%-z6OPC3|;j&%#2M7>fAWyPcIaA8MOu1XA1k$r3JELa32~xW;Uc zoFqX@4znk=O?)ee7ma$y-y`QXY!$XVsvcu>O(E? z#-i_C^IL1f9>@`UYnIRd?QZ8tX=Il#p4t*?-k|Hsjeq&_rPvy)(~a_wN-|`n5T0`z zqdRPOXgKuG2r2ewO=JAh(nYVWbK1_OT#@t}zJa$y%#ExK3On<7@aMjtJ@opevyE!> zX$$x_JbMOI_$!?nO|P)IETop@^A+~BmfKL%tby}MBr>M&uYA2wc2VW;qLD8G0%Nm3 z3GrGm!~f-O=bIn5 zL)R!cQEFMQk%>kQkzA$eDEJ72d8m4J*UsI1Uxu`zyYfoyJICkE@D>*nGUr{U`Oigh z0?+C{kM(Kh^vzbEzjzEAq|$jH$Yz4xIS@~)g;++QccV%CS#WSGb$LL$Gyl4&)bPur z0@NnM1fknMJ_N^Kx|jBXRU!>w3)}UT0}iyYr&g4tm~nqwgOCPpkBKx$EVld1Af5x& zL4^10!Th9iDtwy237MoTa`b>pu;89{mHH#3meR0u=dtMUR>d=c;U_nq4VFpmjt-!X z2vsTV#*H@9%GDF+KHsa>=I}?Oao;lQJ)|Wj?YQJWl`HkWKXuBe=3crZy}P9ZynNlR zIcGd&BD<&JUix<0x`?2ldU>bCdG>o1CAVkI{7XFwAknEOgVsW)Ieq-}aiaIJljz+Q z=O>RJk3S^c?I5%awEujBv1{q+j>tH5?J0WC{%H@&cbgXZTFl~@;&7c@V7$+&+bP{I#W zZ5CEE8Z_Rnu`m+t_WcQS=f)rBbV+k3FPkI{{pgSo(*wmbfkSNFNTMzQ!V`G)?9b!2cca`l3swMsM?^-tLj!pTTcClt;>gD**!e`w=(;nw za&_&Xx^zCzCs;eeLZ|xGfk8Iggg0SlBf+@3g`YlsMpw@WJ5(2DzadUS?@9mh18rcC z1JM=R7kWywQq$KT5-B}opP$3@F4#-n_7BxbM2kN>pS{qlq0@S&T-V*MqzKVT8{k+( z3h*i4%Wm|t%a&m}c8mwmPG5)eUZ&&6eHx11y^~Aw{hlrM<^Fcm`seMM?z1x7wu?dm zsdMpB>rA+s8RO2rkQBg_7zlJ9e`pWQm%F+v&+#>H<=Lc4y=-tOC%bUe*n+{qcC)?` zbOsT-@9^1iF#MVx9v*m<0eBsSm1I8CS5X~j9g@z8i|e;E$DJwe;*V2}_ge0!V(7G% zw`_OLFyjM0k-vL>iZ@q}6jJJpZ23a`jYEGTTWhT&Q{{OXZBmD!k{%d!jHD#6>eJQ{ zkf3%J?5+(l0izO8={9j1*Oiy^`9_>-R=cBd&i zVqLlJH8;EMN|3V4#6|M-rbhM2~7@V8m8$(i$8vBqdH$pmRVbrnx@V|0+L>uicoN8W^7NC zi%xaKA9sag5?Z{*`*|_jMyx_Ph&r^w;0~&25F~^>@Surnh$YC!n%!>KC?sc0?(SuB z9Ph}QeQyb#!D`4+-pP?zU2wU4ay*@+owXIdJV-lDo2M;{jy%|d<^JZBzSLw@O!)TZ zT7vAl<}$93{?n(cV|J{x5@=qsYH<9mH$ce&Dq~0SHPfEb4lhO*rny8{@^v`9m6r(G zKfbS*J+lFjC!yb{0}(8G9L=eUK_G&JxcXq%sI;VKF>3NVLvwcj;1!a@5s3c!7rQVrINsn05)6# zi>|BZ%~H2l`X@|;$ zY;r2i{oV-XRIoD~IDmdxpOKT3e| z)RWJP-1}n+eKCfltDPoPLsjPD;v&B14w07@s!|2vi%xcYRa^)Dt<7YK9h9=$ZSH9r z8R%);TjZX{XDVozmKH_tC6VI;XgwJPp90)PHx|k%X3Ur84&vwA{2Y7&lf;zbe}2F$ ze!HVF*(gNNylV1nJ@hHW-A})zrFE<|@N?nxcRhJRstKD;6gE5iNMXQ?R$b(bF7Da? z{JErMoT#w&i}%BLHv@EM&XAJ!8#_I^QiYI+N05p zJ%tikLV^YMU z$c$zm8ZDh1eeYqq+XoolVThb##?~8H1Wq>sN?CR@X?Pu=+*qzF&0@`%_aWL9J^4 zZxki7WOo0l3pB@uC^0A59!LE!6(J&rRWsVGX}CHwGZWbV$i@-v8%+mKfTLMislg%N zJ6$jkv~H5kx{Hg?B__8d!(`?#`zi}O)NcPe9=P#;w zdB)dJ5na9wlQ$u3_Wi!gfj)PQO=6zL=BOrm_$8)(wbyU(enUirh2!aWeP5Gin?HHu z9sAWR8TTYKDJ!c+Vcw_IvHPP*fS5j;pSKci{l=~)VET{-(BhSN2}kGWc)yKqS*LzGXs z&X^_Y{K~5C9;w^6-NG9)A$PF;yYpweQgYgFLg?&Q$H2Wv6do>I+R#<$S-N-}4m#{N z$;0$d9y9qZvTIkpS68V@vjg+=y|U?F-oIC_9DI0@>SsTF!Aa!zk=($b3hc9DUz4=z zVC`uxA7c0F0W~!>T{}B0)NwEIB+2-%j>J}$`g%g(UDf|I_|>CFc|pYPY00_iav17t zD5@5XUf?SA_}0HmNePNj$)vX=_tMA090D923S(nFjYEPgI=3ZXB}7UP-Uh42oX|_PzXJCuOZeWQ978}EN9lm zRRaVK;`$O2q03L6Jv;ntqR){2;C+#zA=8n;u6z$Qs|6P85I46&VhJxeq&x;n{Rux_ z?XU@!{Su!k;X3+ROY`e^#flqj&k;At8V+)2heVf!Hk=-++zb^{Heo@HrPGJ`*b~uf94qpZL9JhLg_~ZVU}67S zU6}6oH+N*ekyfsiZGQ5lNY`7%GwjA^E^%IepM65z{RJkZ!tArE2iB+A!)N62RB~{P|Zz8uH)vOZ-J(rhR zq&F{8yjt$L1FAo?CrY?pYC}1{km%p_S3UC~6V3IxfY%{rjMDIl$fx~Q;){AVco>zK zZbZ#H&T_%JU)*l30QoXa|)wG!S4dgM61eFfdTSsN@E?A;&?GwEH0Yxv;u3As_I0jn+5owqav7bqh}ppxTCV$eO`%>3v%q0 zw9|V>;X(~jyhd+sKQR%E^_cF-gc#>*`{q5p^PbGNloO?R6_u2T;Gy&);Y*snnYTQQ zu}g)C5y7tlbY^*9ziI-+2SPo&k%nkW8Ro*Br=Vc55ROyNt&(t8O}wN9bv$%|kByFu zOoytTSi|1kyLUrbF*zvVsdew(8z5VW5FYp(-~7-^PD!N_De*p+yYFw?VNu+@2o)Xk zpt1uMaI_LTA|KS+ZkYDS16-F-1ek(Cdh2qJjYxxIx%gX+rrc{-#;g5)3r#+d*aMT= zk?&BTm#0@?lxdCe*IVxQ#1y{$v0s|D*iMFe$oOAFA1gV`s#yx9oKlddQ;8KM0(+SQ zis*XB@?l0&CHQxs}xlOdo3P(?p@Veeoh1}+YqEbx5x9!?|^S%cq{qy}Eyl=Vc*~7DEH{X-n({buzipT7L z08~s0`KUchLef*Ec5nXD`NhO*7R{~gLZLH2ez)g=&0h?%x~eyCi^gDZ9UW+RMlNn{ zdk{=eI>%tMK$U9(1&E#;@#`%kF1BqMN(eaq=bxHBK9z77_)kIx6z=ikop8WI?^1R6 zyY%eMtD;KUBqa8r;lJhU<-t^yS~eaPFs&>Zpqg(`yWk>F*R2b*zZ9q!)@dy3J#QhA zq|SE9SuTi?P20>Y8LFfT=1O{rg5;&Z;LTN_`Kmmo+g_f!HqN_s{Q@^V;S{?^nrhOW zBR{Avjc5rRtTsm zVkIb@aFa$5WJTA0f5|yAJZu9Qgb~;s`T!{C%gaB3%zz_*`~kJhWPSb~3iodZfa8Dz z0TvrftiDnkRGD=HoWJ|77z67iO~Azp%BSJIC@_aPIXn!<&Lf2mB0%otM1zD6AU`|s zzMe4rc3)GjAl@3TAByRNfdd@h25P_?LAkbno@Twb>OrNeoT$EwOHs9%)1yhKWmyXD znNQB4Bnu@r;a&o#ym;X4;5QphV`3plRhe+$FR0j?Fcc z5}N1=SE~aYZjrP>*Vm@3Yh1MY^7YR{XS~X{He3K|tdCW*Neh4;475kuzi(eF6GRgH zxN2?qpM(8dduwG|$=dJL9H)2Kfg(!Mc@Q-#xcLF#w52034)P^e_cJ|l2UZl>o{{y7 zk4lV}8T~hZgOU}4eQyURGKiI5!fYKmbSM?Hq`KyTG|}0ubK;#uMy-_`a_p_C&+SplW;B=bKGy#mAm@$;!R2!#p`m#^EQ{CyrJbiIP zOx;i`C?}EA7>;%6mBB{@_Zm6{XIb10Of(M4>ym+ob#TUTYb2io5EBq@*cjKqwzY$F zi%WM;QI=|48WX?XXE1*t-aamDu@`@AbKcx+tOa&pbL%Rh7%xKQm-lKILIt`4(A!y+ z`qwgu^YHO0Lu;7Iv1H#8;IoyqwY0*ag={*Ayc>b2axCY+cyS?W+WO0@RH&0@UZ#DG zLTvc_`DLq32h1!5?rXINQ8rjL#d8&RpG#=U3gQS@DOsCzsVMPVb!keH(oY4p(%>AV zKy`rg#HEC2ANKA={3Eo9Nj~%sqChQkvn@L>SyCLcjo5L=R7*>1-Upw}AOda`@9EQN zh7O=D*93JjLU%g8{k|J~L36f2Z8oOpl z4=`_*lV!&GpqK7*EQc~mr}Buv&0znhHtwIXV{>85L8#GTZrRpJTunejB@D97+~E5N z?8S$d*~5gs>4@Ld)znO>kL0$8qufO@34De0YBO90`5d2;Bvg{d`RN=^5Z5!mW7jL` zGW@5LVZX;DWNU2M#~83-@ZCOv25ttY3elq2-ES$-Y!4h3Rpxjm^pV3W=!xz50534MRV9goU-i zruxuV$NVS%&CJ@l1s>1CUAT4Y7UDg#dk-Ii9gvrjA_sypw?~!;T@U-Q;k)yV2p1QZ zl6yl6O2jMq0N?_zeifDu?2&K`hU32mZAs7zGV)>n;xj>sYz7E9Oux@)ob@8~KPQ7P z6T`V{=S~|?j>bcCtV++>Lde-zD+>z^C0;uyodGW>I`ylvvqSKZ&kk_gaaQ#nCTEQ8n`?)I-vq6ml8|6aECuCYFWz~l_V3Vy0MNeuWJiU~FI)d#e)W{; z+~)rSw8pvl%Qp8iP$pKrm+B}jlZmXquCaCKj1@4(Z6j*_{^w1`t&3I!9mwH$**iUY za`W|l4!o-mBM*47Am*>PDux|;73!w)2?@n=PLpcPVagE$$2kF;aJlqhAAqb6D3DTU>_V#S`BDh0 z00L1ZsK4&eN!Yso#Kz`{139qq8YkSy?;h+xHXCBv{i$wBZSu^f8QGWsBOpTbZEbUB z-VQNBpk)ikcSHu9#kL^(bh*TeU`GhcLM4MmMq*l6-$)>akk5t=%G&?w7|QrwW=En( zh?81jJtXuoZ;gj*zhV7-EW=e%iUEiw!Xe>kc@~_;r2^0YgQ$!ke3)Au4YrzC?qm*L z%s7-vn=h#P{`3T*zksBoe%BW19)iCwe(9pHum#k5hXSVlU~Zf2igR*q*mvf)f{+`K zLd){r=(srV29g-WJ0LM$9WA!AGv6AbW=pztdiej~1q$?nHx8}`mr}!jxqOp&Gu(59 zJ9r1EsgMJ4i6JC(ra{E$*T@WL9Awxiko=dEI459zQ+l8d<4aE9uXXkG#PXV|t1l~Q zU%mR!$^Z84AH0FF{f@Zu{5Sqvj>)C2)ucQr$MRlqL8GB@P*5$1bxy$n1`F6c4%99P zu?cZ}*K?MOev@!QiGYhO0CpatIuI&HbxleSiGlmHp8*j=zk8QyL`Fk{viD_nc?AV5=#Bsw z@JlFRIeIh;eh;BCHa}k#WTJpH=%u@tdHg+sOaWu_&B)OM1RJEQ=>vqno8fo{bQV#L zfJ*pm&|k(3S=gMmGkq1vnvW4M&VuUo(u-fOK|ot0STXzuB13X$%i=^Z3RrkRt+m5? z6$R-($smY||FaM*lZkbna;|1Zk1~3qe`{>y}T3f;L{7TdToFe`m_pPhSi7 z{u8Sm`rGxZI*s}}YLiF(3h<_%0WY!n)x)%nXX~dD{{R1iFcSZtkKqU@J`@SW)g2iX z4{l9`n%zB=U2~!YtLWBi5#x{@niev@!f>uvf5++n*Qe145OY8X;DX~Rko#HNuZ&#G z?GnA9n}v#G^bYiK zWs===?8aX;^PonS-by^&x>K7DmR%{A9ScQ_mtgXs;@J-b@N}}lyq|rvzIFZ`T*8FoHOat zy{piBt24?s%LZa{fx_a{ea#6*q+{j10suG;xNknm{oRO+LbR~g6hl)PPp4UzG>Fx0E|GEH{ z9Dz9#Wc$uRCxRzWf+m`)W;$TtK2P7v1G_p)SSu6@d~0|m>!ea!h7>pN9lNK(S(Yp0 z%C+RG5$i=MOU$oHp!bOEXs{8nTjTEK(zTXDqK81Q`GZDt<+}?Ko6L3yINJDtn9$u^H*9(tP-_oKn8#qTeceIgr&13%8 z#u}WmZ%0(vm+$>}47C{3!SnX+WAAqGfY5Xt8trsJu{Q)UqBeB(m(92q*XP^g@Olf$ zN!d^m)dbuSqqokt@D%Xk)04faENV%Tx)32jEumKkObxx2l3Uppwx;;27>oyKnUo<{ zCzcbGn~2HE%Ax%8?jjfK>#m`U??oTi?{3$m_l}3-Ex&N}q=g|L|Xs z6-5hDve20Wi!?vAbjK51<#h!skG&k$yn1xgnNWKLxy08~tEHQi#}Ln!_nKG-z`ZDRjd~%x`4R8D^RHRS zWoBfI|E%MXwOoarkPbVqqQ9VOZ2;&v;8$C!wj5pOqwb#%wwC7^0-o_(j3j$ihA4bupYE_};uth*wNM@Np<{(}c&!9xJ~?d)$N zL@U+*#%yrf($`lJk=czKe}c3?#A)EN&mWt&B)3D-Vs{keQ#h3OX8~mXvHUJT|H|s> zod^>2uTHXgH-dFUM^6C$N`!PLHz+i!93ke=!`NC!DIkH{SIbiPi^C`z%BdBaN~4;5+SSV2J*BTg%ESORvy`R|yofZE#}+z(Vs~ zzHCCL)5%>pl5H=*6>Z?7Eq=M!!UF~#N?gawu<+g1{#y&+UkRoBjc|S7Q9|D}grfdTM5jZfVE)&;K*d&gGRV&gwG+u46fSi=&8CU?slq-))T*uT&RD@Q6 zIfu3Wvfr_bL|+nDBC=?J*$Q)78DIv*Fj8j%pdkQIwE$;@xHu0^wv6}wpumrpaLtNYQnG7Q|*}KX3V=YE>;t@r^d?`58a&`Wejo>d`m$wdxxh!j{TC9bc6cCPn+E6zYEt`s z(DZLC7clJ{wFI$=7-L5*2vZ^Og}KTA790`LjnC~NPJ6T$Z#}l18~k5H?F5i|n^54Y z3J?ddNHh@LEEHd+z~?EQQGAiFPxq`@OPawi5BM~a8SC==2{+$wN95P1PF;a*Pl;~& z--YI*KJNd*$a>=|nE{)D&A`AWiT*cwb<5NydLkyP_WM^TLnCtg!=LSi9I^q`-~i2@ zFdOrzqV(9~Z2x+^FSK)VYt=!J%p)M626cu~oJ{{SGB5jAHkLvj_%EOpN$t_eQf-B{ z48wp<+II;uun0e9-|}>trL4JjU?GL2<4yrk4RF?W-z{tJWPzj=8>U0*`)6=fKr9GTgyU2KD9WhVD%7eaSpa}gI9GwpAc+Af)EFz&1r16-P{Icg z6uettQc+~q57@jWz&EOABe(C^f%qcQzDqeE7X2$Jp2eHW5!JLl2L#S@<;Qc8i7|!MMQp z77uiyKwMN*_k`G8O@Qvf)y%qZ=hN4r%@2C#osEE;AZ(9h4_LVcV}!t#h>#ngaH0Nt zb!-5-zEXI>nhS>&89rJs7A!qJ3~)1X?Iuq9X+EuiIKCMq}RYwkm#;?#zW%*+XJkneWR zRb`#~k4WBU5}*ICCQTfZCZYx_QSAMo+x(mo{!MFOx(BdNw`V6g|fx~~_3Y&Q)=P>2i#Fq=gO zAR0t$+c<&CgGI_CEo}`Q6e(_-PPH$;&LaX>{)>BP5v_U6Y&|WiYEZE zM_?$o9+$xNAr4@-5YvD}0yqK{n?at+{&xpxKL|uY{)Y^}j~}-|OPL4i{KdVS4{=}2 zqf;0WWW=@FfCU8#0V*5$XTa)Qj}qSf=n7O*`H5FoRYe2q!O07&2iO8>pG9yzqltF9 z%F2)(oy}QqSBkI&&`mE6SQ1g^K{;ri7|Q-D5c?##&Z-&u(+7{RxcKJgX1#3nBu*vR z6cAtma!rr}>B}Z-;rE}ch2qvwm%L$=-GkO)hlnFOCWgFG>^XK%tSf}0j%1zSf8h?B zihGD^I89Ic_$lGCocBc9zI#GUMI|=J%8&CYR7_`}%THXr{-@^BRH4J;->tHO-=DXV zb`1zrb^UUoG45mB$Li#;y5$S51We1aD}mIqn%wHWyz18s#1#^Kk(~n95;&0v4l3NV z0z~Nk{jXh0+IR2f1G{xbNz!%nIXIfRTXF(#Utds_xcs_r6Kf`)ol*4`+TdnGZmIiZ zK{*z>Yk*^39@_%!JQSd?gLYkh{{9G-4aew>2BSMRHCAlx1e8hs z)v&+exmEq|UH|;7cS})jL|pAxs5J81nUt*&AJk@Y+=+&4LZ~Q$W8HjDZkLvzq8uFK zjW^GKuB)rNWnArbuVU)@)eD=yzP}#bdk6tHV};B;zJY68&%fnjXue0Uh^By68sSRe zcu)hT2MJk#S>-fki$ka!EO366&|M8d>6>0%xCVVS(O^m7<>={h-E;*8AUC0?I=GYw z8VWj=rEnueFb1GQHbBtzy}iben%s)$KYnr4e3|>#1iZSDg8`Bg$4zr%@@5sm3TeN{U>@pqp;zij8J6Nsf z&ku;&b$lkYSQXb>2uqY4{{8opy!^*pJUwGE7!2*6ot@pAp83T^kS!S{cbQ}=Ga<2} z6P^;I5PCc_OD%y6qA5+_yeo#bmO|#xJgOnuUQQQhW(v1iLt9FaM)QS~K{!$94;Tcv z;Na57TLIS#3=IPJ_ubq4%apd{#A;O^J)*gwDxHUaLQZ}{c zeN%#j^hrCTC`k4NE`L8|rv$QJ-m2d<$$x0Ki&spr)3(2wyi5E*CkS*nmF|3cp*5Y- zi>8aHy7M0iaVr@J_8YPVfB%S@a#_TRi^Do9Ed$_RGab#opfe3l}$ec1W|! zaBIhT9^HJ{cbEps-W+g>uplhKYG*!!+jav{+9aqno#H%=;6DR)18=gH0Ua6J$Q-A+ zMSe$Rx=3xegD9KanjQoy#(ZeF2U=e{D7s^W_i-<*g!0NZ*>W@X!g?43iAzXX^f zUfA*(1Vj9=?jRQq;!QnF05#YDdJF6n_eO#8@o+_UfHtK()uH(7TL8s$3yee&IEe9k zRPj9M6*RzvMZ(-c$$<27Qb5&*E=*KZM(VX7Eckv1Z4cm9G$c_?kUwXDK1mbydW?4ybG9u7WHfjcZs<=bzEIrWXQ`{?GxKZrmWQ=ZzuBoO-(pG_uuse=?JnP zp)L_no24L?!h=DCXiOWHFQO+w{N#w?lD?)UwWA^ONTLdq(iond#Z}Ez@{`7(NeQw- zYCVQO9}1EL^Mv@+2!**yr8d;nDZ(>!0hjMe35Vkd5Lma-FD$UKn(1CZpUT_We|dEQ zu|)k<<$xVx#wwU8Mq3BCa$1Li99R{dn>SPLiY0(68tYUAD+f$+x$KLuuvpH1w|2E9 z|MEVU5P*{Q>ze&CALaq8naB)6>k&llvrA?JW{0&5NUuvB!66|!fLz10S{%$pQewbJ zOa9Nz(wJF?{ni@g*>}hLaxOUDr8ccsL88OAcmb^2OHLZ7NtgUV*@A|I@cp`iN??en zaJnplkCX#(C*VHj!G-B?V8D}7A=sHZMTC6=l(8n(f#twcleNO-(ycIjxX!>#<1Q>+ zpNY&^MAr*oD=*0962zT4VHqvt&qCf0h-2}KZ7P*6BhTn7Ly!g2zz;-SU}{4P*m9_L z#RmZjOcfMx7Cx@hDGkY_u?=bp9$|H+f@2r^N5f3IZO5ixhK z@zkJ2*ba!tj~Fc2V3a=B7LZSwLuT`)Z%);<0QN-p`;LnNLV zlzbiBs)4${{`=-b@SOUK8zuLC>p7xO?K3D;^VZ|>oKle8hT5;NdBZ8MUis`n@vsth zAQwcafefnpxzzYe8&5?Pg-n89bwm*Lx$tXq2D0Vd-ine1`er4i-bDDyZe6q z_KJNa3Z-fB{9lIindmN|vtkNw?!8%LhYM*=^a&k3wFh-XH+)BqZM%W<@5tp*s3-cv zsAu6CTQ7L_cmB(j{vS+?@R;A+UkgGI$3WfSKa(rof2gaI@^=6i0K|cAwbk_KpYan1 z$N1XqlR;u$H>Y?AZbUBEWp4_&NkX2Uo<1YHnfx!stAAE>uDvOl8lj}BnqShz&cwu( z&~#SGh&rvUq+LGK|8`Ri`1biVlxV=Z7gwUjSD;}g;!b?Y#`u9kh9{Jz_VXU4p4Yb? zC37rSXVr+BB2vF(yf5EJ>6c!-Z`ueo&^9n*F1D63<2#FmuDsRz3J;+}!g0vJnAG`A zLy=Wgfa2RPiXY1(Ds!*fg5Pmm+%XY~rC~pXp3sk9>$fY_>seloX)*?@ePtyo$g#ib z5X8!S+zFi54lV6KDRX+FEV=Gi9x}YRFC{~^Hv7$x$OwfOycMm?%C3UAPUThlK&5-0 z*=iTR&n#_uFJ}JTk;^E#OiRs~*THl9P$r)eyMj6mng;wBVocUga=tx}k=Ft8{wI0ggXTKfav`SK#I{ z6Hguaei-$(!#(a{x%DzTqP>LNp%^$ULSh6Kr;1z15K=^NW?Ea6#+p}wL)_WpZm+Wb zeg%9xa&I=Sj9x8DntxqaJ3KKFN0|+MpCUC=eGL&bI980roS;5|14{Tk zVsra39DJ4Nz}%*ut&ZVqb+ro8I23u>t&Yv}h!@UbpxTflaQ#hy^itk)g>;B;Qn=~# z#~|>0us`tNkr7%FEnpwvi~%N)Uf~}Io+kUm`k#m}_+I;`KawJg;R)Y>1`+?0dg8H$ z`uVLbX8V~*4uX42tD^xWUw~Lx{PCL*8G2A6BnW6LDNSik2nl8jt~kK$F?Zt(NoD9L zkC58#g>S+RfFl?!4@s^C4FGT`7kT>ZM5Kmn{lbo_dJDeTD_6Bz8o{~Ne7uqA3TYvw z{wW2}DLpNkge#fV08pv@tQt5w+BvA)%P=Qr6;#on3*KLSP~7obPSFP#a=pCYBZ1QvJUb++SG}tmOlmKr_P)Ne z#)!BJk2RibEtR@)ZWIsGrwFmR<{DC~EdA%fQYVrboZ1j^l9$T^_Isbdj`(v!dy+C$ zi0Qrur8{O$;blhL*K&d)xz)*p&gJe&L>dq2BjiPAZuhCLTH!c(J^_IyvjDgi1jV}( z^n(1A@W{-cqN~&fM@<22jndz2vpr5tFE)NR-+$Q?FiMbc8X(a@t+(IWbUC>@JsaF{ zE~QGZpJ|_JM9ii+>~QJ_J%OOXJD7L)0>N=y$|@h_Jrdfii zrmW;kzAchfPeC@8>pIpx=uvNnSb-CwGd6)U=kX)DWSekEs3VIbUz6 z5e3Vb()7b=k%pb6jHiczI>>icdTnpEyKG_mG=r1S+&Un(CAU}i_Y;Q&gBC7>+KfP_ z+5>2;6oE_zi<*Le`MOk7lDIyQA*Dg~n>J3`H!3bJ7i0*0XU-sXBqKSYE2RST&B2=2 z5SlTvxExz8FbExCvb3Cvg;6ptkY=BXlfW(TJ!^-egp;BHQ$OoO0tfuohTzwH=gxge zZAR|e?X#w6H9qxtfA@_;htEWXhu;#C^_)qh(?5`OH_E6!gY-Q>|C|jP!kJX0-Mdql z+nN-5r0=`|NS*Z{>Feu@g2+ehg!lyLZo|RBhs*+zmE8A66{qcujFKeXhet*-0V=Qo+^}+Nz!!1fk}luV z282Ve-AWB4Z-_ciEWv%gJQ8s>A>frr(&Q&r5FG#wPrGaYOk)Y*={_b8C6@nfn3>f=k*Yw z>Kxbr6Jrjt_G5)flAcS*xn`7h!WTK^Xni*Q{w@7a2(l2MSe`!ysqdbYTJJ7LyA4fW zcNAzYira2fip#hnGfK|zeC+T|V7b6%n_db$rN7smzV5A?>*9`qpb1=j zR+)}uX#cLCuy5=SSQtdyEHRMfZdrb*O;K-Y_gzK@rYE2+KWJYhb1WMmcf2R5eKBVu zp5E!^>kasKAibLAR}4Z&iA3LpqfMpuV}ePN{>lRJH5@j9(*~;6-TykX;3m=7kajg30bm?DA%!T=Rxxl4nG7sA8xK+zzB^NU~k_((Lzj zi~V@}O{{sPo04ok{Yr0{Q)G5_HuPW-_4#50R@4So%F_I_R9Rzf?KLpY$1mJ|oP2ye zDkHyD1F5Q2Hr+csG;~G@c^_d*=H}*ZCoKT1wYdIv4B>$i?mm%e25b_td>|2L>36${ zqD)Ee9~sFjYll|}N1s$E?$`e6o1U_kb!k~ni+U#eYhfzYvD*`okV6`YNyc)1vHkhu zq4N|J zd}KR&Q>TK6vX@kgp~(8PkdWfQuXF%rm<&YE>nG@L$0Ed5eYwi;^mJ0*<@4t?cRzZc zTJVEj`+amYOR@5Dnl;8-j3fz=V8rm8AEZqJI)KHihl~m!ehg3#WQcX5!f;^(^Hu!P zbZ>SYd*Bx{99VO^_N-7OIS-@@YI`v$A61S@;YWWotfu;PHJd6|M;YXM{6&3iORrv) zbe_9!)toq?=`nLxPg6Tvoo$T(LEuE#iY#k`eOIA_5YD)~khTnF#L~ioXZZcg%e5hC zOE1MBTtA6Yx_$-Sz=#>}pEaHCsZhyoITFwl2dJ4No}%Y4P-2+GF<~-3l-Pg9Dx{k} z?Fs?km{6kUrGakWGd2GVI^OC6*gENZ5$??Q6RlBCQTc;d@#3X`Nf__##nA>7sk z4j56am{xmffd!A^gyNnYJ(ZSuZS8Gft41ci+a5Fo8)X>Ca}fA=V9Q3pF|?O7CfXUE zYJ{YxsWk*9A&X+AqCkW7t@goBg=gjg!F^p$kDgVLMtADTG)GDc0l@7mjS zX7L-zr@0l6u1Xt6*z+{m=jS8Q+uK{+oYD(pv(oY_J5iSTA28dEOYJhnNq#yDV@>*X zjBHFjT<9u~nKpzLNlD4u(C@bq!OAxtB_Hlo#IsLl8aq|#0&xGOxGDBi4JV*wPo&wi zzy%WVgYqOBl(%@l^~Ryiyf0%<_n8hu(mASvcIS;Kgtvjxj5=^|Op#<_b()>(C&AHT zTOIimL_g?3QRooEFDjsG%Dzcb!HD0`VDxJ<3jpm|Jv=CAgo*=C;sBD47jd|~k>XHl zB8m}6RD`i*aw@)Y{#r$BY%IZS&b_czL%WmbEl`0r^TYLsq6eI)#m>d@ zjw*eppn2ZNYy?w)z`tE;BcSg4%8YcSJ%Ccms$Y($Qr2c`?1!F)%1hQw9+FYg23D8i zveHO}l}MzgF8RD2sx^9hGnJNbG{iLw8VpH`Qzh`LpAvkaV2`UBhJPIYeTu-_bn`4I zZD4R+!%4*-@lT81erkBGrHQ(K;+dLZ@tFe=$(d59l*^lN1A*tu)9GIKv!l> z_vRmG;_>y4!R;-z0i@BxGEMOkd8#vGr~B8q)pMLMgdXZbr*_4j2H(J_ z#p7CDS4tmFr6(8FBI)EH47eU4Vl{P)$cX*l*!%9docsUZ%ii2ZR;rtZ21OKU8bxT( z-Zx3Kl}fwYyb+NUm4;{!N-C+4qEgY+MkQ^HtF+Jab>;gz=l3|jbI$LNGyXZ(<2x$X z_+0PLd%RxH*Yo*&Dea%e=)3*kr*BS~k9OHSMuF;K3$O8Qc`T^dE*`F?YdKcl7hd!m z!a6waWWBxCy}_Yg#uw0)Y~#mBfa!xj4-^C_4E1(;_glsSN*(FTHrmz6PIU@L6%`eE z<(nVuoV9khu9x5%R$n<}cSQSxPOC#^@uzBO)rQgVXFYZ&j*W0ILf>$oo9<~VqQx)~ z4LHc0(H?g{d7#=fgqRXDRe7J-cW8nnpc%8I<l5sUPe9yRU(( zt`&mb19OA%PVc3s7pTAB=D92@t)COZSuAv9x}Lc8r`W`o2a*4lW`$gD2Q*iO`1oKK zCx6fQYd0_w=EnyWPoK$Xj@Li@dT%eWK53>Qfh&EPE`w(9+-94AcTeNw%8>x;fzkA+ zAvyU@?}vt{*QV`WDm6{+()T~)?B{hoync0+J(3vbi1YWDy_>|W>OP;&?5r9*{w?>Q zW6_S0as4$T;ZLd%I9kcgRAJccr3ooDs`BD|;EwS9jL>CsW7vE~dgs)wHYSNz9Gq9yg?~EvXo0Fu^Sa(6<&AisFB`;xDai4@n#*7J z6D`C~F1d4Ugr2Q`vCV;@8jZJqz34*QQbyEF0N4jMG8hH3UoU5;&+-M)RK(>Qrj!T%BD`TEx|Pz?bg6ViLj( z?0S4Mz9dfHz3GLNA;cUX82KwfY2n)1_Y(dTpF<=Dx9O`vvyYU7Jm?O`Er z1CFJ5oU*Oh&`Kb2Sx!i$P+}I+y&@zDrC=rvFvk)rVD0TM6`5?FbW$6hT>7Qrp4Wt= zxgF2Jq?4;f#}Q!fVrKFr--(`By~u>U<7KAGtJ1g_o*kFz8fNC1JE9>8%78?ygGQ|; z(>&F!5lAy}XD%`4se#O7h|VP`ryBMs1#Yi6B$D+ANjYBdK+5ST(>gX0Z54j}J<9bF z7&bH2-Gd61;gal>lYx%+b$abTV8JCv6s-UQ2gy4~KPeWUj>3cDNr*~u7gHdy12zRz zJwV373s^4YbeV#6$vHg)J(SIEQ;`kla}+y*=xxQCH3Ao2f3e9z(hMvm{;W~Q=rfn0 zijD~w>)PX&v#lJC?F}y76{dDFcXE&C+bcmCWRTENY$cfy557dq*RDlf-soN-hD=4w zvQ%BE+w9@0V2`j@&y&4{@|jPbKD}Gdr?{qV&Ei1tnJ??>Jr80gSTO-$kXf(K9n291_^13wtAY@WAh5yZ+b>0kPI}`#8JBBHCUud<`XL(_?5wAF zY<&D`b_Y2#z*wTQm3DarWR zQphT z=F3N63FQq+PW;?ER@->3kyOBzfjU-6g~PF$ACN6s4Hs^n-?c0T!FA@Z((6varXbUx zOq{h~*zk8!w4CqoEer!Nw}?;13Z#Br%$$(u3;|d(ziVww&ZjH9CQ6Q51B-~+E^L&w z3G{qoam{it+g;_>7xD6qgE%&a=;aoMVPo~jw4o!Ccet85@fJr%6y&P=TL z&*YFg`|()0@9V!lzTP{>u3`q`i*r6F!=$XD8YW=P@AOr_f#v^GX0{|t~bxtE2<25>;d!lWBF;deuE_fu10kdX-O_n)hginW)%QLrk4yX~X?B?RT z&?LJb-^sp40it(O@VR?*M4m2-5C9ELBSt-6qXe3Gh;jV=M2tvj+bWo-yIJTDV!%j0 zlW-e(7E={v7-iSxvB|`{P6GjDQ?;eN`K5yxG}y4tZk(qJ{)t>9vBRjtquv0SX)2 zwv`?0000iIXQIet|6@*-y0@ij*3mIW4GRk)RXTdS^V}jAS0E574iO zkCunAo)B)I!p*?}k%_8+YeIiv!<&s4&25`cY}QHI2ZAz=jgKf|f}qI{dQYs|=pa_4 zI);d~Oi^JM2A39pgNdM*OM945a`JTgpz?@}_f&i$71Q=V5c+rEgf)nqV1ja@}w63n<&C zI!g3Xn2^*ixSwkA$w%NE!}I8ZuzP-U81Ju3BrcJX0BCgx-T>uWUsSCRC6!&`JHsa&Iu--au>}dR0h}Ym4 zIq_7xJlu52B6gX>NH5ciceFNvC8ZQ1V*rPHS;8Yn7PSkRIs0Np*cqrbH@}w}wR!V) zo^xBS|8@!6Bw{Y$bgSt&3_-y1HyeK>#!m=>>jwgRG`KR#wZg1DO``GotQ!s=I-~@kU5zbRZv$ONnnjastW{6B@gdXm-bYiGV{H_>kuwL+Py=ULhP~?6DXAIx@5iQdY z!u=s9&vi3m>Q93B)2kaLhgo`7esg*aJNr}_(e}ch^BGo$6;L2VNzKXlR#Q1@Nx8pk zkaY!%!{$C@gdR6Wq=x9!_6CMbwRh`uVk*d8di6|-5tTMo_*3Vnx4m`+vknizb#xWE zZ>H!iY?_J@E!9C%vl;rb!d%nX#5P|u^rNI_7sb3bw}aOEhW+!dd2AlTW|99aRY2lp z->g^0wuVc$nV8HvbCC+Yo*gS3bve015Ps?}lOu5YdbUnn*7!(ijz@cKqR4ux{Ho5k zoqZ&br@rTraQN?M7LA)F%$AaPHF56aD>z60dQv%_ri?>~?M2Q_F4=_rE;2DVM^_Ag z28R3RMJn$f%;!_wp*W&c%24d+i^@T5jh~}R+Vfh#%EumK{al0ZaIAhpGz!_rBOoDd zV7lb@?}XdKoqY9f$q)7Q24F@4tIORr!8JKH=l6vr?UzxyJ8=JzlTTg?f42D94fw38 zGx@1spa=V$N^MUj=5$vXd&@@P0RKD`BH^asII}SfCuuAMg)rLqhfagD5|E}Z)WG5y zIMBNP*_V!4W_3|dbGAyr}ILPEGr(i5Y{&+qP{J z6FBbEoj%H$Vpe?+E9UbB-Yd_$E#v3Z%0yw`$_L0eIW#m$aUVXSJnr;14oT<3@G&a8 zV9BM9A{FfvKME&Z+dj^zvf|!<5j?2->Yze-&w>Z5(CWo-m>UD9Jeb8s}PU8rSe zH4{N*&}E#!@PFCrNVch2|B^#j-lla=}Q3DxV% zQA!KOPHCok&k^~Ba5@JzXN4wOjB2C`VYdmdG8B*burwwGQL1)l|!QeuL z3dtodEY)9UTioI$ZxEX4H^Z1~`ok^OEwA^Z7A?8rst5g2G; z@==Td#;5e;n|_KWIlF&7={9rqe=#It zKtjitJad!74BPQ`!ER)C^bllEj$K>4IE*K{pZmcAw>n~SLtxPHW_UqTn$7_BID!({ zWIT1#kMn}|K#wTj4+$1hk{9tOliN349!@S_>|GUap!HQU0GtbYsB50olAZQ?0qYmJ z79cXLpBP^b;;3gm{x>m|PQLil0{~jsa>3}zp_GWJ>q}Ff8yXa)nHhi>f1$z!ui3_x zJyjNIPrcS{J-T4k=0`xe@L)Y_%j$(FuMLJcjVsTcqFUXOozB0}_Og<~og;kV`4gW{ zh*t0Y&8cd>!6=v){+d60z0f()HApvBkSxL9=cq`qgJuUJd*3GsZ3 z{Q1F~RxbGcQqSd&@y@5Vw*y(O>KBnpBog%KVo`noYlkn#wK=RzmOpt%2mfoeatB~r zkWjmMSYOf8)z_JU`r`oLn2siI*-B_4d}GIwOJvG2dS1o?w4mhB89Z70LL)2cgH<8? z=mDUAGvv}pO{<6!0NCb7lF5pS`*$jOgx9rxsFtUj1BOu=2)0)yjg!>shVQ;hTf1=rE{zA*o1 z;;&8ZX`aje^c0lq7}YiZ`tTBvTYAXNo1!-1$Nw}9(shC1wC5HLdp6d+(rv5?P-eYR z=!!q&B#y*8i>>jRy=IXDFroZEM|-N-559|TRF1~rR6ULdwSKeyvs=onJHdLvZ4PmI z@(rE9*MHgkdhkcg0F;a?w7a{y;(=!Y4#&gO_9CNT&4tcmcaRe2pRoOPpJPwh*%R9R zOG3xS$4D%MdDn6LoBS@;Zt7`!o>6eM^OFi+xFVlg1N$`fwx=hx`|G$?ua1&&8+ngH zp2(H#O=!^s7ru|jSQqa*W2UO|36;#k#erDPh&&-MCO27Bv&~5!BZ2eE@=-)YJ9%l z$tT;hM!RGG;5hLyWWmiziA5zA;)IlqjP;kWt^R}G&OVvkyHF0%$j%z?voMAbo`S%b z*_s*^uVT{MC57H;K*#VRx>CNB!mm(hdQQ(U4}}TFC4mJX3SaQ8@Tv|!+b-)ctjh5$f$6Nl1{(_@P?M|?%x70!z*3_Ln5LL@IgUXh?K}oZfbntk&k&sfPHB$Y?Lh4=?M8n#}tvL_I5$BtC}E0GZq=t1|sv9U2r#MI5S#YX*O z>KE2J^X!XOuk>`rF-{Vm2<1TCuY1`LxB*E6y{9&@1y-owJQO8oVVBO#0)(G1Qe5zr zzjduD(y}8znik7*J?v*)D?fL?4fi1SS{4^TcnM3(bOxQOM)hQoA1Z-n4(k2EOI=UE z7$Un~>eLn}ZpouaCdkkk^v7`_l|*REGM&NhX;xp==sWGT73fQ4TfRPvo4;%F+q z4qxmCAwFol7Ys!*eTkU*KB||!65P+@C;@9X0tT-~Q8*p|r&j%!at96(vTcMqScs2L z0fvXf7%a_ZqTe8aXytxul zB!vRlN)1GRChWOktQp&=?bu!}Q13QWKllzdZWP%AW(&uJX^o);2(CqQ4f3Zj&~0fY z!HSk&LP7^JukxD@B>Un*?AF5591k05f92O5<>_~J*>|7t=)~?)q$l30Hwj-rje)N} zY#UE^cXy9~*+4*TdU|^Psk0w?-ACFs-r$g|ocN6B8eH|Z>$2jvf~AI2GCV;}ZUffaFc@0@S%!SptV9MYWVHG#zQ(h12)>|wNc?H+uR4|{GX%Emq{4pZGF8aF&gb;5mugfYk??6>xAc)&U> zXjRs`N9EK;6Dw{9h=FU7_>Jm2hGI& zE^W_8Qlo*_JBcqvQwWqV#;qGC&!TKBUDJQ$3igUK6)Dryv4_I)WWUSL=C5tXmOS(m z){CJ{08O!PPJPnC^zEL`AT$!a%uQ<4cr*(>r8r;7je+gqg@q$_uX|-9zaqjVyE@`C zPoFW}B*Cf@w!GViV$<8JQjLNwKfu0-gvi*+W7cYmX<@5N6U0`vqas7m2j=kY)4ih& zGM>9jGTEncNVzpy?_qspO9rydD<4xI|S}+Z?|MKN;+p^tN z%C8R{IPejK&We{#cC?0$KaE0;OtzXBa61kz0O(W>G^;2u3{K8Uw%u8fKD!*PORw8c zMMeAu!iz%9D&wMEy3_ZAccd{nF-|NvjC%~q6Hb+rh4CH&T3_$*ZakD}O*9N)XTHp4Bax%q^P9K99F8sBvqAyqYOEGyeagJ$DvwTd=LM?nJW*M zd~#yVG~cEEb5se7C$T=fP)3e1m%x8#&!z7F;~V<)B}aMNKdNl^J0U}gPH}`nxbe*) zkjYO&89Vq6&kxvUdJ|=_JEku5k?vnVRfeQe-B<%;*%a!EFzzI@dn!Y2*%uAiq+~=J z(&58_%AV$D_y5H`gK?!_ALc$V&*l6NzSlpa`=3M!c_^q zY(fg3=KX$8uR}BVMMOl#ZJSp)uc=y8*3OzTQRhCKohG>K|Md?4ilu}dymzB}>Z;Gw?fpT&xJ9TUw3 z6@~9EFze=5xHfuzi>rsn>g72Lw`|)of5cgavvE$&{eJ1j{_zjPi;LgcWzDE#@Py7+ z?Jl+zb-Led(&qyx;Bb;maf6NVI$+4?Ah5~jIXnQOK@VT1&Ke~v#xm7e@0G=!?!Rnq zv3CPgU))=9PyJ4q)DO#0M2~%9=@blcZ7H6*H9x=tibo%)MvF>1c~)3?9X`}BFX~q5 zda@@*+pZ|P){>>0Snqvp9=&()cym|FW^3zr?DL}7-}#(Aqiq;*c#U-L+vS29F}{}< zay-O~kx_I1#d^_-8TbmfG6#eutBF+$iUXtpr*L=>$_oq|7OIU>wFlrM3UjG2VD`J> zj6U}Nx)9EL4&Dk{SPm=Tu7X%ET0Qz`z~JlccLmfGP$8TNHVaanK(CqVyI-Ci=WA{- z>>KR$OZ84AXHT+I>UbVc>*L$;rn5$G-GC4>3`rR&hATt7bR6?~;aivl4*!3K7Sj@ze zt)HM?L|lQNfVoz7Xlw74pdrtgqv_XpPD6w}+^rV2XBMi)zEg3i&7E^n(^6b>Z9AGs zm|SI-NtMPc_DeXV9)aazR@H5g%O{ua{{@Q4wh#BW#eiB1Pym!rjcj)}L}Z#M(>siY zfRF-InUZkka1e8WGv{;Lh8gYHnyk8}5_PLM_UAKuKvZcT-(#&5EUF{M71#EpSbC^I zEzU>9ho`J($A(GidG^e94ImJ+=FB0JaWIn+jgz{BfCvX zf#Gou&6}azle+Qr5|E_v_`=tFZaOI|q(i!*VcZ&1)t`CL^;LntNFr3CDD0{sQMk)P zhQByMZM9_qoa1<{@Rps3LOYoZ-1jAV68@$1Oj31@MfMU71kBW)ugeQWS<7)Za4yj? zVB;Zhh4Dzc`clfxvudI@0O#gF&!@>OlkRryX&2&wALJD_n8k@e`QYnxw&`46uiUu z$+PS?viy_(|NrzKj{(;n?7SICef+JHpoK6zgAT||V|)?ce>Gy$8@e|;dqqqcj9Zb? z!&3YE=qB4-B+CWi=uK^Eb6Rx9PE&@`_bS_G8pEbWEql`9eTWAB@@m%Dp*0LfWJ+=G zujqB&$-nLpoYj26V>38I&w{pvB;7f}6M{c^p8qLw5%v5#u(4V$npYsXw~T#mkH5`>7&X= zL*(gmgWfpz?s^{*0H^Uzy&yk$mi*N7=h7IzQrg}!6rz|t8F%;qo@LXq9v&8QXH@r= zK5pdV;-)MhE#(PJH$A^?P_4S7qBf5P)@n0PDE>ibp<-gQ;GwbcjYA&z#8;bH_h3gr zn5>m(u;iy_muOS_Qkf%7Pd?(+=?D}_=bV+ z21XHXmGdgTv#rQapXtq-W(PO025<(S;wldheTn@}-O&Zriu@5<=mL4ZHYQ>UEtfEr z(eNu*t@3Z`eMbf@yd2v?ait1LcU14%S@@J+_=rD-&SVYC)~yOhI~uvHKQY&+`jj(= zLU_XPkE%!MhKAnz)j3pjJ8~`^HwU*^af9wV@8_EJ_)Tt}0*j4;A35d!um051RIDu4 zow&OhAC1SC75>Xr1vaYrKHG8iJ>6YQ0D(qOd%J8_b}PO3)s64?PrB%6r{gcIY_kFiX?8?fLD3%+r}q>2-{AD-Qj< zHt+bsO;>s8*Dsp63!{#o{~tcv*JWN*+_%ZF0aSdBfQfh4RVw|2>&Fs7C$53(=3dqc zn-0~Sm6m70!j2r(K6=vT+=~z-W@X(5 z87YV@koRvcm06X#+9gR=@43Y%$vX|75I=%4rj9a%bYq88MT|l0z8k3zubG_T(31Zo zVmfjr;|41>wDEV@u|D-Wq z$#-}Qzx8fTY--+=ZPR<+kZa%t84421j>w)ZLjGOt-L=^)H_@!1@y9@Z9+5rfg@)CS zV%xN=-#gWH-YdSp4V7~-4Ql@L;lA-^5q{y~x0^G15LJ|+6VYFGb;ok9oc{IC*Bw$3 z!PlC=;-yk`?A~{a`}zib*6&@!c{()pUAE;8ag_%$j~m>aV__OXo~hKw0nDMIk+BcI z?wfs%3hU0EbeHaX&mACR{GzPsMcUh>w41T#N5nd0lM(4~h*^}Yq8OIR9Bxz|j{vP8 z3gr)C%VyR7GRWG>pU}jb)K(8Lk$!(`F0hgafW+-b_4{08GJ3W?IQ|TH5D~jj zMg=-i_VChm@MQeiIn`9&{zR%k{jhXXPj{8y;{as;@~~k|&=Z|PKM^(HS9~h>Hz8dE zeeeeA-Qb5;mPmS3CbblTXx=uECM^7PQ$kZrs5^PB2QC*ELU%S`ttoy>(3J~X#TuV9 z`Q+??cu23!Pd&bAcTMv9ew;i(Jd7An?u%BgVmFnZczoUe*{QD^#`|x0 z#Q1s$437@Sl4m767gKI@zNq$|M5^_^q)Nr{Vjasr7Je=RztVBD`K%PnL0Do#=Z%cm zx_J0DZ@!oPDmrcFsH-3Ep_T$aH6S_9PV_D_(MfvdP^1eYf6Vt8V%FylOD}!*tn4&V zo&`93TJIIf3=Z41rkrH1rM_bBS?=>Qxz(v}q*!-@VFQs#|2A6u1AK=03+Jk*{9~qk zqvPAM!f(40g4(K*OQeME95yR^aRY)$)BXS^nw4dpG^$@}dj)MJ|C{gsElRuLV%_nl z@4=VF8hk1si%1@}G{nyBYgUAA0ImTIBQKAwMpkaSbH?ivqOhF*pzB^`;Mj&5u8{b) z*-{nW$O~dnlz^wxE%+{zGz>Y&57=u7ZxJq*3Q6vPOH?InqbgF&wTjRU3yS9#0=>+) zTQ6L=V6yr$$p9t0)3{5FbvLaf4zB*%| ze_TiZoyP9*KH$bW;z602D(I?d&t$MRYsOf z7!lZ19riifRU>AQX0tnEsM9Yo(K_pl0KZkbQ6xExtQ9+`=yHeJ?`2j_rUWiCQdzfc z3qQ-*DWhbv#9w==d;_K*pTzF9OLBx^>w@}QG#?nJSA=c&v z%0+kQcdg_ZEPGKVEO{{&8Jf1@m+Q^dfkh{&JfFD4)c|;zruOiY<0%$#Pij#siEwOm z(mLe7Nn@nqtjWm}X0?@;YemofqqJ%I!C6sG{okEUOC?{pwk0Wt?1~?1^f2PsbygKu zx=~HpEN5iV3+I*?tadP5k*wP~>o<1NZrq}tZJU|c>?(V@;bnS*TdRRVx~qJo%7e-Q z?}%2(;Ay0teABS|$0L>naWai#0g zkvH`KW>9*K(K-U)w&IcE@=VNKQjQpGqDm~t?;rq@UlSF+V23Dx?F+0dDj4EqSA{O0 z#H`%h2WbTNUb}vy?Al!+G?G7; zW30REU29SERc*iWGxm}%BP1?0vL*Q55fC>)$P-4*s(i{lw8Za9pzp}&wi5#5 zYg*EyDEJ#!T5B7{jk;|c(NxvfzZwV@qGp`_kxh9A6xl;^?@K;?sqv1DUi8W>6%mb( z=l?LGDYtw&Gm+=dh_^o4tWeEL8NBLu@|5PMOhyz1&acSB@zB|Q{j|R)D6KCk7siA4 zGxnDH8WEInVkc5#K3ej0DJ2Q8t{MMob3OmVhqEq?opq|mYTg%x&x=C4F0x-4!J%SR zxN6iv)`RsnHg+JKd>#Yld*8JK9uGQPrmdH4Q;)26;tO4j&h!qJwS?4STSxJ5Wax(n z#ZFG*4nM!_CPy1=-&qZ5-rk2r>!0XoP(y-ArD54|P%4P23adY7sj|HY#&@*jW_@a9 z?Y4|REv}hVBAH`x0VI?;Gk?BWu(-n=0zPr3^?~VvqkPRMS3(q3lWCfYLy3yxUvn-K zX~#+2ul{wAW%F459W+OH{`f?Z#UZ)EC!|{`b$&OPdY9T38%gdBdCR0LaYfLwr*F1|35VzF*VN9oW`=n9@ z3OX7u&YsRhXS8;vYvT0UqBVOJU$_n@k@5E9Lw>jtqNK0g=HP|mWSS`JhRWT}|L`Q+ z0}iH1LfaPRBxEr;RkQuc^%P8!l*%HjjjcV{=N!&`uyB}1b(xG16ccnY^RdfDP(QZP zw~B<@9`qL`Kcdb0Pf%0sO%HbZzD7R9t5jr;`)!_aNDvY4?YeJ!RMNdJY+lnwa^cW@ zcIq}y8@!y=qK`f%^b>4epBJ(f1|R_*!PXBm=({~x5)WiO3}q+BlHq6aSC^wzHzzqm zt`$FfkGQ(Cy|+^h)qd>PnT|8_&32e>nlowl1VoOAo>W&6czXLAx+n5v;AirSM8A8fv{ojS}Pv#ZMXTI1J#=3VWby^Mu*NZ1dfobm0Q*EhL zvNU9DR|gTpG8G+Kh^UAQ-Zb82?NLT41BFGkbJ6~h2UNliP^Ekxl|?Ea@)6XGI~A{& zZfi2`H=_6V==YUyJjvNY-j#@)Yov|t8Q+Cv=Q8Msw1K+y_9Vn z0;)E+v?juuExOWDw*%C(v+4B+C`p@kRhCEaw6%}VAm8bptjwA_&#uHyog^!wy*_wN z_s>-{^*61$Lv!7L& zZT0&hQiEH6Jhme0F5=cZyeeRzm?zcS9;pCtm*UYo5lSae#fecDKu3Ud*Tt9z*V2{jSPklW+>C&CXXdK{KI_)F&XcSpq- zqr|L~x}_m67YAVpTVF9YHfCajY47T_*6X;421sq3Dncn^w9Xv&yS$L| z;jSfBx6zdqZavIzheS|x$w{!mA1#SNnZ?_s^ZraJb#a-035)6-M4{xF7&~W2hs>NaeGWbO$ z`Zo^8Yuovn<_i~2q<_s=v^bm>q8G~Qp&Q%M}v0VMzgIHx0mtaRy9%R zaBHZ;8UoMbq0TAox*1mSdZP|70Kv^)`Qiqa!NHoW99_TGg;D3q;A;+#~+A~e5?a|Gfn%KN( z9%54<)6-p$ot9aCfX);$epPS-QL(E?J7WxDPGR^cS_5mM;Q{vcBez4slih4ndjLzQ zA!4UC8J?aD>5(7dx~WzM!OTTDs`xXtAV^>rf$xaB~>q-`pe^VwxO_> z{%U*b!lm#IS=d5>x-Sdml?hG{lQG3+-!y=@vYZT8VetjW! zt47!U8zAj%#Az!H#VhI8bKJ=95|!r_?RC^=7~u>*P6mu$88|dyNO}Z7K75_Um8JodON2l76mJV^)%%*`>%IwJ#RDrgb)=pCoa2Vr;W@J7ZgX=!P$-dz^b zrV?d_$By3}b=%(R0EYm!d~HdW!8ka#4}?sP?I(;0oKx1WbGmdNgoSp)y6{PS1TRig z|68o^)IW~$r3O%itPhCxZOC5@P)n&A{X$I-h{6zlk=9N#q3piEuXrB^6V&^*^Q?iy z>4Re&lbFd0Kqt0BS9AsL?snI2-V{fua#A0_oi6TxSU6}kc?cn{pO8v( z=2$TYh}nzv`PyhPcw2uXSU#d4CwoC!p;t(mEKL5_pzIl3|LZItYi4D1Nw5o<)^2Wp zN2IykMh5nNRq zDa4ei@_a*uro%4jU<_B^MSQQ~(|K}PGv>y2G29!l1so(IE>%0iUK6?j zEx5iLtb@e%A(XtNN5-CB2^WqBGW$(O)$e7wI2mx=1aeoI)cFoK!GQ_7mlN=Znr?jq zw{g$}iFN?iocVp61-~(;75V3E$S$9WI(Q7J!~%;1^`6JQu1|^NqKuc$6Ym?(f=0W86II6#Hb+36CwpS_wghuD$YLebl&~@_&R5xO(r%|Fc*w1nf3uWjJKz5j$jb9Ll48U@CK)qYV%YL zKsShHTbE*8tZ1IL*K@c&q&8q0M;M0~UuJsBXT zK!Y!{Fr#dor(o9AR4|#$lyni5V|f>n(aQmDw_$)g$aS8$xV~WY(u%g4XME&lM;#0X zqX6DYPmc9lb@lKIgKm5jeqWvKGU!q7)DRNI^Ik;LseXSuyyK`R0W~s0b9qdf7vl|g zsom$xXQM%%CG+T3x2Z8ijnjk3_*hen&Gy#7} z^2^Q5U4xI?0T|qRvm}VwXP|pri>=-+UD`BA#;qm_u4PBCT)CmXZG3?{sQ^pvPw951 z#$eCnL2lrMvc_5;FYD~_O5;(@=%cwm088bhH2{55fMJW?)P2YR>1nI$FPp$5bXnq- zlB&Cf3hl>0=+}-8J)Wl5 z^)1?1%6V6pZ(OLD2fnkEXaa{59Jm(2@_<`RtfIxO|JrpB;9kjV?Hm~J9b_yygbdo$ul=SkA*Bn!rAP`(V0$wupxC3U~VTTA}bKjXRP;d4V;RM{2%_UFO)vFX0 zwN&G5z0b6bbY@x*VhQUE7}P#S&jRWKDg3Vd(^j4~kIB&xN+J9o z`cAt;ii%%7ENK%;%WdI3hhs_|SM%JeJ_cbx2d_(UEc$Ox7RVc^m~U(J}+t@hkP zhj!!dIS+w6Kra;zhR->R#xd|#^SbQLK3BQaHY$|(@*%7$NhEs&!$}4@AmUKtSn62B zGL)%AN;Ck>zXNk_7tU84{pLyyLDDXj-(_|b2h}2@48@?C!H4)of3YNqj@toFR^krD z!wYl6nkB`s^$#KXHgUcoKPbcIIe=Y6&s)#8X_pAONFycEH+0uh)!(ysFHycS#vwrN z;|R>XpYgO{d{-Xq2kWyFo)~ulWU1u#mU;-9>uH<}K=%p_)Il^Mo1tmd zp;Wct=slO|Y$qF0>Y%EJy!*}K!RRe+jnKVAzwwt=16E#Fb@F~6YFq+W6G0qPAh%U2 zy^t}7BTM;r_dUf~?g;!oV%tRwB`W~+1bK#Hyb$;$)7Xpv>Zl0czl7SIV!JJ+FE^h} zubKR+dss5i%sX;EBd~tsQeTFd(stx-KkSZVFltnJ%2McP3(3g zkp>EJ3ZpBW!j4uPY(ko!H-!OjD@WCa`JUSwlL!a4?j13Cr>Oyfac~kQvzb=#y?dt& zz73;cC$&+A4>mQ|A`w0{Ku9&rMmS%QV4#P0EC-p7$mb~fMjpWNMCU;2Tk!uUE@!SM z*RFToT%h)6u5*_(IhIF$6mS&ytN(`koW<)@afeVOQ2*8-Re$v^H{8z3;YLsqb%fjd zMhfC8>eG%}?%1JQq`VHsGa=alG&}0PHCPTJ35UrjZ-LT?#V;u>{(0E7#(MOWrLydc^ zRVmR!X@F6-J5g$xsoCR7KCDREyfW?+)-Dg38fl=y%@JHkPDofxFI=r^Q?09Td(c&L z20|{&>Lht2BWeJ}sP2)PcL5G(Xoa)gdEm!%qYFX#*TElb$Aqkyu|z7A9Kd6>5-V{f z_BjoIM5u%aLu@KN+LDVM4)?1VMGxE;hOJ5&=H#Jq*~SM zC$x5Ue6?^X&J!G3?SWn3Ec%>KfyJUaiF^_W*`V#QH+PkMUjzEnaT5uc0#=e0z>%HW zO39A>yil~GF5NaB6G9X7L>;BbU$I1%cqN_Sz92ZcQIv@ubFHKCmN;H^pk8Ek&c&s6 zo!YRgq+xd-B?M4cDIm*Sx_b2~slm_2dAPwn1F2nXXN5<`*&nU5OdqmWcL4XY2?pA+ z&>=gnrjP)`bprz{QL)N&sHh83qXN3A^ulgYf@6+p$){==w(l=xfnbGW=edmV=WA=L zX?eU}6)3`&^%}Lmccz0GTK12Z*LDO(i(o4mj{PJL?^A!1T9_c+Kr1YN>ySiD^aG+3 z@Kw+&bRX^7!7VIYJa_KgEjT+ZVYpPi6aFamTjy^}=pXYtk1zp(IBs$A$`#C}?TW(_IF7N_pwdtm0_ZCV{u!FC~ zIEum*`g&((B-WJzmgfzyq$zt+03@{(2(bnH&$`UP*l(8~S#*I`j8(Sv>us!Bma@X; ziN?w8NL>sj53B7&o4zU>8x-sTX}aB(@%QY->!Pr0eEtyd>PGVM-1*2OHONE;9ffb3 zW@6)t2HrN(nOqXLEz73ga7i;qHUx-px0OTkKa;{jxxbGpNAQm&*u?9+DA(0&z8?lP ziyKgT+99b!=xx^*^T=-qm4?%ZFlILKX{TB}K;7=XX%aU!R`etO2%-5Ss9=He-3+aN zTQy^t9mZ!^!&9_6xv&+((xGsjj|2Ea{V_!{2bL|(nukM&3G1|F{{)^uSTHOjYn-ROh z3q`WyU=v?k0fO;=0EyHxk>`h__CnPdLA4047mhvMKTm!ye&%oYvbh0XB=x%*U)Izj zYX18SrP*k!^bAqDRP8`tUnxBCqOo8}JSp!SM#Tt#q0t?i5}$svV0T)BY#$oFu0D6( zmYOprQk21=sOm7ff8RdscNbz?+XZfp99=ikT9Cpzx`c~7oxk5Vr55M*SP>DZ_Q+~s zV9p|l9q%xjECnV)PP&A3P$DycC)AdQK!!rijF5?wNWO9e@iDE=?Z@8COl|*eimYpw z%@1^moW&GKnHB^#U`X#feisGcotLz!ry_K{PEbaOIbIj6s#E zOv0pGgR*@dQu=rkh-!Dxc7uSWq{SKNg93>1UMQC76w>jo4lllYI1mfFB>GV5X7};J zGR2rAaShf~WLLLS$MGH_B8#{YP-*9?HqQAdO*rEjsl7(XS@k{($qe$fP-?AtxGzYmCMLbFro!XuD(oTP=W`aV*?UDxFK{8nBS}F z^%!nhH9lP8p?P1_gnESm7Bhzfs>3J_3QcdRzJG9wG|;b$nul;6`m+aeWCVqeV$`EI zpq7Z8opK^-bf}cs*#njjVFO&e;P0yVI!>2Yu1tnjiQYlH3Xm4imTz$)ITmfYavjc>m0}O|8rFYQNUx zTT3D0p=OGdFY9$#!2_E__m}|83N0fl=2CqXV0RdLyW~f7BT-7gv^tH*kh}meZfJhj z@pIx_w_uF%%-OTsv2CN_$3ztB!-_uc<4i3oeUL>7{-LvywO@W2{I2$SHXzLkSXyQD zp{80pV_097`gC-5ufMxWt9_R(c23eH0^xWL#KQV>mb?H;ikN3=0D~-#pZQ&`s}RA? zkIYLyfh4-nh&Vbh#jWaoXu716Cm<@1;>ln2C5#lE5zwQPiVLZr&@HF}Kmg&zWEbU( zBfH^U|kFmm*NBY;mjs&!Rru>-F7*v%NU$~c9DiUhO?2UKt zTCqJi=?)LBfv4u^E(T+b8ubWBF0MP13-%^;a)q=tgm zX`Ca3X@VRBC!D-8ugQZWzVFbVE&+=(a@vg9WST%gKXC$(b7!!b(}7P37kt5e(M!DA z>N2b_ejr(O=$K)6Y;dz6tkE>#9f0#p!VOaal(@mqPYI^Lnmh%ZhdgQ#Sw7y;aE@@i zOS;Q=4ML<@NCYfl92=Y>Yg;7|mH_M`FqF!(DIh;-#AzSFR4*C&1+DHdrz3SM4J-oD zqXH`=5x~@Lq<9quj`b$-$;eo!>i`tH;@f-(5k|bG-9gC`!pbN2Q&zzN0VJxO9Ems) z1h;PeWYqx}%%C1TDLNB@zoP6+b-hdT*?6K=8=JN25+Bqh=hUrHsW#rg%bOc76Gv|* z>F|s%geMw8?Do%3!|O{wAlJ}czSk!%d9F9?B~EM=Xg40{s8YeSPD5f4g|qh*jz~eR zggPaUL<*x+McJHZs{_5Fv>-4E3_SAU^4SiY+6}N&Whx^Z-{d>s4_OX=}uv2Q-kkg_7xa=ePT@4`cl6)C*1QU2ZzMlprF!}l+ zPL08ST z?0)LroYLgcXRc#wYa3RxXO#AqPeAQE#TC&4A(BkK$+$>9%la5F##pR9>SPDr$zR(RY>WheDY$<9 z>+iM2Kx;yg-Jr^U*SQ+$FZx$l(o!aZ6QC6WGgE8zPz5A^OkAeK*mp70lB(MXMa^I- zLyhRNm=x?H65m6Zd+uLjeH z(Zo3=)^zn{fC=ki^bFMMAWo99(A^g-tP%|GnUlxqtFFk8+d>H_rCw~*WX_?xE*f0P z9~f>8O-(=QHtpE0A85^mI3xh`<8gO=hB*=lI$F-6j@X9toVv-fCvm8K2ru)nDMH=3s16&;#g* znGUQ545EWR2_CuQi2BQs)ZE~d*7aevzmC^M?TMMx-DHsoD;0ATyh#F!vdwdgYN~`q zBe*szeRQ?3%OnugEfBD%_uk5O*G345sR11D2dZh|ZbyKBB7{8!{lVq4jGtlpIAiaB z5UkjWFbgZF?b0g4kARgBb;f!ivmtgDZOs0L&WeBUiuLstfeC@`8ZI21(*2#-NZ!~q5d zc;BYHsF=d%@XY>?LD`2L zVlUD0Oa&f3*=tpT_>zi)iW{1Lj$L)l&y3p9#xjf3Ff>j;@^Y7N?M1;Z4A!5}z0lW) z7&2;eH&|gil1MuZ)@%3GFy6trShFiizU~m%Ct0Hl%fmx3I`ZCiNcsO;STa(Ridkf@ z85;^I^9HJL@p_uLp&*6|1`$K6kqzty#^>1}0JtXQW;a8-KP6nZ)27YzsU$ByCuz&Q z@53$$qlV-Oq+t0vLQDw2!w%?`Zs42>G~?6mfsiHbW%k^;>V$DXYLH~?S^Lc~mM^#; zZbL)EPobgf-bvP5+`3P!O&6zGj$2Vtp@O0NBW>TR<*KUe`$FmaM9}aRM+XOa>>-;- z!E-oz)bdFIP~i@kKAJi^T_V;VXSC$Te6(JT!&;N#~eW9Fgl>UeiH6)V=!}Vm#F5 za%*#)e*I+r{G-#SPnX9w#AC2@9sN+hWcz}9(jyUfD(e`~10MbdMYlguR6IfN!YFOR zl4G}z35at6G4)|zv>zst><_Foml>2B|EdqB*B=3%E^TUauqtv0_Ht?XYjoHc(w!&g zc@>BTWDdg<5rLp*(fX9BKWChqHtPf`hil$ZcO9}~A32ZK!k(}0Pl1AAS+Q=xFLSw6 zQx;d8c}Gf0QTmGv}CH{eh21@&`+)DE$rE|1g?wYm1^yZifJm1MS~7 z(lZiXUfnu!L6<(gwMpCmqtv*UI*~$Mo4~);AVw@18C-iVP}vDFpf7c ze``YED6^Z-xRKtdA9nV_>Eq{a|8ACVXZiJK)27<5p8x0V2&uF@A~RuFVxi zT=T}9GX2(fjlQkke2-OpZY45DW$rJt(Mst0&0bYTdJu(DgOusK17)vV8n^7o)CN;> zA{{5UPovCH9KXFyn?k*>VXye{%+6cKfP#da|0g@9KGOb7C2Oeeby72*ZH7Bwj*HJ#6!=K!t-r7WPfc^ z8ypyO9rwQS)iZSJBmyiUO4#kbNG?dZ9n(09+vKVrFd}KI!5n^3=w01Bke6^uKLVeKTp{y6!^{y?im{D2K{O(k9T*Kaz`Wb-%pFvP6Thk3hiH>3F9I+z z>XeGhnq1_Z5vA^={4gv*p8;z?t0sVA^H53=AVO#=`HpQ(jD2Cvh7CDOuhK@^W>%06KjViPAuPpzkkMx0_@7Ma0Kv0pm&h4PQvaDolpkS4v|- zK4sJ_XEq8RzBrN@j}6Zj1>~?B{fRNA+6Ieseazu8q&zL`h}W@c_*z#tNYxK)5c?mk zY=|z*`eAT7LoP$)ji=B3D+&}CcN^`}P70Izq z?kkClQ(FE=kdm7#*r^7FL=$70jDO@Al~43XPb$X%JbkBBf}o?>^{YxqOd+bgooa{k zJymf!$sA6tAGmf$Y8FiUji!#x z2%BFCZ9@~N*;A(q#RhgGn%HA%da179Ob*sNRTwljMn*<x12%RO zPO-lh}?Z=bhQucF$+g ziWr1du_BRZW;4gTH(48vATBwOR%bcwajZp%DhBi(f4I%%@bh&$i~v{kTH)exV;wzq zY@v}O5Rli^eYk_KC3(Hf;<6T(E@{!VsWDuU5866r2eVlH78#INUZQ3Z&=g<&y~)gv z%*ipuT$btbpOzjo|5~EeExU8zr&I9Q?F$vXNPNU8!PyH`pbMTQ`-E49w(7w3DBQr6vv`;#q_^W>2 zhdiYN!d}D+`)zEx*z7*&BaqvUKjiT=tr%yrixz43+>6TOQzA@Ya(VdS6L6!@f=PXx zVcLEQ81WfOc)_~EY9@8F?K!3lFi7L@05bF7fQ$!ib+FBXsp(i;q^dkza4k$3^T$Fn z2#=!(TAUf6Uy-oLwaMUzHXEeA0f=XA3TU&KxKMOk?(+(>^8HmFKs3+yWGy>veU698*XHLi{- z5*zn}1Svqw0uW(yhT6Bb2>FH)}Zfr1d3kw}#2g351ZClbcqWBzpcZ++T zG_2tIT{)igfkin?j2!*LrWs(LlTJO|Dq3bz+)^&|VQ)^xT`qU72~pUT3l$Ai@*Zje z4SR&hPn5b^uy>>T>s?i}19STQd{*^9jX#d6NL0ob$uJPQT1F0ms-;45*oUYe4&ayF zi$|qgk`C6{6k71)X&b~M(l=oAH;R1iGQ2RCs0vDsfGj}GBEJb!y2Nej8Bo7aGBut% zw)WWATm@j;l8xLhvZr@o%VqXl!D5ZhJ*lvLK?+)?z<9^s-2HpIr;l_?-Uc_V+-DD> z_2oOFVe2M~5L5{AfuR2wSm&sT5tD>3u@$Y5SDnF-+ia78AonJ`Rn*i4xg1xtJ?-^TX#*Qvb`00V+X4*w+>w=a#nG?(O1ltMfqX*XCZM@EL2hsxE`lVYYKV)adbJREVjViCFF#l;APq6l_lfCW z?lJYV9{TpD-@0WoI#PP~EHjR>rih8Ivv}6zs-mTJ5W45_`Z>eqb2lLMW+@Vvkyn9Q(;vKzCgZ`{l-DOn1fUv8=v+S!1QE)p%UXjzUY~B+O~2$ zAIsqK3Rx9q@$I&5;h@2uR2~~)&ydgfxqX~JkUgQ7z84cGQf3?-hyDm0kDUXvj*sOy zBFH|Vr;&hWbWK9#2YTZ_Aak9YGSeJp5o+QLexMzYda3VNE~bo(L6EU*Dx$s)at?t~ zpgu#O$mz+dsi|4&_5Rz?;fLs{K~RO}=H^LwNU7}*`9ATDVnn(Z%Dl%%b&hdS>Dm-W)Wwyj~k^(bQ>0@B4T@7+cLUWd!Px%dC> zZZ})fF!zJL|6TmaBvR~g{Nn(rCyc!&W4BfjRb1$}HD7ij{j&Dwf51ThKHmTOb!(*j zbDQQLGdH!|h7vz?*v(|4Mol0@85DQ{*@UfstRH^&;knVk3)0-@iL$y2o`jeYN<0moA%Ws4_n z?ChP4s#SfH56R0yCq4G835+TI%edDlyp(y?#KdIl%JG|F611TzC2qU+;7c~TgZii^ ztXZ@6_myK;Dzjyv-tXto;F{5Qqp~XB1Xmp0xqSSEH>H!m_TDgxMrCe1jbdH>d&W(A Om(ljUUuPTGeg9vl`Kp8f diff --git a/doc/_static/interactive.PNG b/doc/_static/interactive2.png similarity index 100% rename from doc/_static/interactive.PNG rename to doc/_static/interactive2.png diff --git a/doc/_static/intersec_cyl.PNG b/doc/_static/intersec_cyl.png similarity index 100% rename from doc/_static/intersec_cyl.PNG rename to doc/_static/intersec_cyl.png diff --git a/doc/_static/irregular_cylindrical.png b/doc/_static/irregular_cylindrical.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a3d95a88514205bb47a081eca72da9255f4f15 GIT binary patch literal 6206 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 literal 0 HcmV?d00001 diff --git a/doc/_static/join.png b/doc/_static/join.png index eeb4ba16de8e937075408fb8129edcdcb2720e41..8b47ddb6bb01b5ee507c7c7c4f644207f6cfc9ec 100644 GIT binary patch literal 5934 zcmds5`9IX(_g9iBJ8yeKXtPa`B{L+lB%!h|L-uueXU2>n`v?iyWiN#q#@OjKqLF>y z8GF`Yj4Y*4zVrEf|BCPThx<79o_inn+in1Mi`=|z(T#!wigYlSlPb3U;G4 z?*>c@>wmqsMVZ3oxzS9Y?o6IqKkdj`$c6)lL;jyDTG07~?Ss$Jp*-jo0Y=woI2jWx zK?|>X&WMt*2u>xIdjou108Wl0!89>&U4%=ATCxca`rnxc`-t}inV{7MG0D!1z^iUV_B zS6C%pCUeGW^(w~@nIm6gk-_sUWN!2wrd8(pcp|ge40`i*6+sIJCcZ@-%oI2{u)&2P zWKOFz)zyB*thld}ERL+bPl!JPL9hi5CweJEz?|rlARy|=$;*Gf+Hrw^)v4DGtAaZA z+)e~>9K2PJYs31vzVK}a)?MQdDbd`$le-&jzyUI_q6m z%KC9FYV<(eQhSfXE+9F=zf8>x-DkB0S2QU!fbN|rdBR8h3V$b#4W_i61p#MuFmFfR zDGNo1bEDG@!|qG($OuQb&_Tfcwzk~ql)R=VmdW~Btb&e~dAv#MMeGHBe5UWBI`KDF zg$5_Vj+U9j2tsSU7yd=#p39Bpo=t1t>yN&+gMgx)8kh3B8G+IqC!|G>o4!HTd%m>m z74Eyf!8kbFnCtqQcXAhZ-DU4ES;?3HMPfNZN^-79R)@!P-IcT%g{@aiI3^8K!BS| znc{vquFBmB|_?0jPw0DesJ^?#T&&S;BHr=u?0`!khlE#1Z@}Vf}|oznn)ow$gn(hjAL{| zYT)Zk(wwv8YUGW$Gk6d{VOY1&XFfIw+<;o^-tr3CQBn}}qR0y7Va}{9@}Lp%^xX6I zR{`!sx?kpf5>26_lUb4*&5;Ez?i^z+xNWgHrL{1rpsz3~KqhGLDAex@I}^_`&#NAM|3TMA}cie~fHuj}xxPV+wx!bmwUvwOUp2s1i$ zo?~tfb#N$p3vlWJ5_r)1MHT7$&J|i66=HQp%4=s=9@lJjrUh!JqVHl#VoZYPnaOep z;kWF`RGJgUxu3c-avwqcHI)3bUh~Y{;=1or*aGJ#vy_1eI zbkBv6kmad);AAVx(jKccx!|eXXbfY{s_~%f{({w(S6rqls&t7vg6M6ovFUPIT|8>? zbi&KK=f~Ssq<7@w8^^mKh%iMMnkS^5Ud$v)VoScHAw%Yr6}!8kJn&^G=X6?dLD?Eo z^+?X=xtkCE?EwoYq@au+^=!QjPO?6InHvo@z!vxnT5S#ALC9{p7#7;hfE_1PT&Gh0 z-kxe$N-w(5k*F4*?s&wA$Kq!_Z)x?$7NkX?w5LkmrG;w3qy*jg^%3>FL0q=cLg$e0ET0 z>ee8>S6;Zgmw4i^b5~*D*Ko?R;pb%!!*vFho>0{i2A?Ra@is zKQWmqf8Wh`3p!4a#!gM4%*#`2o9En47OBc5(~-lgh|_(O&l}4p($@OsQ@|l@$J$8J z+QNE<&;H+5o~`*p`B=;C7&jWdlxE|a!gy7(1tOa)k9sm86>_pTyis7n%*YFs)#2dz zK7M);l;Y-)o3+UwPv7biJI9;+vFP^g#}z6#xS{%(-FmC1bN}(rxew&X@h&g4n}f*Y zkNKRM#uH+K`uQdbH@YwDvzZ*dQoJpQmHano|8#wX% z1v_MvlGL6_t8L|h?xeZbl9z9W+NRpFovVJn`Tn05wNK}H4VMu~h$(NEPitvhd&9&s zs#J5P1ca)yZ2jC_n4Wh$97wu6OWTyz(??H!UTT{Rep7`vbkbTo>ws$SD$kA=#n=9X zLoIIZ`U>LU@{gT-N6UJIkc7cX8)*_s&J2;@AnE6<(#DuXkAjCz<3NWg>f&b6k(nTei(+8@7ut*3bD z^-9uyD$GVeCPoxPqO$^}u3zJWqsvrE(?yz4y#b*|^*J`5D8ubW`KJF0;bzA(R45NB zINd51Zci8K#3wcmQ3sIBJopN$w3di?IZ@duzaf-V@XvCXI@uS7KRQ>U{^alYl#g1f z7?K{~Cgs<)F|5$q{KmAsy~uq8N-2rannY+dBZ6j%R`ORGBTKqXZNT`1MAFpR)kNu~ zIrdH4qzIy{?EV%v&sg{RuQ6F2c8AzceXtj#F-y7b>G#f$9g2zZU5?!7_wPt&^ra7X zs=0_)$daFaN{+uapgCM}nrLk3zb&yV(xDC<_mb3j;&PxRxpT_XLt-eFVEQmgeWe$$ zR*_6M?Ax$|svH{I=hmU4F>IPLKyTH9Ji~3uh}{E6RubX?f4w}a5BS=En4U%grSCfW5io2r&)X}ao0mMi?nf|U+j zTfQSof!ltfrE*}RwV}!qlxP=!Ogtq6T+(&eQO^67?HUY>#pC)Po`ZV{)by8~yQ1+r z*-}jgxc7JLNLaKwMP*~dI59z}VLvmlu8{2$K283on|YN}bINoJuMF^{+Y4go@R-2) zVLjcvYLGAUy?4b7bm}F)#h~UX*y+)iL^f`UhtcuSfZ}9kAXjGnBmaVcGtOv}ha9RC zp`ZU8;@Ks4Q%%`Srkaf#%_O%!>P~+6XDcV?z1^weM&k@VgueZo05`2om#}i2_rL$E|CyxNTC-6i-O-w)^7 zr<=X`d7GQe{VN%Pf2I0P&A;GxQu4%;J<0~Ci1$NE&nGpWif|cbHE%+jZ$BRbAW&V>)rmnmSx0U`H=1nKGBf3 zw+4_wy^Z_H2NU(_6>(~q24`r@?>)QOgC9Swu_uo@0TFJr%*rmL)Fqa)%$$1F-gkOA zI#GB1pfj~ghi`M!rpBm`&Us?}e55tLv!r6;IN5zJ`xfj$1jnFzN&5Q}-+hN)4UL}- z!`@XipU+$0?yR2q+&E~N9g_a#czft~L2sY+Z_;;YM{-BBQ7Hq6hJ7|N>oiZ>c{>@x zgFfY-V0mx!oBYAd)OBC$5iC6{fTk_rL@($OUlRwi&b~If)8`wMKcSv4W=|u%k~`UF zkd6Q48(Hpxav`_xAEIzW{E-kL4Y-=qc)maFTY+R44>mOY2-p#quSFNk3!tju{zVgq zWpxO|T%YkX+q|cZl-326Cy3MxEIQ}S0L04aBoBLucMk%k7GoaomyH=P--g@eK#%EzPUjUWv5r*`fI@q zo#9#YNdXgfb)Z60A}@$8h8@YEl@3695+4^k=2RNwgo3Z}pcN!TXa4X#ms+-2tPtG6 zO}{(3*cxN2Kc}>6H{>jMAI~h9#7Ke5@?Dd`@qOIr&iw1TQil5DU~XtKiM|2oY(wC=ucpSGYe0Newf{$w77tArFs6J zZt;i!?=G(gg75qE=H$W-a*G@IHh^(%w860^J-gT&mCTO`vMX_1SF|-5wib5@%&dEX zrj`Z!y|OMA^s8$&88~L*#u{CuJ(gd|`z&%EA({vgRi)}&S9+jq;C}o!q>-Fc$rkps zguNp+B0h~&bZYtx84~qq?)?LypL-Pq4h>7|B5JUxQE&8>JmGmW0ssOx#EJnA>s%7T zG@iXRu+=0(xQ?pDR5wKOV22}8IAb-7_S{88$;bmRo*NUNwcL%i}?R;LqpzJ5Hn>k$EI%!6H*VDPqyDBMeQ$ zbjEyrc1|^1SbEcbtMNUs!EQSBnv_$%8<|ZYY`4wMe=d2~*f|pLY7!G*Vp17wqDv~B zUfTc8t56j&TuQrdAWi?4QBe%y=y+r~8)KWU3YCLWGbUwBPS3+P9iA>G!gXkDH{!n$ z7Khx<$&8V=fsuvT*JoT7vgPj4G@rUO|_W~ zKAH~kV7+f-omr3XA4vg=t68pKamLz-9$k-T%%h3ZiEewq*Q8i)7FMG&TMeK2t21B% zoLA$V8fP2)G6*oz^$X3sr3mboREMQKzL(+AvJnqx8h2@&n+l2WSTm3_4M%smSFKyYz!*$&+vTAo;@o zPFV(drzWSe7s+g6gzrIXB8hli)ST`!i~FrpdihGz;kpGN;010KuH(kih=<6Xm%=Lvu!@j98nK|Nv##66b+qZzwTu%}|WsZt{$V{A=> ztR5_m6Dfr$GLp?%_A$&-G!eehe2#9I>EUl+ISUnu=0R`8On<*QV-6I-!j~Y^PsERIIuJ z^^AN`mABPU7Y1Uwg7~g=M-2y`j)ZP!8N}rCp!=k@nK;OFP$%pOzaxg5ie1zE)9m2j z?8{bq))8}|8mkHe0cjY9`4$HIpYnMo;KAvLQR*fY?Qu3q&<=Iy-pJx+Po)dxUKSXF zlIdCZm%-j`gGyvNQK*c`4mX=D?X3Xa9%Lrd7xts7+x%E28Fro>{-pU;tj*gGMEkK$ zvN}$%xX%5NX{}J?#@@O_CJ5rOnB>K6MNo1~lq3zxt909NdGQGd_>Ak9S1g>>14LinUrASu&Rk4vSNZ?q%ol)h|Gg5|2-M(|9~R;gb8@gdun`<^o3FJ OW-`z<)*)y=iTod1{gCPa literal 14668 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 G!~P#+Rj+CQ diff --git a/doc/_static/make_cylinder.png b/doc/_static/make_cylinder.png new file mode 100644 index 0000000000000000000000000000000000000000..3073b97dd85c7473d29ee5fa97411dfd65d423dd GIT binary patch literal 2023 zcmeHI`BPI@7>&gNq)^<7fcl_N7pw>oQI@3&nPysNJwDVGC&Y`EQ(7|P#z2e zD!7z}EkUDEAQTK(5F;u}kf2BjMik?Vm>>xdVqzct7dq3QoVj=I-1B{N=H7F^bH8&z z0YozsYZD9xW9IjZPY4FHtR9_?#^0cbeVtnhx)`MG^&=S@8;?l?U!hwohHn@nlul!0 z98INSVw34fRL3+*DwUd?7Ds0&3_9@`j1lDL^D`;)%Jg_Ayfz*4Pqu;ZyUd?`0(_D z7FYeM)!DP>ZCM8G-N${;>3?%E(O2FtF2}U&SD)CO&;r3j;;`XUJLDhWqFt+&>89^h%mr6$Ib_LfoSz3x2&*{4 zhiGU_d?3N5j}5r$cIxXJFIwO$gFwSx8Edzg;<7P9(*Fz}kMhZtcJpr26nl=)5OP(~ z;%pK^z+;8Vlx<>4crE}5t#WVFLA!>^$l0?^FqH&1n^I+cEAdloK$rSX`Ch-E(Jy4N z4NPoY`t#;`%DDsi9b{0YZ-_XK^N4(N=HmvuV3&udMmvd!(Qy}1-a`6_tc=PHb7d32 z7rmx_Q$R_0lpKpO7aEztQ8UVOYL2_PBG#gO&nG4uhVZ;c6>a1F z1V^=Tq^+1$>{=j6=^_R;0Auz!s(b`1AAT}sO`vo5Qu_jgmz3MlNBl-SdHUeLX@^K~ zzp>5LAh0+wN#+k)cjh?f1aPpN#CQ7>mQk9 z^f=M?SVOZ%G()G6+Vz8jReYL0&m*VhL+Hg0U5Ccvrx@PrjK{5wPv_mZ=jK)b)%avK4LNbnj{@YpqEX5@Bihy1;PvST6evgn1&vqx%>I`>MdDM zL&1X%TKzskp4Cd<2B3ayYYr0t>!BO9vpuo0;6jAQP49}8iH@VS-`3WLLMR=NDs@p= zqCPB6+JPr5*{qU=CSlidh`Ho2l%VH(eO7$U<a`f9+aN ZzBpj{n6(AvtI<}C@$(Jv;qHw(`45Fb)p!5^ literal 0 HcmV?d00001 diff --git a/doc/_static/make_cylinders.png b/doc/_static/make_cylinders.png new file mode 100644 index 0000000000000000000000000000000000000000..4227b7df22b5cbe05428bce7a1960a8592469896 GIT binary patch literal 2783 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 literal 0 HcmV?d00001 diff --git a/doc/_static/make_pipe.png b/doc/_static/make_pipe.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e9ad784966cf146d33c13b20e7d0dd58c04841 GIT binary patch literal 1704 zcmeAS@N?(olHy`uVBq!ia0y~yV4MNOnjB0(5ykV1F99j$VkgfK4i1jn5B(nixsoNW z5hcO-X(i=}MX3zwdHK1iy2Z&wsi}Fz8TlpenfKcsFn{&aNy-V2{cIYZHe`?`5A#9}Jf1<%=lru14uxGb7zr&@& z>i+(AKVNpApEj38P4V&EIp1DST7RcOs>s{v*wt-8t6$sfUsP!9bgcE+yX&gqAtv`a zClp?L_q+5WPth?`PRaFeoDao4ZvZi?udm;(DK%Yq)55p)ht36f$Eq@JZU82R&uR9>KPx}i%vyHX{C~th z+uUWDzn(m3o~ifi!^z;d*1%8{QPH0lK9Wm&yS{`?Vh>r9b2)3)3Ky2J-LFL z9N(Vw{`-4+y^bwYwn9qI{pRMwOWkiw585p4WVRxG_T$L;{|_E~2oycMy6)h<%J+wV zrd`-n$Z>PWv%H%ozVfnr>OXz_w%yM1N5a1UvGXo%a*Wt7am(|xo$U_u@2%%@C3Cuk zC3joQI=H5#Cv(;^pn;*!-h4c5KV7adR=_AOGV*jtj*OGpqI$Xi1sAu6T{aSx?g9oB zSDtZbj)~K;pSyH}H!^ZcifhT84axCwIwtA_6iDQh46oj1`7ihL^-IAq5ASr{{r~Cq zT>e8$Ip2z7)1$t9w9|cU-OcNFV#mV2FK?}{u8&H|b2?V`W?A-gv)A9x-Y<^n7EnwU z+x~u5vDkI>l*2ny*4EoiFY(>5!&WhwQ9ZVL=NE}JZC|;=PQN>9(bBW}?)-N-e=TK? z-%x_(xm!9D4LKz@FgdY3;go!x@;ynz$!wbIwO@&OU=i*Oyr;{6j+~Lawm$kzT!9l( zb`3irbTb2%i;opOe{u1Wa)eUy@0J{k-xoHm-QaReQ&IZj*XV8MZ*LI)==Z;&B`2V~ zPj2nA3^pgTEnl~uDFlXt*)G$qK1bVBQ`S5&3qIikO!#<;FUst=(9ABy zlsyZJW>@ZVS(XG0ww*${vqO6Rb4otH{eRj@iRJI~Y#DyPK6i2Pt<8 literal 0 HcmV?d00001 diff --git a/doc/_static/make_pipes.png b/doc/_static/make_pipes.png new file mode 100644 index 0000000000000000000000000000000000000000..32562882780dd04b4d36610fb088cefcd03c9f73 GIT binary patch literal 3106 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 literal 0 HcmV?d00001 diff --git a/doc/_static/make_point_symmetry.png b/doc/_static/make_point_symmetry.png new file mode 100644 index 0000000000000000000000000000000000000000..23a05648f6bd9a6ce9451edb8b592e6d58815597 GIT binary patch literal 7052 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 v^So?np77bc5u18B-6d{n5Ds-^OP_0%)XVB@G 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 Vp$*4Y)c+t2UvC7g#_LS>e*o)|QD6W7 literal 0 HcmV?d00001 diff --git a/doc/_static/make_sym_plane.png b/doc/_static/make_sym_plane.png new file mode 100644 index 0000000000000000000000000000000000000000..58b8994234ebc5edb2f09c360db9540d8bae9dc1 GIT binary patch literal 3676 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 X$ih`eebSQjhX5ygSGyXUbJzb1JOqD{ literal 0 HcmV?d00001 diff --git a/doc/_static/make_sym_point.png b/doc/_static/make_sym_point.png new file mode 100644 index 0000000000000000000000000000000000000000..494de950bd6a93bdfa7eecce890b4f3d70afcce3 GIT binary patch literal 3294 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 LmrITFsjL415K4Ck literal 0 HcmV?d00001 diff --git a/doc/_static/make_translation.png b/doc/_static/make_translation.png new file mode 100644 index 0000000000000000000000000000000000000000..bc4c40eecbad0b809b491395f1d17a757312906b GIT binary patch literal 2298 zcmd^BeKb^Q7$2Y6FxXYI6N9Umzahr*T)bQ zHY_y?*C<~V8j};L9EPD|rpYC#5Xw)@ZianF69=e_UqocH&8p5Jp5_wRL5 zU%qNN3WZX4aklqBq2xM{Cr(8k@$@8jr6Vr|z}DrUii%3lz&;UTVnZFgLJv?Wp$uOd z8RZ{L4I*y^{AgryFc3fueWg%mjY6rUxY+ML7{(b9)&;L%tcn?k-S3g7?HyG7*I|48 z;$9`~UL|7LT0O?@2J%(zF{Oe$*IU=tYC(C5H_vLx8YV1&zD(0PiFDVqY0aswqD&27 zWUk5SJJiKtHw~2W%5Ej+R@^REx||1Bm6b+}xd6*wC1Lb8@KBq->egvLshp2X^xV6q z;5A_rgYWU~3~E2;v~GevPxnU76{zTqxG|Unl8rputiHj`u!&``^Et>yKwin^-%A*Q zE#vsfB#^4r>jGqE!{g*QOXAw14r@hac&NDC&Ow99!!RrZXx}T2(CD+asecHcw}dP1%w2$cxtTHSZT=-C{A9g zlRcBM39^SE>ZfRlGB-i=u*22-IM*`CDtilPjOiBMVRu#pW)(_L4pGBvxSBk#34dKC%UDu0lE+d8KjUC}*I` zo&HO%II4--egtPFZ^|aFtV|HkO?7UYPtrd#;SdGs z2EArr54r_)YzdP_rPVtl-@a{qUQpy?`SBeWbsYn=)hB#ConWTPY^B08(7p<+lxMBEMkI+LGcIofLHxiHNF`sSa((;LpT9hU!X0l|$?+@CPnC4MQCwqCkEkqQ?ePuT(S$|Z`3zs?X`d4NO@%Z_3P9v<6Bs) z97E!Bpkn2~jt&lGs~Q zH>T=Dn?9`LT3YsO<6E*s5QD-s!jhLIBzb}kIJlk~o0+8)1Z0lm52kmH+NwxN$xGgO zkjQ$TL1t~+l9D{JE=wtGd%Uo4{@v+ptYwS>7cJt35_M@5jrQZsx6C}WZ@1=r%rJ^cwCrIIPiPG4`sK)AZsT<8r)Rlb&%?!v-6a>#rTp@inQ%>E zx5&j?8Tq=B@8pt`!P+p<+4>9dJvnQQev>Vgxg7>?sNhM-9felP_B8C_uo=>i`FBaH{#xpe;tF>(mb+BSO3}zYCZWkt)+?N0E zL(Dk1NgKW9Plv9099^jyN5~(o=?o!4s`qb(0C$y??kyj&FEComUgRA8ob+8|owq6(txlWY8TbnVBRaz)x zrPgOU&OKfVkYYP4rNf&uXv=cC#0CDd;+s97}xdnD^n`pW}iR-O1yVxy#@cpyZ1TR7J{KZ|>HY>8^&-c19E7i8YJ z<%EZy3T)#@>r?r`2v4Yq7q+H8$5At~lvOj;)XdE0{{48z+P>rC<6C<7%gcE*zfk2Z zhH+U-Wa(Fpxim~LQj%3#w#DHOP(iz5LjsfrjO3(Ck+j`Zil^&|nEl1pdUC0P-Q2wV{XbfZz1u=@$HD0> zhV8=r^4)11b@%>T=B+Q8C4ECfH1nHCrV@|qn|(Dw?iP;xX%yW!+Fmb~L^ZxN&97g- zvLyHV%3j<*l1rM8$;Bve`P&dyI99!5$YV31yxhLl%)5!b%`!QpBb47KNUp#M$!=@* zwW-ocBI`3;98Gj%WxNf`5AUXLMS=qda22YAtI*!P=ZX!&lneLRrufPx&LjW3SLd-y zR`B6fRl8Qh#KMmsKa{>ob0oXe-FaEAC4yES^GogfVYhf>StUStKDn$=1(Z@ZRFDNn z8rT&nI5esT%R2{e?^H-qaliZiosBc}Q2Z$5L}~0Ayo+=Wyo+oef4Y`Uwj&}TCBW+6 z(`kUhq133EDT>P7R?5#Y67Ko*iL$)hu)?GR$BCjE=FMGFe0Ck>Ha)!H4L2&K6Ms+; zmqu6wHmFe%x1S6@DRL40G4QfHu5uNY+h#)g9H(4RAwznJi#C5+8Tl|Aysd0Fl&;eK zA3mu4vPg*Yj1Z(G4Xc8Ep`^d}$q9KN7^hThXyfD*eRLF@l$>m(LGEDY2!Fg+r&Ws0 z`u>+x@v++kGHEL_AXJLY%h#7NXD5>I7UZx3U57tj8W}tI`JJ~I+xt~J3@ad-YnSGb zb=xX9-Rfk2?AH127%p=1u*Ygen`gI<*VjezbOnwj;lwq;V_4^-I7n&6T7GPR(i41bF(Pt!^*>Tdc4w~uR3C1Rl5U~?bA7?tf92D%>S1NT z4P)c+@p0VxRErO96de=|X}psJE4+aiHFftpDIM2|qQRb1Q>59I`~VK!oE<+4ft|`av90O_S9o=O_CPkPx*u@S+44&os&O&I^yhG$WvSn2eWax<31ayB5eUB@78hp z<=f<8T+(>a?`jHMrqZzPm+eZfL_sMZ9Mpl$_weD4;d{+7KWS-cBntJuel7BRqz2>N z3KQ5d-@aMHPHtz4dNvi64sdzUW44 zqPgv%Wn^me`{(z1A`=9HU%!6+*;(ohf~wbx>A@`kR6KCsWT*Tu?pl%iM4{tLT%KuN zf}K+|5~Ei1#La3N(X(7E+W%XL@pEo^pM96LSWL@zmMFzSeXg8A2^MNNBCsJ1oOx*n zhzakM^+sT2fq59}u3?#x>kItfK(uf~9LAbOZF0_)RZqDck6rPN2(aSHw1ZoxN+A-A zFfK;(k{27sLZgH89X(EUFtb8tXkDrF0y3L~1?K?~pZ zH^D^BrUc06>E0?cA`c_d!9p$mR)3|dl%$gykX>;fiOiD%x;R`9ZQb?$r7f1I&bCK8 z@R~Va@iV*a!_HE+Qfwpc4SfsVzkdCi4d58PcfP-71EqI}APW?iz; zFBU52{(c}LqE`Pkk0yN$f`Rl2aw<3FW9hdQUk*t;er;`J#TS<4)=3j3X+M+=Rss4h zXqo<~#dy*7cU!Gl{x)zzq1_Nct3Ds*uZ9^^wx1q$tcCvVx$x=ygNF~HIbw;hasAi8&1Vj*ss?jIh_I#ZoufwlinSP5x)$_H z)4O-)fBaC%+#w6QsS<;`nQ~hA9mVG*RQC%260Xwm7{UKm{Q}#jwJErRu9hifIC+H3 zqr|hc=WN+}y~K3VlnNC@&_y$Ns;zbfPYSpOA&GaCo+{3b@|@xcr#E%6^8QSWs)}&v z7*+y$c7oyYLHj8q9CcA$97!h`Va@f4FK!@{#mXvIe|TT}vLaP9BA8z$^GYdGx75Hm zy}MhP?$dSkpqbJs_t5Uvs?|W(Y5aqhxfg=8xx7l$R&lc3dHkqk!s@ z*-NyxyIqV=jGvSJYWw^UxyJdQRN~Z>#p&?Qx1zta0f&b5ckcv8b#ud6bZ@xHpGE*X zP`+;$1m+XEwm&i9DkyQiJGNn5{SwWUwav|+U<*vQJ@UCEGSbLThiM54BVejK6->}H zl?vaDzPh~`To4`}{;gCnM4F^?oX!?W#;0i;9Go{gYRr~+IyySqXJ<|rO#o^Ds^AXZ zs+4X$Xt|iPBO@bYw-r)5&M4sjWHy1YYx1iU>nc~_Nc}5YXv->@hc;I>4LFGx?GJKurjo)U307jpFK}p|HlPy{q00+D>?<0%3mx?+W7fUJEfGk84`-z?Bjs+p-mB5P%y)0#=vR;p^ss_q-hPP;haR%CTSM@OD8dvNhjZ14QzLLA zytBNsxVOyby_<{Rx_AI_{f|3DEkntLGeGuqw_IXwr8`J6iyG<{H1E1Q#WV7E-Mu)V zeFD^s>c+iAO9UHn=^^J?XCLd6o_jL=mU#yWU3fkC-aigvE}|}-b16kbjGYD`yAmVW z%~;y*B{l8=<|K+4|KuVUwpf+0y1J{b6N|I6*4(<`rF5s9DRz`Kt@X}!&5>o+f@*9>H3(JLHy?O;NdDGFM zS9j+;rds1;(CB@f@P>tT&KrsmD|(Z}{eic%`TP?2h6y*>JenqR5t=8Q7cW8q1q9@C zcli=6>Kq*580V0g+e)S7!uRjrch3IcR1o~ZTFg{~+lYX+(5wG(ZKk`;@fXro(lMRC z`_5vP#zr`RCN^O&Pd7SQ{x}n0~4`fV2K z)9jp_lI%3h+dZ2H9VZ95xw)P@>r*bG3v;nwy06Wi_DmF0%D)uk9T*WQA-~j>_!q56 zOX{D$lNr!qSoWr=sSk(a&eK&NsANPSl&A}GKDy#Df=>sTUK$BQi}?_csd`@NF?7Av zW`Lx>XIxDTh#3Tl?nW4Fekux;q0oyBo~4?#v+n#E1HiG~&3r6)pw&t^eeSCV;ew?I z7kpg-t%A`id#faTeu&ex?#|6kZ|F~&f$dDbKH*BHtatbsJ4V$z7Rf7$zZc0bk+i%k zRS5nb-;NBLNj{_9QhDL_^AbZLwW1WjkxYc=q*z=Nw$v6~vS!1=@f;{6T8*3`mb7wJ z6S{a zE#!8S5xdM@f0z8^yb>`xok?^O#}R9!7($ktu?wE3oc|yE&G#!w(jye&68NR90BCiB zjFgj2KG9QCQ#~}rR7^BvyJ)QCd(?A5%9HMsjgud3JJa1;y5D9_a?{fGZSzvw7xrg@ zcPyY4mW_&(ZT(SAC9)(te)!IV;SL{VL|A6PpPAmEQP+>evhUClw%@Y0$+VNX$UWJk zah@^rNK!>YG2JUY`BU&)@3>FiMvP@+0c{mmLLJtm6td@0%}z?p&W`-Cr6VnK_0xi% ziHQlEN0un@wFL{x=1NJ9Wac7;k3{aoc=~)IH>J)rimj+sg;;%R_2hP4@_5JZt;^a= zkvtN3nH(KB0E)CvwfXy&wtzOJ_Puak6v@1xlKCe=n_uqaDD(vXbfM#2y}Yf2flzwf zWNScLNXPK>G)Ml@l_XPyY>Jx_FJsqBenI~~!v{Ta zb#-_523FLuCvy@7kT>LL)e6*ukM^3&Z%=M#6y4 z#Im$KEpC%ztQTnox+UpJi3J3N*q3rR$Nf=`D3196jtqyCKKpOu;4=Zc}(*DpL$arAfMLvw9nplz8yZfBoQ8YAxTI0e9(~nm&32} zYe<@;`S$?~-C`ddYn`*B@CQJvn&{I7PlWoZ41;n7en|=w;~DN;I)41w2TqTZYnOpG ze(QC0`b}k?6l({ENNAn^nC1Jq^Q4NdjiDwFFSt_5AanDw3&$3vJl3)ZI zj%)fx*M?KP=WmrK`g|=xR}*bxQyj9O`7fQio;M`ZJO}~-Ps+RcHA!{3f7;g#$LVD1 z!=(AoYY(7Pi2$W=Qb;Ay_K9)pj%Qy6scppBdO{jRA`!HKF$e?DB4ORK&Z`<5&$H_p zUAm6WgyMfaVs3}Ea8^}**rF>SB3Aum{Wt0$Ka!8W%dkv^mXy#&*n+o|HH!^_nQ!mx z6kMLe9mxF?dXinTK`?}k2*_E5hpvE8b=Sy~m0TQks^(X1(~76(tYly(vpp@TX$ILl zXDKBE#`^kt09n;80Z8_t$?yUVzHi^Z&*8eGzisDkbH?u{x2u_oZ4v9y1gk9u5;s?- z^)G1fr+L-=!N$DPNSZVrL^2Q6 z(={4jo^F+6Vjhe=T%YWe(y4D~7@wT{(HVZ`Pv8yLiTtcwTSor8o5_WwFUX@e7oS+s z$Kgm+9*L$ppL#aDG(Is=WEr~cOk_-|$p}^w%%{U+c}<{7a(R2AA?3%z}>hmRO?bF6_u3{ka9adR4Jg(g9{48VYwZ3eXGIsrniA%e-w!lKyZRZoYgiou2itSi$8yU2OFtbVOq(4RYI&U9Hcl(^VS zu)0sTvOanXl%x2E4x?(PSVAMlW6?@Fplkaczh}W4p9HvP5SjsAWtM2xj)N2;KUPwz zFQ_k^z6+}>a(En5Vh;iUdvEMf3+&&J4!w?1q%G52=A7hVZ+vuSS?7^KE%bE$oIwnz zLpChbmWT}YtoaLxTNO1SmKbS|e=#@HN~tysg1{gpGt2K zi^SVY^uft%uDtbX6c$7Dug}!@ICr|%<}0hCd*9KgQSQ@YetGs1gm*MWU{;$y3Q^_* zB`D?Ur;p+`5KP!;rO0R2zM{P^h4In?JPdL&l%&Ss18F!Epc$jtl7Y}8Lq?dnJ`5Eax;PCtn3{8T3gGDxA-8IfD{(Lsj_&qtda@d!uRhO!?O43 zBUIS?w>{l~dr?N&Jndgt_SM}$Jz9*|kTSTP1e+f45J6M?ka&U6bG=eJ<0Gy)ReGv% zqv+bTzTN&~*M*&>K5;G4`OoUl*NVFYD9+$NBR)AhMPKho zZejGFtiH>E(!j~xg_%(@5=9bVg<=d6kET^G%fc)U!dnjdOoY<>#k&{#J zAhj!QU(KGr1Q4^ob{albZR^>59V?b+jV2hSiG56Nw)KsFAaE8_;&{u$*k2wEPF-S-_ zE-(MG;#<;UCqm>wmt@kcj0`ybjd1gcM)X6ofFf1mQq$3q>|nN(&-rMzq5+PTX#1}1 zcl6=pKdCD&Crlts6Ffig5&CPO!voMtxn(W^bcHT)^P4@=mo<5*WAIkP1Q~2n=zQ5F z)$Q#=V6FIBWDhRdwcxPRU1e>wy2G5ldNa;eIOYh@FGY zwyVi1E|HzqkLQt@C9KKG-WD>)9_Vp>1+g3OVZ^F^+?to7x;ZK*?51@i^?2_sWoQ)x z4hQ=}B1^@%d*bL7b1>SZ<9}yO`Vd(9{+K?U~CLp9n=o?UcmO|nY1KZ z*S@T>stl_ESN;cAB9*w0Q7u!Iv^``X|1xOsQ5y=KnphXl8dxOVM|1zSEjAR=#`3{2 zcVUae5TIQtOWQKvJhLis92C2Y&h+`@(b(hnjyc-=3!`LVEwtUwc~xfy}bjd;u8K; z(Np4_6wc!~51CT?_&^eXiUx%nyJFr*>nOnr*f}@NQcCyXqc46pl3ox1p+$0cDW+)9 z78n`@GAUung|yQ<2xV|xq}K~DW$VuLBanoD{*_(vWt*rMt>=>`enu{!tNplxRAf(I z)&sVlOE!S|FZdnM6w%Tjmbcd?z%1oJfxVWDQz9s6S=u%2?Yd3oC6-kn|9Vbv3)gaE5`B$6sGUr?;tYY zDJ|%uQx=f>s59fPNrQv*`D5USfw(1k)qKnWm=Ew5;17iQ1?St~*X`@*Ggf5oBo4Eu zx?&mnH{FA6pdqF8=_8oNXJ$$#)^r!_YZ63{Keo=`ckH%~7Z<_Kk-v70Zt>`vS`2Q? zlRe!L3zeG7RIb2)C&mBIH6%P?@cbU)ryV>zk^#;9{&cx&V*}SMnYB}J#7r#DpP&<@ zvCPRR(B(uwSZfZ(CiHm2-{E>ZfjH6CndSmx3;$St$edWAf41E z#53))LMXH8`p!xNMvxLPe2`o+{=n$fXc_AiuXqA~UpzWULrV7N+W>h0wav|OZWCRt z@&W*WBl%newdhzRvj!COhJ-vb@?1e$m{?2IDh9GI7)OuJJEKUOvt!3I@ty{E@%EW^ zu3rdVf8iBhS@(G6vvYNb`{nn)_yr4>ehKKTK_L2hfZu2pi&2LM$>|BF$DQ%Ca;#39 z{q^sYR(3H^WNXZh#E&F{yP>EU( zRye9qjHBDLG00;T(hf@j!@>Jt6nLrUy!@!Fx6E?w6ji*)R@@(QtBhh` z)xh&Y{~ivDR5TuKyq-dy5^~*2249MGfieq82o;`AXDLWCP#NUXfw7{LO5z(FhR{3d zkv!YJm52BA_U?iXW4U~iJaDl6QSGZkeTYZ=g)#TfyU!Kp$Ihy4lMgeeOX%_bKBpGY z1T;Ep#ha&JVlRke%&!`8-|_3!b3s$B9xSH;34-egO7WCCbFbHXCs_xmvr%34zuD7M zsG?l5-}PH{6v=v?UpL$Nd=fuY($KdPGXH3@gK)@%96#K6vaDh%$VdDY&D=;W=FW`IkcR zO>U3mlH-e$gU4r&hl77HBgPP z5U=)I{dxtIm_)Vty%VR%H=WxjQJ+;#xN+Z#`))IQc+|!LJ}KxK1Rg?A^TPQwZ|=>i zM+$x28MY*#yfae1 zuBZ@aO9a=a?J&h`_z6Z(BQ;{Rd5$c22#oJ}Qmif zje&oK!#f`X=&u^PyR1nxGHa@Xb#8#_Kh?PF%mf~cRxyz6Sx}8#q!DNxT2e2EdbbIn z60&)Y!NE5wQRj<_L}<99k~R4Kj7H7Ap9uz;;LJG=)J#G%ePO6Rk84fvMo{RI3&F2e zH(&(BQ{pmrAXj(C4fmkC#05M?+Y{^mc7rm2DS(X1r#Tnlt*K)195Y=Ce~VxO4hQVS zX1aq2wkgI4YKu&!b~)DalaYTVvpJb6L9Mp4XsXL#_XUuS`i@{haA#^`1obPSP3OLb6&K8-vOIe*&1%!%kn&_NxW&WT--b!@=QF=< zOd2$t4fWtxD%SnFE!TQ^Q-J zT?3mILC^mkvnm~NhE2hms5bXvmodYV`Vs|ow{iv=uQ(=^SW$7MeDvr1*GP#CN}G@k z8htXyjlEdvPryslwY=s(oCPQ|<&MUA`nzCWuFC%NUet<4GA~TLZ%BdO%oGpIZt#fW zp;-)%V7*&!dI?B4@TQsEVbF27^> zc1kx>lN+T2TH)Ag&(<8HDk#z*!R0SO3`OL1m}Iteif$?Rn2xov4rWx`5vhEzmO@PN zLHjGEO4LgUT;#Ur@Xk^^S=t}u^=zh3_-|f`io?8VzSCKs%$kg@($Y=k)1G=?XMXtN z+(bmFQoJWm@Ii6=Q89zx8h``a>KF)ONn|xDyqt0`xPSFUc{$k2&}JdpRUeF?kHb87 z$wsOUTpOvS%i1~H4XFc&L7AsF|4Q$IPs+}i{W&_e`>Xbx*AxVMd{+D`d##a=FLq61 zgmIc1G5WMij1%?OWM$)&OAT%V&G2Fun7-0M4PiiYk!Xw{a3y$jU2WPJ%q0VbTBOQi zaJQJP4T342k3JUpqWQHzPcf77%x#y3DhZZDlF(TGH<#m-q;nR&r{AA!_KS~3seDhH zwd<oT$v<0TgF`MT24pQ)*NqPsJoGC}%1mA%lYB~YF&IIRGAb=v)F6!p2KDBO3mu5z zpoIcWctd+lzjHp9WBzAdx*;f`iGxQ>0 zHOajXRYM)=QcOR-`_^EWeMwp-^yB)v-exP4B%Tv_26_j8G-G2>r8kp20IF;7fiw&c z01iw`OAA!y;$?I2j3FIRT@AU`1z-mut94NZ=^%GQakZ*rNPb`aB&Oi_ zPwC+ta|f+0vg6}!d(?d6?y+tAw@aE`QabPyY7q0y>sfcjt|b9#0yAA-1Pu^&Q@b4` z+fpo;6$n@LRPg20IfLJKoa~(B!}7@O&Yl7UftsuzcNIB|Ed%4N&z_*Gmb5W;Qj4=t zLjcyXmUZW}C1dECVO${w{58tIfgqt+G^XkDMHraAox#r|hkUF`SDQi1Ds*9kz%U@? zcw2bDdU5fBaY^$V{Z_}R@_T9WxZT}ME^@dS&`lBj{`t%oGMQ80NXZV9w<{JKDvtTd z?Jx5}{uZSELX%fIkIa_34C5eH#h+$YJa+J`&%T=DfvN$7cK~V4BdMdi(IJHa`H-6_ znsNuZ5+DPd1R%-Ru3d}0U?=*e1mX&~01nQOU7N#4Ml~9uH_r3> zO(t>?Qq5E`YTl6Tb2K#2#fyrHzLmC+BZ^tHQc0W}*KPBhF^AUtX|X;*OG5h40@fY? z>xX*Ia^OLelS~J$5>n4cAq7whcESidNg~T0Vtf})uCVb; zu01Fly$5Nq9FO)`{DD{29?I%u!lNS*e?ZtwnX9X`t?Ur=)GdYO1GWNHpx+-w5b?{5 zfD{5ki(JvK-E|{tkK)sOVJLV1{wd$!1irzO?n*&QPS7&EW!ciBu0-#+6h#?G%7Ui^iB*E9Br`++CeU<%KIX5U#AkEp@iTym z1qWoJ!2^={K-V_?QOws}%rejz=Hl5LsP`tfZ>R9Zg1VB}91g;4aHxBc+_3G+d)gqr zzEJ!6f)00I0|&GX3%JOT$)CXw8%<7ovH$!VIN8Mi={jS4kH7E{B4_8Sj&kY?=4o@4 zEqaTwOX*s0E+Ie;L1@YxI<1e?EMs1=8zj@JF(-G&NvL=L_u%B{JQ51Ksg$wMIRDub`C|0m4X;`z zxA(VAOptPN`SF6oTW{=bU(O?40^5itIK=cym5hzWbr>whHc`L?q-sm!tH1#7?d^5W zR)ZuIJOZ6JK27Go#&XCEv>{7pGY|m5Z9u2X&AKA!ZYdpYENNFzk%O6}-E^|0FWmq4 zn{?)4u;;b;=ffbX2N9`9jw&ixDOi+xx8X^(bq6zH@n;K&%Db2mPuAoMSj(X-@V>y1 zkjP4S6g_k=X44GHR{>)Y)~3lE(o^tGP!yoZmzjuHR#f1c*L{|#hQkOk_^ZAau(|ci zjOHq(GaP^#mx#oHNTr#YQGRY!0wfMN*WOJDHY}j=qr?&Wd_gl-jX~UqEEcvXCF#q! zW|4}ofAqMWK>PwZwY(g{_)3}IZwx~~+S&{@8Zg{0aQhT#Jx`8<;Uq#;6BeBZg%1#v zsFe0HQumO|=I>AFuk#%;Z1FzhAU)HPQsEfRqb|a%h`j^=P2@eFufF{lO2VgRFGhHe z+aUjBM)R){Fl#fs8j3*H(7ATA`Y<>iF6@sHq40a{c4$GWHvP#70REPWVuZ024aA)pGiFLv-? zesfo8j46N$y%2JjUmN@5Q~G5PU_ja^R2)s^D=hz6tbSi4zL>7tUSe=@kuu-uRux|F z(X|;aN=0xxfPGk2>0R-VhAfPDh64^s1B^IGZWsh($bS%e>VuYG?j|fg^n_sA2yFAV zX`_bYRhvef!6fxxs~ZDd5ZosKtRj5&9Fft?R|VcC0G9n{GxiJ~Sp8|Ezu^%d7>Y<_ zIsGKct<=jRe$#)ud2_W{mp?7Q^?0^szS%uUwjL4hDt!|yIY96Zvr8@nRS`tgEY@E5 zSeP&I&j+s)ytSbr-AUXMD!3$-5AwDun*$_;f?DPkZe~msCaaNnDDI#AE{^#zKL~G^ zvPE(nP)F0J^|@Mj|KNnv3vc2!p+w%HX0Hj@6chl^#{SJ&=@jZCWeVnAFZRJEhhC1A zvRhS#uueyh^DTh-kma-prjJ#b%)|u*#;fi9RHb=x<&;4=_(F3B zA(NcDsF))o4kunG?Unda@et|8lzb$0|nvkju$^@SBpqM!M~BLxdk5@NF}Rd z{6Vq^npuL>LU+w;r~E*;N4WlgY3)Di!IqdeqsPZ`U@ros+aP4TU;quiku;C`+ryGa z`J^fPnh<&HFB*U#u;(^6H=AU1VvdtkJLEIEe5+h28{8}CNSP|W`Ua*76WFN(wEFq^ zdC9eJWW##)mdW3=?tn70Lgn$@#p=dF=m@_9E~9zN zgG6|)UY?$`cj*Cx5QzEMniI?#9$DP2U`p4Dl$rJqf6$^+cgH~@i<~%D+1{)~U+@iR zKXA9>u9nNE@22uGs+#TU9CpPQ@^y~Bx?uVhlH~n4BPD`bs8BIsds-#rMIP~(!$3IB z5F7(9Zeq=wAX)+Klyp4U;un4!OIeS3GX|JoY?UBrsPJaG@!Zt`y=Y@YZ2dpq5rneW zXjeS9LiNkfc)g9*{_(%+HX|xLK+>sChey(g4p3FD!r0&ZXBT_zc9{IET$Ny_DH~h$ zF;nqj!VJEH*#UHa&){rBeLd7f$cTGKNov`@0QnT40@U}B#@+qsWur#wou00E8(PwD z^&jlLukCfgL|cgq=%{WJFmMs!`5`8Xy1!;%e_s~Hn_y_<=g)g6`$kBn_{{B~U^@Y5 zgaH)-q4~Qj33TTl`MWgCo66TSl>rL}Gmy}m7w|*&68~R+&=-mjsQx_q!p134B26<( zcZp?q)pB_Tty>B~L84n1^)DkYDAI~?B!jYcukMqxR2*5S7&y`v{=9*VLnm|bqF~5_ zt5sgU+?)hz{#$tmBjaLy2>LpL1Od;j;ZZfd8Vg6Tx~*;S3}?`rjhy{RIo2r0pAUiV z4YN?wi2TB*@KIo;fNw*LXGF(Q7X}f)rs|k+diW5eHVvK>NL$u|OaAGTRxTPm8C+MX z!KJdL05D0xy#E_`BZT-)MkGcM(#J|})1;yxB|-g;>*0ZZb*JLN$_S;Z0YS)M3rD<# zMx$NZ6y+95Vm=VBo#6nJq2?mDs>VcLx0-n#1M7t`5D@OL+^AtYDK?ObfSj0jgj_Vs z*n^t|;RP-2x+4+uUW|Tkd4FeT=Nb}e4Q@okbYMKBj@H-R%_Df%@$r{_pDV$-z$HNb zYIxKVkNNs`S$-#yNttM-qmlDDMsV}>n|pP_5uQUa?`K!#Yq4@Yfo)(DFIF^6Lj+&$ z|gLS~lWd8={1-8lk-2o_g(^#eMjqS_w)2pkY@kd9=EHuNV)DZUt zw?9YrTy%Fa1vi2%%H|E=K|W2G7L_#qq+0S9=Lz$zFxUm;6BuAIXv8bNi{%X~Te{_* z7R+OQb_N6X5|fQy;V`xg+p2(~b3FEUcuEh!)$X(wV<7Pj%|Gp~USHc~A zEM+-+!NfRybab>4o9bYu#5k-Wm3%7$oW~Ev-}#4>p2?V>W-_7XRv2qT=bLk!XUmoT zqMjZdws$FeV?*M))$kTjN~s(jV5h$%b@Cn{9>sp`V_b3dW`VvKF)cKe-Ih z7(ozwS3lv#9jB*gzzAEm#6==Y8;I+zDwZ3N%TqC6Buq1T{2WRnJFm<-qbI@EX3iS) zABj-9R*z1ys=K{-jFLj!@85Z`FnNWD1H%^3np}ZEx)vmb9Ss?4#}N>*gu%d#VxPRq zRd0wK|I?NK0W2m}gMYzt<9=`LD&o41uIpJh=(B^ zh8+X@61idKDSuSSxT~$13Ci;UbZ4LuB`#jXUux*DF2w{Un7lHE1?%g21=Y8_91^ch zeNQ?NR6BpYyuZ2I3ysUNU`bo^#-TNb-w%z6D2SV*#U3|_%CR|V24x5(=4y5tYrNC z>j#Td5WGFEt)7J`80;^}T8xckR35&Cyrwyi96ouc&L9Bw+~n1jDdiSwmAu^o`$l;^ zo~>gz!@%z0#zDMG!XE@}k30P@%U)bSt$S{(O#{QQ0j~kr01Y5yOC}WhIs*&>pg+74 z?1#r51wZO6HFtb;AbBw`!F##?tEmllkN#M2eM2-VXn6~D{*!@~77PJH;`FAUB)Lcw z7x|oR4xG(G{aHfo@?t04DGZPA9NlE-fp!bRE9A(~4~~E}sTFk&hiprNW`u7)5P^~g zocxOK62E5ZH^6}q+L~q@sG(KL)XQ+la&L%tn*jb>T>TW(4~ToQ&2NsElRB8em_BS$ zLLfU&HCO?i=MwoC<~gEK>WfEr8{7#d4cw1i)wF8-9Mp2yjWF-xFFb}PMAsq7yf^f) z9jgkGbw;&CM}CKFzorx0J}4FKDL1Bn_NxxuZYWGPz%%54uXjbwDWvAne*7Bdm9~ z;%ig9?K8W82WANlTDH0 zM#f}VZO@>?KSOLOp<)uPG^fL}Du2=EavDh5TZ}oCOhhjQfVFprFqfOWJ`A0@YV5j9 z0YP`Y`+1PkK>dQn7+6wJSzypQhj}1Az$(K5csr=4V3)(R*tL_{2CrtTHB^M}a2njC z*|vCscsBnQADFL+5RyH}$FL_^UyGqMb`(Ek$lAG(sD_$C5v(TuaaU2h$O>F)eOqPlq>sdz>pk zbt%fGuQAN+K%0Mt`ig2jMYk9b_*?y~6ea5anRsN#D8Q_)t2AIyXsWPTp`Afm3`CF& z2bey!6ntSN$T*j~@EXnw#4})K--ZSD3?#`x23H{%>tk{8rkso_7ItgyXeCm;)udFD~PAl-I+pmlXC%AQs1}Njf4#@B{X?;Hom1jV; z0jC8R+FH!+RZc53i+PkTaZKK zW*Hz=!l?l97s)O%b&2YC%5LQ_KkCt9AHgR&Fp~amA`E`ln$w?bJ2;i-&M9Kujj#l3ruD=nY%l- zrZ0iTu{j2jR55B;4nSTo1bcEEPl?6|0wo5Y1}KcEn@5&0=E+$9C#4wBcn=pnjvs@g zbrKWOF?6ykAJW;`x!#paM7l%}rD2YwgnDVI4{%SlX~N(E0q8+jY~32VemD_&;8EH( zK*cLTm=-S7S4ic9>Yl#@62$z^iCX%-Gcev6Wdmpo>J*hw1a1CXV`Gc*YMoLuawt_m z6b92T-%n8Ezi=Vv?H$4hRY{vvC$$aB2SaL?q@Y09T+q_sBIJ)ZllMlFL*7IC>)0Qy zV%qjSWs}nY%-kQ-T3){S<~vlfhKZxEOfGR4i2Z?+2C@#Q%-9v}gD)b~Fbn>%6B98~ za3E=|Na<|P3c(miH5OZXfbj^w7X!G+jrXVDH?pca9-wV`!MTKWW&%*Hnt}`fYI#z z!RkSx@1~-$G3+ZC;s(2t@sfK?TU{OeI-6hX>mLM)RprIix!*Y}0rs^H4V4esyb$#S ze*onQXwm4so(Jiw{N<@fxO1T&38(K)#n-oJsl4GQWVGD^mfv`vJafpJIhva35u+v$ z7WJsZz0Aw}NcrR0bH|V2*Vh0NsNHC>)J)~Lf8!gVih~>EBoIIO=S4TTPl0;~KjuSd zB-U2;7?I0hPypLMMSh*3?Rb9`er3?{;qXZ=1XN~`LtQhMH_};-hwz6q_>Pm~FLAi8 z2+e}`V5y)uYCAfHL6)s*-xsdx*kiv?H-Pv0ib^&GHe?waLaz4xMqesE6 z6=nzQ(%)mXSkqQEe|5cUn4C2NH>ks>lU0P=(!!GI#cQ>#9lyI5j)8-QS0CzmqV702 zG8ALbJ((E3_sWDqg)F9$lN%wC-0rWo!C}X{PKxj&HEzQ#=lgGyc-2NC+TK03tLND9 z^Iv_QoH%R92JXjPr&NcjS%CGM3Vbxm;eojp{*Z{%2KU>o3$W+HXPwm%@QLi&-BiX| zpdM<9%ANFqB@9ZV8aE63uHalz@ObDi-hl(i;Zk2txW=H|->B02thMC{>SD4NaJKsh zAoL#(9%EC%b3;v7W%bWy^i#`tR#%?cH2{l_M0~~18`izV@qy?R`_6A{ONIX7fXTo? zzxbRrC^9Rla#O|PV~;NL$phhqQ7wO9G{ggeoF7Dkd}fO~_wS|ODF;$&l)!MIYrq!6 zaHwi!(XY#KcGxEd3||gS z#At&}$n8><`K+{itg5@^v6^=IGFoNVZxa(DP+6EnCa<@{U338~{b7ZY56(d8EnoPj z+vEjZ^6VBBuPjA>G2nGpdy1f#|jCN9OfpQi379X5Ztw7sB z<_Umrt-CJ#Jq0g{HBTg z9`jjOgIE!;83yIbTE1@<)C*+O7m_qs_Jll0-7d2>G~2`h~;W!KJK)pyojc4y!V2lns2jy;FECKA?yoyyLJ6_#+I# zGD_poIUClBN zq1g8Q(6!JlJiq!Jr31Iop6xo9Dh5|qCl!&RGmjy88Jj((FE|x@1)lDqYCzR@2A*5c z#GJq7V~8jQigFi(KLD*m9R;%Nas9eHg!asO6*2aMv6IW+UO0BxN{F(|Yv+TrBbO(N z_G;o^%==!IyI|4Yy?eKN`eU<4{a%B&zWK{G;lD)M%5QcNW0G#L84d;r%%qUK` z_mzG-+s;2l@%Pgq@VA4 z*{`@by1)r?OeaZu5k$4cV`<$|ib=p0cCX}Vmfq>NUg24-0eOvnbsr~~bbHa`AZ-p3 zJM&0uVxZKWqm`oS-+L$4Y@Wy+obb2k1B48bPS|orb}An&$D6>FGDPc9=s6$K6Nb6J}u2CDpuofBP2HwWz`s+_vhQu-Ek_b8N%hk6%MJeNy_sZPZxvv?hagh zcTpBdB(^}*xL`;TicvpYZv=S-d$Ux^WoKQZ%ppf&LG8^n1Qx0>Q!R?cth+^)IDKUd zc~EgF@r@lVMXNixr5b+YoRSt15K|`Bnxle8DVu)siQx}Vc`R!Gaq(#KVT}ix28B$< zKiMA~o^)h7{AZT;TkO#|xw6v_*&v*;ifK}JbV~O`{Epy-9lU;RupaQn#6q`Xq1hvw zqdUH2l$YI6%hlF7SD+tOTnzgN3JajpX+N1PIbd++-hnU?vq$R3vnQd+B;)NbuFk!4 zeom$=lTP0ha=I_h4pwI=lTX$2Zj~xTp=i{}oA+>iH(3F+8-Mz}rvBmB(nR6Q0}dC^ zRhkYwH!{h#J`l0HxNL8h8Y}*4`p>vMv)5%vhsfN4^YhApHF=1*THQ0eg+BNM9LIX8 zozHRQSziU3a1atG;3a4Lm%Ku`^tKEyLH`QgqnL^JvUu|7=fR36*GF0E*}55;rLan= zBnjdMTZum7orkf(YDPDC>-|02wX4TZ9-VaG^g&ko;HQOX^W zGyb;1MW(#dt68bqCmAY`??-l|jE~StzD=5WgA%pV`b6NioiHP1QK@+!}Px zkmDi7Mtf6JRPUw|Eb34hOMYFL;GbVybvU0V$AC;sW)US@V(yV$qxq+bl3qp^pMvQ< z9I{CXmp*$TmM`5xWk#?)J?=}7vUt4dbA@~CMOjBv^+Z^k9Yhn+8miweAAvaw{j}*v z82SX6%|CW(KHK+H?Bq~HAtYY5R1J;iC_=W3d+yq!xsQH#K1-Tvuywuuudh`4CNfz_ zSi|H%b%KSp_^1_BQH)zH`V#GrT%zE!RFVXYk%LKesbV}{HqmO8>mp1e>yXCn5mU8d2d}4;i{SebE0U7a7uC6UEg9RRb zv0tVPbn+{mxwz8PsmkLHv=gr#8xj^{3S==%3$Uxq4(Iw&9dFHr=G|pbK+!u$Rkt4X z3eX}z*?6g#`M|Uu_pP){X{3D1|HXCwsVN1yOzCp{;$>qMyT4$efEBDaO=1a~m@Y(NPm=2c`FUKP6e zM`zIE^I5JdfweI<27u9j*B_2dk8mcrWV&~bFSGxhW98fYmfP` zL)pE<)w!at%lxL8s)e+E-iv)LD}7pFjOkx8~-z&>bm!o1}) zd{5hulAy0F@Nj_8Azht&u4w=8z$Y6I|4gg*&I*;joQkx3v?&wY9*WXqPrQ5TJ_&*; zt4~_!%m9G^P2JQL+VmaU3Sz3j2@naiqH%Hwetv$Sk=ssXvAGV{#g$BBf+KOWpf)2- z`SvX5buGe(o(Pd<>#j!}yQ{kfUF+H!+-Vhz>Ho3hG$4!NH9TV@J~D+E1Uu6@ zwz-=n(*S|(OgWV0_Nw~pr+12!Ot&0=HQo2PcluYU7$+h=q)B^ba%doYL(TqNNmTXBjOx z0xgc6X-l~a{1`J=j{b(*xea9v0L4vY%}h?^+B4IP$gEahc`R}+)zNzExp>|8xPJ9ag*K)Fq&Xso_U}K z7(czUrRjE?9d1Ogu-Wm%U&@ubjsA!FjpMY^<^rEGcg$Sk?3EI=mobV~E59C9JeHuI zv3SiR^YnY-c4K2nyS{XIN@OjYG!?V4)lT~8GlpD|-vfXiQ_Sx;uYRz8VJ}*gDoHuq z^QP&Wd3R+YqKOA+DPi!Ah*x+6dququ{jlj{ICNp>IR@A>DK3vS>P<#4MP zx5CI|{W5iuW4CQd>{%82P?@J7L9N_R{CEr88%Hes~o} zQ+kjnTwGldtA-8(3X6BclDl61v;P(ZpjTdi;*E#kOt%-5dKJAb63pDWp-P3;3WJGk zlLFAK;oe!@fLlRpVIWF2GDJ$d;dSTmwJiC!B-6!NCam>D{);;Pciiqu^aFNH-r);T zu62JzpwxmrGBw~x8yOo#LyVv=xDxm?Y;&am0uZm|ux9=*`W4MTnXiSi>4yE0S;eCd za=D_cf!(Y;qpypiO{TAFeC^KV!?U$7|Kp|81E0p&yT_By#GI(tcO^EZNn6K?sMb7m zyicwbl#Gq9)n<{HBxnnp?@4NtM2C6Ub5N54Ed|ttQX%wA{;1o8Uv!yR-n4xDc!#m$ zQW>+2sJBcV7~n!hZW|vS7p>gNsy6oav6tmj@#>6XF<)X8%)x2vMp}h_4+8{87tB|} z!=_v*r#@$RnD>gZ$Bk!$XjCfhFh`4l6C9m1a}e zJzV(V;ycPShvH%<6UEs2wME<+Lw?&S7k+5ElPk(WAJ(tACXlfs2C}58hg@t>kY%(l z*kEJ2R55ks#S@=lDMqX!!1qwBg1ma)xq?beukaPu1J@IgIU^kz+`Jx?H-oR63!IQi zJl82D8rvG{mwl|gDNXs(4AiDSiNTZn#Ta1M z(+Z0W_U&8R=&cH!zbyG%eXZ%fPEcv|AY;{(ZAQ`BGFqmFCR+J7g4_viZ|AIvMbGSK zM;(U;8CbHR-%CWpi$F@#6t0&q?tZW4alIm8_P;DqSONCm0vU-R-d__qko$e*cyz9g z%gC=9zLy51CdO@Bf75I&j#f77_0BW7XLCn1NmV21`+)3kVTI-H!3)xFn0AG4DSg|S zMy->-W^z;iVc#?!J-Kj#D+x`e?3|VQGEsXAo{ziyDn}?6y=63on+WSrTWGfNgXM;V z!?Lf3>pEK_BK|$*eSM)w%%3BYo*r!(iczyiB6=ag4E*z=S+aA(pkTqCT%PROPZfPPZ$J|YV>iSC2{QSmM&rqXB^J{V21IBBYmc1(4IkWwm zUM_Xl%AYni22z$*H#emWrm6j$6hXOiBqJh!%sxt9(CdW-S)Y#G?s4t!UF60Pz74o0 zU;+p;k~m4;^-jO|?SpNNdNQ7uO2;odx$%0f^Q~yHg`=#Y*Wy%yBFo|Y{;*EhYHBynZNOu>Ov)45VzLe57) zZz*-KC(TqXgOQpu{1{J!)rbARE~UDR{NC+KnwpiEX$zfoe7P*_;RP;-Cn5XJLdoh^DLw?i2!IDnh?!T1{o%LMes1=vd?vNa7B^O0 zJQkpcgh*;my7xMSR^Fe!IPHIq=v(QQ_XSkEc+S_2VVw;iGqYehcNU=OSqo zsWxIK`$bY>O=**l$2rO^0!$?Cg4Gi6G#Oq4nDw6&E==DOcnel#=$l{NCoy8?nbRLP zSn~f7N5gYhcGtsCvVUw6bA_b267EmQhfGR!Z974FpY&5yf#X*^+nQP`D}sarZa;#U zd=ic!4FtYQF#@g-@LTZ!n z`siU%Z_RZu@j&J_4BElLm6&Lo)}VmwvWaYa5(K&ujZkLSC-oNhXbWG!;KO?>?K zWAsn6G$D*?j#R{bq7|vr_M~N;MAlj8W|<4g-cwjctKbS-6(QWs~?^OJ&j!4 zfYotctXk0IAivCN5}@7Vnt6Jl!*%4yHa&cg{ib&w%!ppzJ72nG3 z`QqO*53u?OWM>%gF!pPSOud#l)|w-ErIE6UlEv7Vmtl{@enb9FH@TNYUAzQ{)e#}# zgkvMV4Dm64l%S>Z2oh`m%0O*d@C>@_Rnn2=$&~eJ=L` z&P<5URPDs8L8+1L5tvu2i-n5c&es3EMSCj?m1}U7gLs-yp40a*%5duuuNRBR1Fwx2 zZYn$(A*6*}9i0wT|-IU=1vIF90Z<<^5Z)~L0{d2STcSINk#m=49F4Vfe ze|kVnORFhOM-Iu%oJ3clWs#nd333i%zWJwL>W{XqtR2rg$yHPviM2wE5pn&d9O$>l z&NV=Mt_!b$J@SkP=8$nKX`;Z`3}6B(JkGzWY}<=JdS$lR3CK&-3Sl{8h?uU2H( zeHB)^vtF4mvIDywn~95LMf7V(@_?-XsE4Jju=b{hMv{;anPWf|&_6h6E0ZSnjAX@u zZzdy{jzn3AUFs)OgdIhk18-!fuX1;2yI9smv;wr&L z)I^>Uer4?^ciKqd)}(>v2nDKZSrw%;Gxq$>A7`s)mD%5_S{p)*{IvEpQ{i0T?SuNkzG6oyKI zCVGC^&_JPftP!)-Vww72yuU!JwS1~lBJWaaO22C%fJMOgIv5|C@C0q zA;B*WjX4gqfVJU@1wB&3PVF;NYkcBTT+1Wqek$V#)=(%-kzieWlM_@Ekb0~ho8eqm zw{Ofn6r^{g3U=VvDvA!iUp#be&8uYF7T)ZPx1|qDZ=Z-9>nN?OgKh?OsgCcy?l>VW z0AA1$AOYpk830MS)qhyXKO$oboq-X1pv-6{JfW8^>;e(^E#wks_X6qV&Di_UD(Vra zaE%UQO~WK1Y`;Lpopu3z_ISRohJsLulz|vQN-{q+6fnLWj7=+~kxB%rO?h~8j$^_hVcaNEIv_=x z$w$YXqXdz;jB3n?2sk8O|5}~CYmiw;rvUJ2oD=~` z$DiI?CDWMy0L?Kjsr%UXo0OD6|3-A<1?|wy-mVw=Td0IuH-Ys+9y7 zwUA{%1U!OF+PT4U5>pp}K_L8W(4Z0x={hqhRf*S~#BMITH-4*z#!b)6fAg}EE?~jX z%}dgB8=5=#9aFC(OmLSgF$S+mBpIa+cPn$4%)!@`kvU|uxA+BgLH}f`eJVWhQxadqLwu6Xa3&@U<-JH1wnJqMG-y zE6at5DIJ<}Ik#t-+AWpjxqM+{l25&Y{`~bPbG^@95ihb3)EcTu#MN{E2 zIdGB!t|lG-_(a0Qf)7-&0~Y}UF&>Jp2@NlY#iKdWJqLAOn z%+)WWKR!Gds`X6;?}>_TGMD9Y$_=3?tao-YjexDwe(r6Da0kn4)+BtAFP+?4(#Dgm zDVK-02C9l)KX#YekCs~?)IjRNa_CiuM`y;#IsWjZh48LYG)sZ}(M%H3V{%YU62fM7 zg3zI}j3J6u2=Q*q+a@EAu&Yp4(ybmG*{*Euc|Czn<(|CM3B-Y>K+X#Qv9Na(n=i!V zOo7WP00EKkTcgz7;3VzI?eHTzO{^Vk-e$Rp_N%Z?q;cSOFXb+FZ)#CydRtC8iundb zA+d}1q5qrJndjuZmLnAx} znK&dV*aLCs041=*+m)HhB-1?rXz6*!Pxd6#-hI=$zG-p55=mI7jNV*(% z^m?vG7k7-cl8M^in9F3|Jdb-exJhD@bz> zeo=31moB6x?jjw#yZv7lo~1hVu^wJ6){mct1TGr?b^COIlh!gG2&qf@l^31O5ljOJ z>4Z3t5^Vv0`+QTxG(aq(F8Zrl%ehk}XHy{UXM~rV+(=v)Rh+c9(R=llYJK-eH{Amb zeST)=d?r7-)$E|Nbki5>_}J8g&TWB%VR#7|A#(09f^x`(+POQ(qOvkdNEgDyMW#dL z%~=U3IS?LfCj&_+PAn?ou#lQCVr0chTfBs8^!kQ00h-_2QfXs!wl}p9S2|o~9x9QD zKwXyn5&wZTT`k2vU}Gr|mLGf->Zve76viS9iVW=JG;}!d(2YA1$$`0}lrn`!RA_I_ zUSPMADc!p28e}};KeD01wLg=P#X%iR{mKhV3Dm+&?PchTR!4c)`B5st#&nWluO&y1 zc|#0afg=G4xoDU8Lm4_UqH~mQ?_Ir9?G&o(7>%=brrvHjKDN8ZDCnG_`)1y+x48j` zpyz#-(ANOl06@3S-F-S%zFU>QJ%->7?;;tQA6FlYd6r1(a4E^UU!y(X5tbO>b6Z9FCSCG%{{|+tIeKfy z#oGoHYWlW8BfF9BXcUdqsFG<6)Rqm)2OlN`{C3ghh_z4t^+&WzrXDL5@T{nTq?0Y& z(fpxR%EBECmk1wwhJ@Kvoe!pYMul``OeWzo)tcUf4%xE);aGptj-fSfEW* z&r$=KwR-n9OPOCs+H+-^%Y2_h-)N9*InA3Et+yMB?!R8jtK{|tvkCJP zAT!yDgR_MIoE7qD>lF547~tR8D|Vt`xZGs=ztM@HFG6<+O9~He)B|$Mr50=pJ=r0 z$mGhJpve(EL)&h1G<4rf!MfTaBYtl8@61_ZhnhGFb|@QA2k&KOzq1LC*-3H1oSN73 z{awcjE@SiL^_MSSJTmn#K5l8lI0ZUhE}o!_%bIqP+&}plD+;pyF4#vopiwVd_pPbD zVUD2Z_18k#+J&WDnw^#^0ft|wCb}2kw#Re0TxHIECH6dnrO@VyD!O8yuWTPX7%n!TE{O4akf}@ zl~OPA_1T5OF{Mgi?f5hbreD8x+3)~AbW<~8E74O5TonkNr0oLd*N-+ z981^W`i@cc=Q_(BUbOm=-SSIn{wmu-wv?}Z-D{k5ud?R~&O$MJWT|=3wQ=l;n+>#C zToXG=x7BQ|Q4F(tV8ve zZ+sTKIJY*uWrK5sgH%rusAnR#u+8t5EgLPBWJ_P?O1RVf`0&cHb*c1k8>RILs+Ih@ z1P*bwKhA&6I7_|D_~7$FaW^;T(E*=h)|*~^lsb1Do(9?H}zJ9ZQH zT?ral-A9mpeS@}_Es+pl!RFP(YLoT&;;BG2xlCQXe5IsPu>*HP))uzKm3D(mg;H3;`funVmG7AM7~gzu+m$6>zPZXYcB4YG7w>V zlPKiQ>ur^^9FZt<_uJgvD9s8~MbyG;5MJ(aQ z|AZPBY_O87f_CL?`{s}#8Zz9m z@|GOFfUd*Tr}-iYA8^3sx$`?0I`uk<<}+qO`o!p#xGf@={VEgcOti s=L0UTc24Jg{_h748A;2@OUuejOa1o&IhO}l@Bs=fH9gf5<#WOR2L@v{>i_@% literal 14827 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 z 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 Lmr9ii=Ar)=W)J;Q literal 5755 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 N0e!bU^^O%Q>ffb_r5gYM diff --git a/doc/_static/non_cut_hexa.png b/doc/_static/non_cut_hexa.png new file mode 100644 index 0000000000000000000000000000000000000000..c814327c7c706c2d8462da3bed2ac67c78dd8b9a GIT binary patch literal 3502 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 literal 0 HcmV?d00001 diff --git a/doc/_static/parthemisphericalgrid.png b/doc/_static/parthemisphericalgrid.png index 20036ac4429d57cb14439801873c307d4a95b41f..ab8b38586a965dfba564b3408dc3594c8e56bb37 100644 GIT binary patch literal 74663 zcmdqJhdh_9&z5 zgsksz-S5xupZN9p+>iHt>*e`+KCkP%&ht2r<2aweXU`~arD3C?prF`#N<~qVf`YOP z|5#9O!cX>&C3WI|Hkqm_D^jeH|9e!L5rv;@wpY=2!f&*be<&69#=DUpy4W8#|NnlU zLf%({i-O`N#VN((T5jKemtJ>E7>+CO*%s1adiCnnj#pO-26@ly3J6f`bSdogzWDub zyIpZjJtApd>s_)f&`XqfXz{f{z?rVq{_2H?c+LS?i$<#PyiI1KQD@WUJ zbThmQ`tQ$&m<^*jhByEB?-{{+z4nklMuLj{jP&@ksL4%}O#bpi49&R(Me?UiE2vU{ zd}t<3fk}>hC{kp{SpH5d5Zpb z{O|g8L{9&A@e_M!dbf^JykDKRQ|6*N|MQOuo+;&~4}) z^Z(zK4|Qe&HTS$q{L$eJQYiv&ZJmxyxGn4`$XtTYink* zC|=z7CjDxyIdx-(<1*=|o2Wk2^4|V$DUzAVB`>JWE;!#@8Z{BtB%pcBMi;nbjvT>*BV=`vDIRAT2@tUV0h~j z6GzVw^4wluaYN}N?_PJy1fE(5ja57FHP&OPQZzVuF30dG`NW5<+wloeQD4JDXXM+@9ll+}*xEv25Qm#NrHS@d?_fmo==SYqjJ5yL&V8_gb;( zlAlb!k7=#H=i}93eA>AfTGUe$KUmiq~`c+m?4oH_8_tJ4rqu zm#wlr_p4O!f%F3Zx!ClVx|gjS_EHJ=jMezbm`K5VPS7a zjr6M5o;C|l>3ET(^p%*(BK&Q+?l#3w>0h{TFD9l|qUoq_h4H)g_Lwcq!lFlx+|d#| zDY)V$wSkvm^NABDBo7|sj#PQjeN~c8jD@yx1wX|%+H@97uT1(R7Z=O8Omx*1I}OXN zGFLLQP`$r7FBjK-0r8OMyVr|zOa8HS=_9Wqal^m%M5;{9&Q|sIa{BoABqSuTu(6q1 zTZaY&Y#MTuNli_4zJ9&ArN!4US9wpQ*Zw^gl5EpcQ(WTWn%j%hYOgyxS9f-@r#1)0 z$FrxTr0n0nU-aNX|FE#FU%!6!TKQ!pASJ~tAtAACm-M@?u3e0bjI^}0UJEDnjYITh z{r81vJ3EF1dG*tGvdSHD6ib}l{ibb;KK;du7nfI7g2Tg=gkxIT+m$UX_bH`D=H3{; zw){iH$HdBt=GwJun&;0uI5|~)`Eu{go5OEPN=8RV7r%WqH8&5;$Pf^Z3yqCsv9__% z*V8k$wcVDfb=t>Aer|4VWX{9o_qSUyG0Zn^+(5n+s&1b?Xtv)s|}z^Pb$+bj+VWFM_u^$ z&s35Pw_wtirG4ef6=O@wy4F@EZEbBVUrKv?z}Wlu?-{mlf9E-Qpmz`pQq|ZP?&r7R z_=fE4?96A+6jRPpx9RKZGSAM=3Ozq57|p=K66Ei{@%i)TegOgN9_eJqB_`Gwi=H(! zZ2a^obgGmO8?LXf|KW;wW8x73tsvEFdHMN#+}xDdM2hd=~H)NLl2PXc0+XQ6*ERLuYOIO+rh*%HDA8A`{wL$ zQ%hHun!Y~k`t|G8&Yam3Rp%!mnRrI|%$aSt&HFJiJW+KPc6Q2Xng={T@zEpl5exBn zD#Tu}Qfhx^@9Lq|)zyWCh0ou(RexdDdk@98n!-*3Q=g$j9`vnG~$lpRlRaI4K>FQ$be6f4|{r!0M-@kv~t^aYG z#Y&QG`TR=9>fHDzwZ^GzWuF?ANpsJ567Pe@akQcp)pE8@cD>qR{q4oA^;Fv^rhex& zIZh9pq}@~%V(xr8?cTv_U+w?>v23+E$Pl~%@yA3{qdk8~JbC}-zC_oaV8h&u@^Vf( zIy#(*u&}VV%QN+~baa=^%=~dIbK5UVvc)7ami2y{Ssi|vpI_6`5>;1sDj*=>xu*|> zZ^g}Ki|Xd)$an9KJ<;5^W5)Z<>f_9w?)~X#y9^~WvoJa zMn=aAll3Q0o-F)*0}sFWXM4i|PND0^4yEVGwJCc&qYGE#ufkHxdj7Q^sNVc{ywkNi zPgqq|701_Ywn3`dO1(4B#l=O4rk7!p@2#6RDQGvX$Cg>-U%+|F)`t`v9Wo(^0!m!t&f4hu3NWm{q8AUN>4tqCvrPIeMMo}+yR%#9(8+r(evle z?~?aUz&eI1@!(;2`S|*WhXsmG9yxsYx%*DHAD4%Rh8~^WEA22)T|4tIHZG2ygX4^w zoAkDA+i2;wIlY|QGo;WncC>Lm+5C0S?}$b%{*OWy6Hnj>%i3Lbp>T*<-y6xrg!fs5OU5gEf`oaav84CW!;oPE^(D=t2MskKJ~Kv!eixdk~F zt=LybO2iHZ+?e_H{rkPdM0Iy}850u|EgcN$ldrCz)%+j+F8mh)8TpVLGVttP3&j)3kHct?2+JOq|=~#`0$~Hg$38agFDR4&BHllPutiW zz?LeWJQ*1m7mVD5$Ti)uch8KBB2$@$pTi@H^Ec-NI$L5A5<(4xGm460gMz5(_O=`6E@RH*Yqne{f*L`S3Q5qkF9{z9}ktVcEjJIu$67x|;uc z*p}DZ_`AnjM5J96^<$wAH)it+#Bt9AwDZaBE^cOSID6+lD#jPtAhf z$X=J!k=he|x~{R2UtIiNf4@oD>RfK#^V~2lku88N~-<0nf8p48ugX90{ySlm_fBL-o>(>WE zLstwgU6OH~*wx+LtuVJYs%{}-ZGq0p%4+1-uZzudkSL?a^5ZLUq%ZfyQu-4&$E%O)l-eAOys zo2qhAG1Q2bVNw19?}G=-R5K@Knwy)YrKS5uMm`{Qozl>#?dmeHe_n<(t)`)I{@l6a zmoDuN4-e-R5I{bysIK17(9oce{0KS9oDrcWc3M>Z(8`r8Ib{CFsj0EjQ_uC6X=@8yM8wW_C1af^!HeehsskN47ewqQYZwIVM=U5NHTbl0>Ew7U*FQzL!s+P&Mo?-rHY@^r0(iwpn${j}`t@$ptR_yh_ojj4?! z+sl`)xaSJA8m~1D_6^=l^-mpLxK49kEslwLQ^WlLMu9V;Qc{6x{HZA^lv}oJ!39Uh z#uQSUr#?wE86yC@a`W?}Z!G;y(Gm;}4doRU4sXlWZRzdRP*uIN_x7GW$;VOSt63`l z%p6`<#rcb;{)%{kO{dbibCGvbGSBW+b6M$Umyc0MdDqjEga|=NuBfQs@a?{_k&n4^L0sx8>Q{LWSKf>~`fVhv?)MxO|oeIqkl;6}6slO2EyoQxu$yzO!E z55|+emImi`bLwgs;X>Tp+`FXhkFl^04Gy00_Lf75LaphY5*rv8pr)aztgO7P8YAp5 z`XwzpR1gIhz;j??;*5gAI;2L%+nMq~6o5V^qAV(^s+V0{c5-rZeto8YLQjtc0f{0* z@YLzkr}YdBs%vWldwL9o4c`V`$hm4_a_jkX;V)ml+&!HZ8Xn&B$7yM4kujd5-n(Rl z>ot;a6#~B|snu)VczMb86vC#I%r#K0(;Um4pKmA)RBpG(?`V_F0-NMG^ z$536=i1QmWb91Fs`YlQ8+S4@H~*UZ*4Y^q8yl3G%46P?WOij}?1cqRk8Syi3r@;b z)F|79E?ZmMD_5^LzWF1`*c*3KdbPOJ@=jgrq3@ zX!#-TkY`LyO;uD>`WB`Kot>TcFRcJ;y?p(eci+Cv0EfGF?RrsAfbF0Jj{W!V-_vK$ zp5*1trWa(Q{gpe6E_#61gywmfgWtD&Y}MPjuNSSm-$V}#n3m1u*lmux56B?DIvw#O zEe)*%X{>t7ZlJy4j;h1Qt$W_G%FD}ttgm;Uu3@fgYBFD2T~Sz=)uhNrJ*lXmG%_-( ztg7lLyK&?~&I74luc+YQ&48tdt;-e`K^-0XhmRbIRN<}nt3(x$8df@jNhXq-G|A7POQu(>LfnzDL zyY4Ga-BKiG$|NpxA{=q?CWFZ6vg8Xh`VpwuACvXG0e@f%amwh85= z+pL5yz45CseuUJCehPc5qNX;KLVfV#Rmt_ygUyTpcnL1WZ(be6U@g45{S@&kq| zhYuhA{AMB*yR@(ke01z*2U+(3l5pFU_H}%=Ljc1#5fDBDUUTc#;Onq(^ zMVJzgn3&iz{k(v`e_hZC;o-HjbzV9RpZPsL4i>}Ut(!xf1uN~Q^z`)DhYttd-CD1b zrU`@=^hW(}oxw92~Un zDx!}*eNsb%4jCGe1Z0I;`Qe8ng1V!~fd}}60{7~3EKReyqvI4XwdkSItLFrxt-rqx z2G#N~KKIP~x{n_#KYjY0)xM6x&VKnh&#AamdUJXX1Fcgk*VJG$Z=qTRZrfc676#u!fzCiL-)aX~$@>o;m|9w%LUAw_uSVZU zqBSp1f{Kpg3Q7m=5P5pvzI`d#*;^9N1fspfa^1{4jN*D&CPco#Uqp2 z0q**CRUqA#+hP(DJPDDqD}P#!F8$5}X=cJcK>|`dPA&Ew2QVm}4+Z({pD(Icu3kl9 zQ@DJY2eDKA{{6tupYPGqzkK;JrLZstTa3*F(@Bt7dOANUEY5~0vUsUs1lBDnDG8|d z^0jNKfVfC@3fB~^tORj8Ma9L_pHI-?Moxfez*$>c>0SF#>AywFOvhaw58CBEoR}cv z6p)m}(be5uS6A2nXS78(F}UuExXy6Sd!e2?>#tI=EG>Sc@-Dj;dH3#3z<;)|fXGPt zj~_o$LOUK^5yZza-XXuR{<>j4c@qBW2uO7%8APLgPH#eU{ zhL)3)>jGx}Ge3XX+`JYE)~`n$kw_Q#t#K;z#h;Enp>%8pyV=?6bA48>feixtX71n+ z`R$t?_DBV|TV6gH|AG5Gh5y*MFSsFIY8Jqdo|#$s;zf3(Msfhqe058r)6$-zMkY?6XO`@MI!>r`GbwY7c!9#U9X z_~O9ByLaDdc+W6?`t*r~gCiaBL2|{*mtu(Xy?gh9(M$lR!$h+YrB~`wGtRy9;oaCb z6vdY&Rhxh)0n#tH$fMp)lr7l?1O~_$dM2>ev$nkaRa@QH$JJSACvfy=0;=Kp5jz8q zoOUpg*hb(f+HKo3jf^zV?*fM-DDD9<;H+J1f1Z|;6BZ?)A-rXK(JR)qFKMdJ3`^O- zEx&p5ruq;y))M+yGTY!WZcfQcYozp{pFhP99;^}Zp56lNd+f#y*|xSe&;X`pW+%}& zOqR}bfEUFN!0!b`L}X-V-$BX8lA)-(d3s97$q5hHxwyJA0%8Hx09B!)eeUj7S5cux zILypA5@>@?0Q|vi)=g^W#;Qifj!tL*QZ+MKI5`D)czk`<=6#sizM%4Wfq+hZqPCm-Ma(Bd6WJf1kSWRGQ|@>}+sE z#PCRSs${Fwqf6Nb^R>J~FRe#R>0P{d9wZFzC?_YU(neL=-N2wrJVi58>-Fo`pL=@3 z@7&o!*wP=472N+;Un+yp#G?)N_g8=o1Rr)~<=-5L86{=qlax&Ki#H(!WTsFZ6-}J& zUe=mK#G|$^=C1t{!BNyVFt}o3a(v{Ls=7KMF%Z}&&o5rQ;Ns==Gg|xCPV)Str%zR$ zRu|ZIhoq(P2}aXIpXQSc9RB(96^b3I+sMSkPYs`cj3RHR)@|Lo6cR9~E;!I2RaLqiTrOH1^TXf~QY ze4rj5A4m2@7E!u#g}0-lV{i0FGl?agJ-oadfHQv%5BtxSk-F(d zDlXW4UT(PdCQt<~NDeJ%5;x%TD^m$6QI%H?rI) z*>A=a$7MC4%D#9Z3TnPW#AmTSJK+Wxm7}wtBuMrI`~bF??{?*67BA#%-z1DirVV3s%yB}42!^VvcI1e+!@@sLctKOhTH{QAv9{wJ5E*7l0r>7Al zc5G~{v9t62kr9jK)hDVdqUfB*h98wMjcLBI_T=RIJk^XC~Eg8k5zB0=sI5?V4p zIJE9JMbeMUi+5t`t{k0uw?0AMCkeo#FL~GlLP6zxU$TQa*kK$82Bb5TPMk}$+wO4{ zkX}ed!U+);7RDnXvsl{Mk<7Tf?1h+w@IctQyLXSFTPrOsO#mtShLZsYRgFNR5E_;K zs~LIbSFYHjgrQ9y86Q8H-8S&!hd)pQcuPFE$UA798T&qpmX;RqT{uH}B`ycBK?phmy^tvIYmXoA zLFBtF{)ov$$2H#$T-w~9OzF-<0s12S~1p^ z?cm@*P*ILfiFN$}P!s5k`c2uHnQPyNu~W9Nez}%g`X00gmh~Ot67d7MVDpwOmjPuE zq$zDyy1xaYRCs|Z9NRCsa>vxWkLR~PNIb{K%PT4=sd(+05NN*oYK7c(33+)9XJ^R_ zjpUy|efOiI`+xonfNnGMqaN**n6z{df`AYo^IcAK?1!u&D7~`jJVZKGWF~4lIsxcS z=+uOb%0fXz(D>g*!_NDQS7nTsvsJ5P4;J}kYV$Le?sT2($kS=0Y;<(&drKPgt{d~+ z_>Sp;J0gZoS}oBC0POij`qwXB5Xlp4B9z1p744(WNOD91w6=a$w6gC%v3aRgU%Xgr zeS7bNFQd*yB_*>N@+-k1Av8dgluw^NHMX(}K`J?ubd>0yL7}0Fx$R(NeJ|wvL`TFe zAV39r3Qz>=j04DlZi~)m;l%CRw@Fft?_K6c*l&u9i-Te&CMoH6CWA*v2uWZY5+OP5 zV6<>|&>Lgs9?2X&>^Pk03NTgyyiwvZ{>F*{{FFFYeDG5sm_ig%j%Bwou(Af1lpH~X zV^i?qTPUNzUm)8VnVE@Ni9A)Q^0=bnIPT&bdR!#3qpJ&pl`9Vf-}22rLH8pmdB5vm z@spov_bifwiko*K_KwQR;t}XWd3D*YKMzFC2D_gi>$x-kLg~N_5Ku1*3P4H(fHwJ> zbCG0|Ci%6aSO`TWC1Ht*F51J1;b>af*x6;Ae$pa=Eq9i$up@;by#ONpPhvK?eE9^* z3s?+iSJyjj$w42Mwl^)fgfP zu&^HpD{%D>0b7wz&{+WoLzAs*XfSJdco5IOWfKFi5m+SO(`f^LJMEa+dQmM-p?O7- zuRJt%UPJbzrY6I1W8$E){6Bhh*TesV`JamTo+19Baw9$95297~VA^G>IGuI-$q+9< z6Ghal6F?Uh5fmz(MPc=+;vN$a9N@!D!m!L;E}b@5mf?Vgaf-Fo$+d8xYLT*qJx~Bp z=Wqq`OniKNx`|cZXR&jEXxn&rc+f(L9y+At=~-g`HSYd>MVwpoU5|5fCw11E?*w^W z-5zz(cC&2k?d;qGUU*(6CMIam@L93`pAyyCN%C4sAcq17Dn`aCLT-#YV-G|;L($(N z4o-nNGFts%^r5kFr)}QLm*|sYfOS#6Mt=VWznF)!-{Uo_?&0B~qOQ&-B(%lT)01C7 zVDr|kKd^VT9UXC~c7SoP6ELP98v5~Lvvw379wP78uR36#puJQzH`Av!e}JflHOBJ- z$ZSY4(9`1rg@PzS9pR@AS4u^Vy5~7jtgP}7dE@O={~o9b zIu;u|y^oUwqMB(ULo-v_d1O2KOA5|Y%ivS0e>TK}%OUI^@HfNm-3>_2D6}b0p7^0e z0gOVyPAe+XqkX%R9wPI_>M-BzsHiBCZYj=dbf&4s_>IeDY6)r`03ss~5gK+WQR#nn z3!cM=AA%G`&VwHCvv@cO+UsWei<+7D!2<)z*26pip$ifs@?dO20%45MPNO$KQmsL^ zjgQSnB`+(!7)pi;oRy>CTX76>B5=g6BQ9zmN+nrn75v?YKA;jtpEVorDvkoE=U&!N zIlG;Kp%NhyvKdH=F?{pW-x;hjEH3-6 z2^;O%zdsa?2eXzAoL{i`{m5xgGBSv${Oub`2`edpv&m}-PoD51J>pBNtE$#RJ%Bj^ zO~%l4E$1*IBQ+x<@Y%EdpLYDbUwpsW=~ZoO)jT)#mMuK!e%pMnH*sB{Dcx*Jl|HS6@(XOg%wuMcqy6f}k_!a)QtK^W@e4?Q z$PEsTj_XJjMrQ*aLcrE1#LJSt;Xonn!MoJ0uf90{t*JSQumB&n{8OqtrKl(txClS6 zw6UqdujQFHIYL5#HfB?{)IG_-$=O6IETQh`@$b`vwK6yUNrK#|{Pw8b&@&8bsI|5A z$k^E9f&x^p2C#GpW8`#*=3yw6FzNt*Lh)K0(=87{cmd!-Y^7&m`H-$2@7HH3A|irf z=r4j&0!WS}?^|A+tLFbgn(ebIAew{#!mEuZ4g3F zh$6=bp&qINDo!f;Y;^a>B@+`9$qhsMV95y^>PkK_V!by{B2Oxs+KCUnC(4XH&KbaM zOu4VsL8MzKGz@HPr@=W9{aIAcB~x7E%o%=B(X%S%kZP_V?r{iEXTW)KTD)3b0+&v> zgucE$v&~|~&au*wbvqWnz$?uyfHvs0AIAR zjsDNoRtVIAAh?=%dCC7;c7bmk~dMMXvSGef5UURhXJ z`hcGHx%S?W0tmsuB8oq>6VjM^&QF}o)FM^$*f9!scXzbXQ^0GEaGZdz1wJ2yQUijH zk%J>VF|qrV2+9Fr%AwkU%u^_^u(HaUvI9Ouk|zvh-F(@+EPx{%5mym$K)o%Uo%Ps4 zLK*tNE4H!lDV$f}yg-SgdO}EkU0B!xSPf?T#f!Tz7X2Ll$(qmd$D56^762= zW-fn!Za|Bl1SZI7W@USvq3%G!UBd*&>O&=KeP+t!{4x9=JKves;tN(tz zo%tvPWlPQAtV3_M@oN0q_?%2LSP=HM^RGE~TiN`+%(()-C_{UuS`v z!=w9Ttx*L9bqQ8WlwCY6)mJ~KCXCGW>|$X!NK!Ld6TmHn%g*S@fU&QFV?bYa`wp`R zA#?Kc4}$u*VrDk&%ej0L-R3*qU5KXJkLLdTnZllI1~7ed{TC6x!1WayoIzBAZb3l@ zNJQlZAb=U{49KfZzWon3g<;KlJboQGlX#dfVe-JrHZ+P?%+3Gf#$YAW%!Ek4v)F*R z!BAuZIlW`Qf4|TJ1~6NANY&wrDt{!}I6?V&7CsY&^J(X zr}Dux=n0%7NcFJEL}&^AsFhz8Be?X(j~`MAorMgj5%=yfOq8#A<0&8f$TAGBFoq#1 z9E%2D`Fl{gx3B^<{sWAQTbSt=_wUj1D!jj$D;Z=+LsL@}_!3ALa5|we#IEiW5i$4h zV9U`_1#NNg;6dWW(-O3_wS8Y#w;5C*=zeg}{awXQM3Y0yiWUo27KN0vFs!Mdfrl{+ zM+|f)pQNS#~jugk%Uvp@en!kQkI(d??mt9~?Hf-3?H!%^e znR&&^YAhgkdI?~MTUIs^IOLj6J`S-$&5fzP<9{c*?D+?tzQeXm z25>XHC@idPYl}v=gqn{w6ZEo@iYz=zsimd3j?8gtbiLHHv{z6ik<<6^@J!Fon*)X* zWM+QG+kNTir~?9#@mdfi3MlxBPMbosunyO+n|XO9fVx3r59@}ThX!@ zP)8#lK0J-1fEEi_P4n#8o6s82!T<|}BCY{a!0$7AY(*&{K;YGHS6s0M)*n1NFjx%h z@#jqPnOY&I)Ak4oerz=sJ|C43qc(UkJ+B$!3`kv|&TkzZ5Ind;sqWSPfQ(I}6b-(6 z8>igc{mSQoIMCiZHp$K#i?ZNwB9YpUweCZQ0&_rVdfo6!<^1Y=QEKXmq8zZuQ&aX} z{9n9&&D1z%8-QvGr{IUWI(-LK*UT@vf<(lLMO%`Uojv;N*WmM#2~%h1KRhlINENMFAdI*s@h?kDcSD!D zA|Cfb3IB`mLmV;vWWH_LDFLAM_U+Nfj~`1Tdy#KLI{7mIh~Oj5lM9i`WkLfnWh}a2wddlvvh3(GsML zn(F~HLVuJpsg}_~4|4%9IQnW5;{Z#@ypi=k0OO!2*M0glBp|=I8FD-7atttDB62lu zo)}H!<&9!FDEfwm6hQ_edBHMgzc6J23z+Uv)u_{HV2uH|G+bS!0Ab(}We3?o)N^kb|?NX)LvE8_4!^Oc^owouz&=px?lsl9BOxiQIBGZ@pDdPx|A1Qy`Z>1XFuTG z4sRdiJ4l{bE>a>8d#+`(yYc8mg*^cZ5bjyvEDrY}dH}BuR1Khr9R|--H}8`QIV=I+ zj<$AWe7x%Q>-qLQi{3cR__I8!;e+fRaH+)QrCqNa_&m6mxez2<*$;`z$ecoS;>@=* zbwdloPLN!D;J^X+K~r?HJAgK|BOO)Ak-a&5Q?Oyo$TXeL1>80HGV-Ggf3 zGXA{=8~}x%wHi4S3JTxy%<0f)!Y4!cUeF#K92@|qpx{V%17ibZdU7e4{=kX?@&Ru@ z?+_}mY7>Nc9Vcqg&S#08loeE5MB*#gNyC0?)jg4LwL(&>fiNGYRE16uv^Ug0j#5Jn zV`DBPcV=j6*!aHw{^Kgn)K0=qDoVVqU)vdWGpYma;eiz7he#)Esq3#{ zHsZxeLH+cejqfE)Fb*CFpPQ#%;~Z|}F6B^_jaIc`Z)cFhV}r^Bol24(1VnUXa9_h6 z?|=e;{Q=bEg>D6t9dOQGVd1M579)a`h+Q+77rT7cRv^0j=sT_E6Ji~xpzC`3CE_P} zyb$cgjgb?H<6G}i>QM-l&|+Olu7Lky*HO2rtWHQo#3BMPiYW<4*uAi$Ao-s>dlm}e z{Y-*1;x?+!A=|DXg_K7SInmVud0?w9x1_5pY#Pn)%ATyXkkq_z;UjdW z^QiUye^@aC#{icPzupFqTh!0nzHi^Lqh>HdK3q!>92#NN`qyQ(|3bAMT#Zxi=Nd4=EJf6Z#8ybt~cF zq$rwgJQA0jEC3jRT7bwoo2ga#eVD?{top*NDlJ>lRI!!_06Z8UBHt`1P z3n8Kxvuyu!mNFZB9>(|BYO&V>^YmjH%PQZ^rNg(d(t3XOz_wf}RY@+9PR6eG9Q#bF>k zVxq%#Au-|e#hLl5zs=?Uqb_lL>Sxs9QK5#m7}x)=q7B(4O>>{x$lpJI4EVi}0RUqt zUw~tS!mzP_W@e@m*&BvMM6$Ho6c0>?{KnD61o}mcz#Z$5JW)8mZRmaKy&Q_O7jKiJ$wrHj)V$3CH(DAOnID z6+QdSShPz^s{>C547RKH-`B#Yxw+;0Dj?>P@i_AUE3WWs8+F^ieszSElpg#iGCBMt z-(Gdr*VjW!6M(S*k#=ioqJ$13F8BtxGu+(W&z(PCg+|8zLXHwZ9$>PGB%8lZ0EhuZ z5`=Ul$aA{7%BUkqSy1j~z=Y!7s#fNEBT7n2jQ#cdVAWR4ZhLjLfene) z?r634X1!yxX;*p0H{%cL>dT^{APkxynqg8zvOtjlhjtgPb5O_#coSfaj=wz@?MiFV zM^!-Ba$6cNl&7EG0`n(!X>80V-Lk#ColqclcDbM33}Gn6kq1hF!z9mp#RG^9YBh`{ z#DWD38HTUJFMj@f7JV{kW2Dw`fAf-q2LxvP zk6W8Be0oH+OLT7TQeyg1DJf-0kBD$j&!z0fOd#^i=g)C530R)Nt`W$pjvXOwjVS*} zPGOHijt)j{fK-7ViI_VS1!D#qk|yYd4K1I*Z9mP)F@vHR8)9o`7XcCpW)O3G`|WV$ zb-VVedwL$h>Kt8Lo>h2{_G54P%D5ewjml`*%o>CH0A)Z-4ZzQMUSc2v1O<5v^C>^f zV}PF^6kxP`hqXpJKz3D+YFq2iGGGuCQWe@WyJufZbc%H9yP6JvXhrBUAt&{JPC0?Q z#Zuf13=F)x;{x(kFr&Z&^=o!6XKmp$lqu66OH?t%T!*d2f54KlqN@Q|!1nhy3Q!!Fh@$xX#dU%S!Ug4n3OjXfA zY*I$I2lYhCz*SXs3k6X~!L$jL$-yry1%J4j!%Cl(=$r>ez|LxG=bL5)f>H;4_^7xz z4iFSr9Q#6g=TgHac%88}_1-uZ^kA8wFJ1fk%*5L}33UWr1nkd@evX^rvs+$1O8hpj zUfqMc_}qmHA?PQKU%iCT_x<}rczJM+zz&COkK4rW^x?sQizMBYl*B{A0~G^11Uk)7 z#1M2N08q20Bw0w}aVXTpTyZ+B5*jFA2+X07FW!OU!15e=*87f!PEO&f9>4b?Z=}`D z+V}7v2!UEWg#|siDBvb0i%>IjJ8nL2vjQ8-4ZRm=1kOD;0i;$M4OJJ=#1daH_yOIG z+SlOWTJ1Z{*m=Xt%TKPJAP6Y^G?x>=m_lQ&tgpWVQW(I_zg<0}1?uSskR9Yw&b9@w zUxRg5040URH;qXCFihrK&VO2W+(4*^O|2~ujt|XD=bEb{u-+5$1EiiBVw6l20Yci? zY&~Xey&r1Qr^ZHN+kqG=+TYdQ&W!mRI`66VP$N%)V3d8U03ceZq6dX9D zMjz>2+=gZc9XDwOK=(Fep3fi}j-;g42wiAcm>DQZz$*$IV`46|w?8XAOzbUazA$D4 zmW2v9~y0z*KAMAm!GI(HC99J^RkvyqN2f{xc)Xmhe=<`b}em`F)^ zwJlzR|av{wCmDM&h{<1QECil^3KpgC^0k%8%KH;&UofDijJ~X= zr-z6SonsF%l(s21NycfDot+)5?6_rsXr!lYhd_nOgCPY~ghYe!)O`s{8>y(s@BuV6dnYFzcn$%kK<4d+E5d0^W|?tC zY#VDa8sVv_sqKQvI4rg$@-jy3L2_;lF?RWo36mNW*bj zTx{|o^%=01aGR~?HPG{)-OGgLe;U|35*8I8V*o~+;>CwMCSeJZUm4Z-Pe?J$9nNnz zWbE9fC|5{O(&f6L0orFrQ*AOe>YJOVv&O~z6}bJ5tEOqDoW@Ra9X`y4UK7y?(TDz? zA(k{-H}^ecNO++8U!t1>07pqCzE#)_$P_WmWKadMO5kJPW9UMe!(A~*G(Iu$2fi3K zCcoRa*Fk7-pKH^FbFUIT1x^L=O{=LfHBO_rzz+_Q0EUEGwC}h)2;FsYYS6Q&KskUA zNBZc`~`aNdTh@l6XxQ7l+wSmlTaf#tl-cnD2LMv_MeI<^0e zFcaMwZ4H2&`$$UQ)9mcjw{MrTWW0d0*DmI90d!|oBY6e z2pn8w8U?ysO2g1fXhg&;CS_;B?7VzoPk^Ul-=U&AUc&T+hvl92#~F0pimqK@p(WOD zz$IO6cKDnTr09Ur&{evOAZkvhF`x(lm|@rw3=t(Uv4ez$ghp)o*Tq_X%>jHOvnXP4 z9zl=VMG`9XIW<9;wNr9)BMN)H*^$;w27J+!lJ*z=2*^Wyzkc0;GEiQgj9dZv1p*p8 zJjvjX$?RN$x^Uv;-26Nv5-*Y`o(t@Xq38HPINt#<58BL)zP3orAJG~8tQ{+U^dQ?- zFknzHAeh0(Ve06pX%Pi+5W=ADhqZ)<4mZU8#DS;`68KoJ%k+PqX z8<7+7m*DFw;IKyz@X}{(HGXU({7z)(7<||2zxHx*X!v+exblXEhNyWS!n?(~YnQ<^ zt!>>W-l#etae_9GuoxH^(7&dqq#Xa?7hQJ+IXY*r6)eo82d!q*ID7v5>@9Utw>Ofy z{h0Dzk)iz@Rv86AH_iZF6_7<{&dy948ck-EcydVd?@+kG-rz$xyzsq2$3L6hhJj2& zCvA*mAWI-ik}l-=SR| zPVzj%()aKCwcP2CLb+sK$;;~~%4ZrFxGbq?i|cvV%u;8{d10i z={GV;o?80ld>BELyU!cwOo2fS`wuNhh`;k~a$lcufpv!hG8D)fFn*Z*7h(y1zz;sC zskfDy2U!eV>0UU~^YgWzx}`pTObzwWm`wWx0E%Jh@w`BqX9BE`W!{>;|;(vszk;SQL>aicdT~198w@=j z9)4Je2=mDzAsd3IzE^Zs#+SJCkkJO$KBKt<)EcL6S=$w>_xo1D8HhtWA;z)`f|RCXI!|6}OW zu?#4&m$X+7$jAbH`A6#Ekl+O>OKPU?oOjTzf0*ko0^>K<$ltOP~ViD1mJp;lu20uu_Df8&vnVI@NhpFUxv3Q~IlP;W)_ zBIttu8_2H(_ygF3?MNIxI#5>lkD=jV?79jJO=vz6j=J9iYeQs4aC5-|Nyc7YM6gG- z-@I)bKc=ZcUkqXtfB-zqk&{)$+$fC1iVqq-eY%^REK;OEskbpia^ps(?YkKpR#%o- zIXJGuPY5nlFV@u@<_WNY_+E@^G=Km8@$={HsJmzsH@D@&js`q|{uT{8!E0zav9%KL zi6do$s{m*wr5cjT>9m=L1BJHThp{a1#`awAy@5W9kPSFTx0Oi(L+$+VEAnrgiQf#6ySrtXsQ>8OkThMY^aIo*q7Ex z)D$O(@mX0}7?6An))mf#hw<@{$;=1ehe5V^W!}UAhzE8c<9}`g_*$pu=6-aTCj$*L zK_P_(Bqm0WPM|SaUW7#$rv)>Bd=ONKx4R1vw(?mqMkb(#Sy)?>7bzgQ!TbQn29u^C zb`P7tk6{Q{A^Vpb>bvihw0Egb{xC$l9e`TM&tg#g;~KUG-fS4S_TW3Q>D=#Cv)f2* zfWsDC9CE8MW)$&G5`YA-X_#vUETg7?kA!%>`}&B@mvD(+zRUkA(A)Ir_Zm@`L zP^&t5UQ-j37RGS6;*Bd1T@hD!zeD_qz-?j}B!<0Q8lH*S=2-BjiA1>izAut!WdGPd@z^xwkElF_k(eMB*pkZ{sg z2*&9o6HC$2V%Py&+vhJDT=_2K=(zRZ4JcdM(qXM6Rty+2(bAw%KLd#w`-0oYFwn;7 zUjT}D7X(I@vHAX9U-;nI3JM7s!2Oy7UZGIUj%DXMPW4q}7l;F9fFP~>+)t+ppD3ho zseIYu`{Q`$Ply^n4?q7V)E|_7;C6y*KpI2TIx84W+?O`n_9VMky96{zrs2Isr-X%c zZ>WaVK-z?nLZsfvAcPrn>GY4^to|xrC37yMAHX8&Vdx&`1-LWG`=2Ey95K6vB0%!I zgTwLM_7<4F(ApFXeAdPRMYRAFsO9hsMf?&SZ@i!rm=`ffL4ptwiHSP&J!kdx>mXiS zgx>>$I4Piy0a`&>=t_Fy;y7`HQp1@+?*^q)?L60eWtrydw}Veb)r)d*QGnJYzUuBR z)97@-u9GRaZWsmJIKz~D;XrQ9Ja15BPbnlMgnk+fW9o|+XJdW!E?ginwaNGR(^pam zPE5mtRlryDi=ii{rl#h?xq}DV1mpLZS$D6>%ETbjhvBz6P2B<&=rqV6H-LbjzrUEM z=sO_z&H@|IZjalnit$Dg;72fIexQ1=uXZ2pdGMki7`V+Ja;u#z<`LSc>sx1n8&?LJ zKzCDrwd0oM;U(R&nH{L|Na&S{b4U&`s8#(#L)CCN0(%fJ2RA$vY`9_hfNqeV&Knqb zbr(CSp67VF@0pC`7f%iRTu8+LC4e@qM{BP6^XFqIJU~uT2?j5C zZ=+@EM+-}m20Up|m>h}l{=);Mo4mV5cjXWl zaR_k0(aQOQnYS-{-Ad=0BZAHg@gQ&}0l+U+C;LCq6$1r`V03^8LSTuChK8+xhk%sm zu)#Wz**}mUe)`VJ5gesfQ@^6oaOmV3hJi;QuN{JcI4nBg&t2y(zKJVW&1TTE=17;& zJ+QkjT&jeo1;PiqB)d2F#93&uF(}MLa|XLgFRqsCF}9CPkXlGW%esq%fWg~iklDE~ z??(^Kz;U9hn67nM4qPwB&(U#nX5Cu$wZ8tm8Y7PwtSBleIS&v6;s-d9D6%j=fK`TQ z$s$tv=S$l-KcEaHpvLBjiP2A?_r$9>yxmmq{SKko{yno4E1~f4{7^7Ee2{X$T~8&Q&aO2LIfKd z8w)%8Wt<5l0|YraKDcX8jpR)`cm%j2$b1#-`Dk;AhYSmZ(z|0L%vN_wCf?kEtqGD{ z1-Qc1o>fVzLry018#y|rs40(AqL5*IGe){g751)!MMLkF7v z`=|A?f)@+W;M)k7x9^}Te+u23-O_l25_)00Cn{?wDZW1y?>d4IkA5FOkn45n z{;m6U_A+53&i zEf5aC3{k+ewNIkU0A|KZ7NQao)G)|}CI))J=7?XTqx(X|)}4 z6k}+$bx=ifpGwU%jiLM84v@}R%PO>2!0Tq~itbHO!o-9&zZPXS@YT=w_;^C=f>}hF ztc5QgdrSIEbUzplkLaUasnhV@6YDBR?EYvu>2|QJIBe#O-O!6B6$}qNtnh%j!q=X> z{o^HQT4$WLFMh(S2#42Qd&jINqiqK50n&{GbR9eIS$0T|uuttQd+>V-??rhGeh_7p z0nvcxCY`yrw>PAt2ZS6&he`DAYcVk@ys(+)Vcd*Nj^NJRVN!)Cn30urTH5o1cn$i0 zTp}D+am=uQm8IR}YwQK@7W2bTcoPy_<2(WafoR;o=-_o?u(N#W?QJ6BLe?Jsxu_xe zhY=TZ*~v>B;EzKWi+uv3+p)pk@^MwZpGHOtX{f@&E;%^2+`H3;SIB^LMq4#CJq??= zX6$KV-N6fz8URZ?A!kd&e1r?3u|deA2L)jSMb6UNdinEDGH?suCZ?j_3ab85@-nDo zhSd_QkLI7?92n^dYJzMF0u=8_5W|Fxu5Qf8AEre$vZ%MuaqS-2`25f@(nGhl`oZji z1Em|s3$$!uX;}d>+n0(?^MC$tf;VC7$pFS08?!=}g#uOG+q;&vZ&1~S8cd6I$18uB zXR*peW=AIpmlmcTdp^zBW6Pska2Fo_ZMXo1sF=*tDD_+o8sT%BGJr{9pK{u>QdU?&sPDr35E{g zbPYi_fm3sP$q^PujJVvxd;)rZoGK)9n&@uKk-I}_Vnr^QpXeq7=5S*WiW|xcoT5i( zKJXlcB8Uu0lOB_1@QH5hvjM{tUCZ~WbN(85FBl`^30w{Y8)39tMlnK_0e?Ek7Z7qP zr%#iCao-C2^V8Nyk2~?sBBxuMMmCt1Aoqd91Nk;RJIjNY$`Gnz_u*nK{ujYfb5bnRb-7sj> zLC)i&b_5LwfPkr5_@h2&O~IxP%mGvD4`@aZ0bfA81N}>AWFo)9+k_u_aYd<`nemai zO6)@W^$PCu_F-%q(-YsWKFiL&?BQ|2 zZ5hT@81mimGKvSA8<)h`!ay?9gS5jV#fTUwVMCf;KLTO>B>w40kWG9g~8L?#zd zw;N!#%C$O(S>>T0!(w+2AM1z|?`r6Bu$NTVp2vGC4;|VG>Ya4^r^Yb^0?GqQ%Izyu?+LPC445yV?kg^4*6+$@wRe<2@V=n$0i!F(NfC8@4&L%^pfhG2$rq|e)!nu2m%CnzWg z91n*5CHh&gukeyC1NRG|yT%yC-Fx>)StC{H_3QfxV($Cyn*m25FD&Avj4ll!zgK>> zSmhIYIe8Z$S~K8PI2HgpNT}d~hzRoRa9nb)`%R`P$ei&1^lM;#_r6uCsj!(eqpuqG z4h1h1xfNJ<--d_<=m9p^gn^J#cvVQo!LL+d&e~5WB&{Gk?bJ`Smq#XwPJEzi z15$!R6C68Uqx68U6HpAKLM6ub2>gXz2c;9{9Q2kC$V&&3WIYj@MH5b#D92Kg zNeTdSY$cu==O24wG{62{(1#4Xi|9r_8-QH_{fg2LC*8h3uvX`m~l&%oLbn>KUT6 z@wIDr&SVT?j`$#K7@*d2N2cy$?A6>HOev-xWZ)P~;&R|qZE1quPPkgUs&tr2eu0uq zKFy7_;n164qzWx*zwpQ+R-H@z*dOAA7Jo-6&IsGsi?0y}sjy4OqrCg_8p^q#8i2 z8jG;@(BwBU<{oACj75Q_p(J*=JDR#<59X5_yt63?KYdz7NXHT>fA`#AlRiv6wWAgR zRp35&{H67d85l~%L8C@Z#rum%a$FR|CCjAGNt)vITXw$~Y_cw^WcTeCr}Ji!#(fS5qv_5NC$?=n`PAnhS=v_Blsczn ziAG*b31!6a%$&a$x3O@V(-HArw);0dF`%jt5{lF@)-nCEL3{^)JKfIMRrDV@@)%tP zDI3|n(gF=GF|?eNUi3BBu6ZcEJd^jHJ6JAN{7Y&~>!Qg76@sbE z@c?ZmQADMlnW3^vi9He(H*xNvw6a zbw4IJJ9i+ zIDuEJ_!5n;XrIsz1~j4gX8I#u9VIVP$nWRl-crNRD9Q|c-wFRT&o3)2#fH<1*-~PH zkQRjdA7yD7zC_qh}DMo+K((W&ZtYRIsZwBXL(k%Rbkz{W=d1C1H< zdHnb$BBj;x{CDi!$q?>RclTe3B}Rb8l5Y_MI)1q^>A#!Lr}{X|JALfV?-5txnI!#! z0uO4V?YD_cRM)66&YnMCOp2Aq&6Vh#U3FkW4+&FHXw=?RZOW~BPw|goLIPD9j;xDq zZ8JfalQgeAU#5Q$vV|B6e6O*?MRl(!T@dM)v8sdn_xIXW?mx>44CvjlZasTiJyyM{ zKgapbo;k>A@PlYl@w1oa>ZHVkgjr^0aTmhI_c=fqX2<{qVs}6>fZ8U1=Y5S^@^#B- z(W_98qVkrJRKOVM5e@fY?c04njYM_bEu}M8@3-h|S<&NXX0yx6-(H6Uu&iBl^zY_X~v|{+daretc!@2BEYJdZ6MI_a*e98Aq+BPj5q*`1vIu z?KOX6K!@Gud*E82i!CnrDdp>vR^K20_C5N0{(O-FLm|n~Goqjivzz2~Sxrbm(}e0B zDW(Y(F90c1Pi?lQ~l=yq?2@|3PEE8|0!l&JQ?FHQ|Rirdh;Tmy?hzO=N118L~7rLe5=WS zKjYbX+jl$a%~u0)ud=#A%JGQtpz zK79&DLU0d0VaA+|AXoea{y!>?S&p9|R>hzbJc9XZVlG#k5yA;HaS-Iu@$nO(=RiE+ zwQ>G5L7u{~>ACr0Fhh_;O0>D0xm(Epg$x%-Ydp&3?=P`lIncw(|5t~Wyif|dsPg45*iDeTnO*RPZKkBY&KL@b*XEvt!ul(>aeGWpX4BuU<0He{v6(PlF%>pr_9Oxbx#kw}=y$y1H6C z^<2rU1CIQ#p%5RPkE`DJF=Wl``?J4i*Z-U$M(}_k@DI?AxeTpAq4OCOl-%hEf1XL@ zzo2u2BJo3-jM+hpmMs~+JArRh=gwpL9I#kd)vi}#gL!6VuO22PJ~WJ>H$l-%I!|&4 z7TsoCT->Msu1x8CPZcxQOkWjL^c)3v80d%a)Ktr1p$qS>*b5m0=)h6Kh+~q2gEr+W zawI2`J((Yes`}ea51}fj+-0DqH~AFO5ZIZXidIyBP{=Oyq;(Us`}SEIi=j@*Vasc6 zw?9-M?i9d8D;b!8oX5uu$7+3o_2sxY z3}Hk7&-`RywpKuvh;Nu=Wf<<_{O;%G3>2kax>qxbhaxnHL|cArHpI#H*f_*yi#iV2 zYjnAEWxu|C$35+F0SX^!9B#V`46^aikvpb26ny&%&UKPkonQZ}8o1^QTojzjb!ttl zc4%Sv2P!9K2plr??zg=Q#6#Ep_D=th*VwF5Rb7`A+Ge!#n?IZl@7%Ska!_!ekd_i#-XM`*JUD>1Urb}>*b${E(&=~5tdP+V zH}$nx#bE$~J%I_svR>qkaO}7+@)u`V=v6SeC!g{w%gYO>=Iu6ZI>KpRbakLb%f|q~ z8CcZPnxecz@DBadV&TH)wx2ry|2wNVx9p+QYkHSk7Wv(B2jwE2sG!Rbk;xxJTTu8$ zdrd31-ER-%BH|d%UaH#RW5A1XaR-}y@gYZX=sJQ zJl84w9WpoH{Bqy|lh?&8 zy~)72d&s(C~nPm!DG2NEf*nn6_^8myS;NsB>WVI=N5L_(L2cdClH?XbC1N<33BsE$|mjmjYj>RgWEwKV$2aAy_;x&0Fr3y5aPDe z`~gYYS66L+(;N!xO~{hFX_Hy`hyu>zqK5V%$>TnV5IJiVwo|AFyiux3iKj6_nW zcjZNfAw*FZw^|jcGZO{5?5v<>=k^M*1!2UiAWl#{x-TwN`1>PUgBr_c$J!1Okk8Hs z5rr0&srAo1f6e>vG__s#Fa0>mv6&J&;pjF_t|L^RDU z^#i5|JWeJ4@a4_J8+EYv}^<4F@x1(v+k;d zYj~Y!7({dpiR&jh=01D=9CNx$7q%Q@h~lGF{Rn^w2!gy<4l53+_Uu`LWUteiGgf~w zdZjJR0Cgic<@&!>w4qGp`J>07diH!iM?1jp*s(19qVT%!tEJT%)RZ$O5vX5ezbcn+ zp(9U=T~%J*&K)~oSK2+MNS4w^2C^-DaUL=-@F(X|Hz&A$AB-B8_KpI6d#tf;f?+Hc zaCep(&p9$Zy!}lLgP}ud&HVhvah`Dp#D}@9mg&5f`H;6f z6Bz>IP}wewr%7S7B6w3#3!pI*7@r#q%C5VwsdR6z=lPW6WUT5CGjbdmh}p@^LTs>KTn!AC0>RLBTPB9LgaITE;futOE~|N2>#^ z0KDYgGqu*hIxvG_ss~H>_5aNATd0;O_3 z=v67;VG)TNc+lVrQ5zU_3cyBCyt8v;a(iqJ{WthcVL`fAR@b|{J$BxN66WA;$jE3- zOvCkBR1_7RQhL%6BWR0v0Rx|gMdqjqh6JF**+w(Iw!W^KS&Cb)Qe2{zZxWp(B4`Ff zWlWP!SXx)Hfuzr%aTaokFEX9?h)UM-TT++3ru4adQnDen);8u8czHxKtgI@wT{X_v zaV69;ca4B$+R|9qG0dugcl85CSc)#LS7$hxz}AgEbqe7O}= zt$=HooCqnvE8#)hU@(BD@#Hxstw&YmjHC9;!3!M)8a8c93FH8V6s1hNT}Q1HHhc3+ z9sCiHE^s15ArCSH&!PKzE`AS-7TpI9U7xMDj>*>XIygD-9>dm5f$FaL6t;4PZpcWp#{@mShQBM>n8Ni&2`#-Q3WYOWd zx>N29l8GvU;@C(tzoSP5QG#(XR=xfet3a8==2eURC$WR3NZG{xFP%KH&)1JnaL$mA z&AAp0Aj7$MY^qXQ%{u=Gy@qIs!G|aiirxfRrJng-GI`#zMT=g>M9zd-C)U8BrJZb$ zYE^Tss?hqc(Is{8BLd%>MK0Lz_t^h%J!dxGu=>UEJNT6JASqM*9uA6Z;CUwu*%E~d zZ&PdvrQf7mp%{Ra(bONJV_=~Z`OjfT>IU7Zc0Y(=m6y(QZNA+8|UqqEa zakaDVN426oV1ONz&+H8eEvFs1+2QYR`)nj`%CsNlybbd>>(=Q3Gjot+Pz*n%sI}f` z8Gy~A9(9biT<&1LTti=7 z-SoCjP+;H!Cyn)Io$6$4QS6OHK51YucbAo~kB>ET(6}=n;3Y6A^fY-hje{O{j=D!w z+Pu=|XVxZk1L%RR4bWa>I1gomf!^}fNeoO#Nr6%|gs zN58AHI}90!vqC)JAAq1z_*GxmPrE+13USdNGgPVd@dXt<;9Mb*scQvv#vcBZlE#@Q zAGth*;AiR82@Bv&n=)qBw4s~ZmLv%_==B5+THwn$zkPMk?_1=|fdsT-*yx!$l znOV5Nlu?5~H#t0e_GGf8Ir1e+Lhwtx9SEC*zCW6$F-*4#s1bBWYuYNNSVWu6VI%(t zge?uQSgg^8U>{fT{{19o%f$cD`Gr$6LYfHZnTnIA1&4skTQMzt3G;NePENBT^sg-V zJh#zh{gXC-jko}mNj(lUZZxxJ(d@F4f6XG;Es~wRCNnapdYX##I(-ns z4sZK5ZPKL0nGkAZSw=^#!`bDYh)DzQK=|5u^AJ*Lt(t*EPY5G1KZLQNd4Y)$TH@T? z^TQkqJffS@h|?u7Ig)g8|Jg??5b+4&0o}l;f7?gf>wiVgL^nlE#%l(;h1ZWQ>a~y^ zNE0XC-hDJ?@qZh*#xk&vkmFn53E@7wJO;R0DYZKC>aLPm%Zo$0?iI95G$9NaN;)cF zSAv7^plI-A+7-%Kt~i6Z<&6K#Lea#dp_5>W5a)BCX#3lQCg}ZIXn==cVBg zFLGKk3P50+UfdxWXhD~O;1>=$V*y+=7lw|e;O*OQ*?K)%bhc?#b^Jqboe}$jQ+v=R z!SghuR>GK~J(n3BFM4SzCXrAM=m61HE)FwKpT-w?FFH9hdUK^6qadAoSZ@B1`NRA_ z(|f-)REG$#h+>G*=>R1ZeY64Fz@lNGX`fh)1aA=zIwLlHSWdz-(Pa?;XzMfhpj5uX zBhVkiXj1&!;aUS-!kOW}n*c?F&nr*ns;1gvvSH^z8}u4E=ys-^xP^q2!^IE)NX++{ zTYaWn%pn2&u@ILbM@S&1>(LJ!)mRUvLy$eW!qNxOvaoF0sIvCohhfZ_s{63P44W0J z=Wq4}kz18n@FC3NR@h%9d_>qT*{ei#s=m~W(a`20_gKe3!w55&gA#=u9SlwZgz@E} znO=j%(*_oui;wJA5)Ntut}1R>S?6xjCy_f5bBF;QE;V`HPun>*p60bm%%3wxjFBnRd-r1WpSPWw!Cl`=Y-h&`GAbG` z?j_N^;hCd57;~VZMPjxl^}9OV3xz)M`0}dMm;Rbv=3-|oP7jf07~I?zmvd`RPXH}I z9x<6kjxtzZ|Av?#P!@Ry1U#AhJdQe1w8e7^?nfUAlwdh)R<6O`(L=NT)&EY=XrzQ1 z3ABuMjHYwuoH;j;&SUsR zioGqYhQ^RFI@9c(9UW2j%X|RTcAr)~{Ide;6OfLG;z*bozVhP0mQIM)AFlXnaP=Oi z6$TKad}8}Iiw$XE6(d1TSm(0;$dTJ9Y0?`W8T`_Il8IE5bO7GI>jCy@u5c@0#~1CV zJYgOj_j=rtVx#AVht>*E8rZ)P;98WvoGJt+MkgNsG4o@9Pl0nFo#}Fvf-NuAfhyqXl{AKzv@$t85$S`FQ zM_qm{ahUBgvVnv_Tf1jFVVJst_n397Sg!@v%XyRsi%ku3m}Ixk9pc02`<)pA6*YUh+g0sGFsVaPtS-Iv0)(r8zBjm#$q;UAWMSx=ofK!J0^(r%94# zg>=FgKhFV+Y)IJ~sQjK?TG9;R3SSN2cNfIx**P@0LWMJ+L1aWw{k=Z6`c>iT?%$q$ z+dJM9dZ7B%!3eE`2MshA#x2b{*sZ_Q@ynC)POo{j-gWthGphsD*R=0{HfTiLl3NRR zU$Fi>T5gz^i$dduu3N7SQ#YA?YE}Q~nlGM&P3hFYvstt9&E?11LNANXa7i1)Ak1Y5 z%{OC4cvMt&L|A@-i4l`3sL(lj(5%D(F~vgy?BRa229=FS=m!j#sGDVQ`j<(cc1Wqf z<{X(Gkg0x|$N|kpI0L-R(;2sL;j!|5#@MfP=y3Vmi2Su72S864FQsbuabrVT<|Z7x zASzDlw?3Ogi36dtx%PcH@uUd%X^ljE(j*Lpv4zEP-TLJjH~Ocmxmpc)>!D`0Vr@gW zy8fD)Qzu%zx-;4Lyo~PiOK!m5iByxc%!j{dnSx$U5dn|$BGc7luq9wkn&X?h9ia@& zTwefkA||C(#8bAS{OgJ9i3gQZWmLP9#JC z<~eNnl?5lg>lsIQ4S|PBMe*WCGKBH1h;-eJ{UB-iOS>{{Lc?;K-mn=&gpm?A?MG6Y zLe<5_;HziOo!d=x=P#lRCVEIl57iohj5r+)Cn9mhvZLwW8zHOO5BQS)^<}vsf-i&_ zbv{!q=ML-$2MnHtC+#$6=j!kkn&z6W!bS62Y0G7Q2$DE{jpfFOm)F1>A(3Q34W|7d zW#kw0NA}sdj66Jm z$Zlf2ikaKdqunN*TQgi{e+aTdlawsc7&wrTsNzpYW4qPVHmrT|qr7ufgPwJRu*a5h z8>S+6`S|oE6UY+?J$n|cb>V-{pNsD_YJBh$+J&YdEwXZSA2!{T)Gq*3FMgYR{td5H zIArn+^JCGoGHIMiQXp$^ZpC;?$XZhn(=K63e_Y*Vi5H2wmohJM*J5UVJO}7>>T&(1 z$~d<#=-ow_ja(pf+xqK2zD<(L-LIdwj@$bwQa#`K;x$7oW@&BGA3r|K&OOJkALfdn z6QV3HukzxRJG`{Sq@)DL!bZ4r!RNA<@n@mlaP9VOo2runW+}dIFf@1MFwHP3Rr?S( zRtUzOu4r6UR8m%^(>w(21q3}3)%0(6P6K1(D4Ss}w`JMn;r6%A@K^FRWaYvZW&? zr~>dIVx4!bvV!FWq0L-?y{yiiv_FoDeECHB`yN!1ep_$zV(bRz4SDAR;gjv;L z6DM4f9aWJabVxKYii|(Dsa!W~M4DsgPV=%nw%PW?UWY*4?nd!+N+RIn_8;a`%*v1x zkPw6!&?jtl%c5|z^Wx0#X(BhB;btWauiSPGHYy%a+PR5^4Cc5RgGfcu6tpK_v^)i#OsMd!rxE zMmq-w>R#&XSMJvPQd8F)XHU&+RE6RPa_W@Lq`r3vG7Qlg`%NK}QY4Vo@P-r>6aRq7 zt#>D1V0$>H7*st7oJFb&BhPTNi2T^CCx;Y0nuz5o1*WPi6p$$Sd@U8elBkS>B11#H zN-sJ*cCeU|5YbJ;yQ8+U%Ht#%gtne0UK#eGp@SHYi| ztL?LzdqsCyP*(Zn%dpK~)M$KV>#~pt=zPctK(-knBXz!=+uU*Nq_OV~Zg^OK$}(DW z1k)_wdz|GKv(Bea>xF2EconLD5h{R3NrT$^0}Mo3nYqEG`66@&*x~H4uKYHefO8^Z zVBD83eZ4zrMC;C-+>O|O#joW2?*sW}R}lg0Mdh$oE+bvGYyoHrTHM|C>C+ex90uWK zkPH-1@1uwQo;erd-jCPpBnE@5#Sl3iwDH1d%SCOYTL>zBOCW%dQ2J^vd_JPKUz=ICX&G3GX3ja zxC-W!UXMnZu@)(9$f?5a;O9#(+Cn9qevkzr2~NdL8Mm-Bx!JQ1=8n0{TJ1gu@I}w!>JX8w>wndGZhE13cFqd@48dPfU~|Py zRn~e%++GzoA5*PDeRQ;ovVSy~`twpmL(kl1U$g#Zj%DJ+T}nYOC!v@Zc@u*!ITO|} zb@aK^yi+Xm==nfe z8VI8Cd!}nRMI{}432-(yp$Ol%A}4xV(sy4?RbA^M%Ol&%6nz`HjVVhm>PtoWdm*yt z%7~F&v=@-We~YjXYod^7$Bt!_FPEY}tRKP8lx2-9c?YL=LNiHwB*XfkbxOI9WJmkk z&&MvUiz|KHv z{S*{G-U?VmNg(lxiT6}bF4LNnubrgN=K4g;IhXV}AGo=6OK-xfEEN_x6-vtHXa5D@ zgsCX|5p)sPJ0NAG#|=(8jKm@Lg89OqhHhrm6z~ngypUkwm6*z$K~2G#C&X(fow?7* zBJmW@?%vcM;=;an=&J&_gpAI+w$Z0i!{6n(!&X^*u^?~*yCYh}=jhixIi~7TZ=Gs- z*W+Q5;W-Eb4-XI9vW1_%tQNcIKU@Vk+x)dBOFw?Rjx13Yh%Z{Cb?*?qo3c&%Tq)Z| zx06t=r7toa3?Vs<23@A7vn+KUq@%nc$G~#*`E20(vHns+G`YVKs2 z_6XT(w>NMk@)f4sy&O-rYT2?6HyxRiSOlll8!}L~VD9>>%G`MHix%~5*el|a|Dy+G z5pu{w^ez3epHnFTJfP64?vMul8v2CwRNJDWq8y)7_d(ytC^jMyqjTjxnKp!&<+KS5 z_n2sQBE@bWwEg(;ZcroW$xl;>2UxkAM<{Cl8pUo9aMC>wj%{O#mC*5&>Aqb1Tmder zbk!^LE)A57Y*$hA;SIGT;Du6`gsMSJW9J{3xODx2&+JFR@@w?yz2F(J5*cn}4cPRP zdGGf)q|I}ivFl4}RX>8HSh05QqB=IT;52|wWZ{J%zo+x>O zLfW(%{1)xr@0t_&BHKv9D2eEAsp-VZw!d;xCc%-yZyzEO3Ntay1$}mhk9@Tu#f*g*f6n>TAVh~`rb5AaJ17jNX{k0#84kuh1#jIeeda?Ak z8dl$1icuVBMl$QviIG&RNuU00tU#5Wwfiy-EJj8>0sF_kkkXNePC-gJ#b$A(uYtNw zL*>DRE4d|BmQK?~CORc`5)uPh=|shg-paIkgR?U|(6xes6Z=bfvee?Y3W^ zMy37SeV^R!67Tk72vv#c{mGn3LOS}`3{WYvRZA1CT4klT#nzBkrUq|4P<|mA>9E#< z4swFxQA^;O0q5BiN-A4R0}wzX)eb*jhHbH4!`#=G^UHv#_mepb7y8oZ{q;f5X@)#4 zd!>|jkuP2on6L9J378qH`H4`j&HpK&>NkxuVPu|E^Dhq(pcF#^LW3XC19PxR)DvI| zo`XJ5{yG|(xQBaWuK2X5FmcmZq(W0{s22d~nF51R)D}1hiB6o~J?|Fm7|v82m+&vv8L9geQN zvVcZ%+N=;C7n{K19~rUncivR(-uHnuw)y#1hE^%#{{7XH+-9izv7Eq@o5st^`cJKJ*DIgG&|{dfAV|Cp zFcCD;c`%A8a4>-=MG&B-T=?O`?w}wsVi1;`HiD{ybsr)NAfXXiX^~JLH6-xDu48*8 zj!Pg1hbc9gAlUrm-HqtdND#VZ+pf;n#Nw|9P$vEa*moIi{c&|`7GwLNKio@5HgL5v zC=1hm@q;}|7EZ2tpBOSHlc4ggeia-2D!#aPtg|3|WZpbHCn=|8fPpCSBHqc1)c~Q@ zoA6syRMCd_5Ob%-^S)E+Mh#n)8rT6Toi1eo<*>t@fPFx^(4+vy1}iQOvbGtdUg*** z{_04V<;%|=7>QT%o?OR`pta%v6&Gg~KP<@5ZNbxssN7|@v$Iu#vkP*9`3;$qquIpL85h_rR#M znl0_ZcXU8duOXTinnYS>)yPSeRaK{xlU<*ww^Se#p{WC*^uEl37cE)o@mm1j5*h)e z1y-C+1=mD`PesaQXz^<6`7U~5M-G8TL`om^1jz|)0?l+EC$H)dC}YkcoU5WkGw~tB z)fX)apGPM4-Byo~H%jZmmje~vN54ehU^P3oy^jej20w&${?hz=^aipr?GBr_9w*(u zr@7{sZRhKb>(^UsH2u5AWZqmur5|Z63C;(`aP!kcbE0)$ zuzv!bI^H)j6fKPcQO5GomlafXnBeWg=o@b(^j_o2Egvq^&!~f4`n`eLd!|k&9}}Tx zwX}z>syA$-|ss(M2_?p>e)rlgBr__D-tl(K)f< zRx@Qo4~Dg6_lUMOdZN7B1I!q$0d+%1iSemN>SJUq;-ZT1o;E48yZ;XJI0gqO4vF!` z|2>3-W76h=Yy9JPPxcOMU{p7aVRQ)wc+)U42>&1h4?yoqUAo+%@E2-)-V49w^X(5~ z*hJMY#XFS*XTg`$i282|j~-%z{>th5mp3lKj~Ms^)VwE}_QGnB-#|ruj7q~VXS5K~ zB$tdWSFkN%Tay^df-2Kk&a|*d{`7A9M75&3{u&uEZ*kZ_JuONb=#l)oQfJdE^LUPI z?JY07F7+BEJPm^I9t?%?mT@%7&d18Pl5q_DMgT1b*Jc1k$&aA3h+-%V=C%?*b=%cf zTND#49v~|wt$0RXxq4M`uZEC7m{@lV&W?7tKnD|2|FZ-Q1tB?u1Y$NSJjz;$A&Yr^KSsb z$ZIW^-$I5iy=XPs%yZ%2reMX;`~RK>M>Dm zfz!UXL5LRqUbJX0`Hwi8_A$YrTjknz_c04n)x5p!2b1(<8lw5ug4%48>DuL6Y80s z_9b-|u~}pD=7i{N<4?{k2ZSm7^ywbgk3))>U(8qa7x9XThys?AThT$t{wu;3Kn#s7 zqb;!9JTdKK|Fmx2d@%uoD7NnNe+HrJI<#vi#5SZ!$HpxA*hA~XSKbpmAv}*&)v}=+ zV1fppLcp9=xa1WN_fBgrm06QcfF`NF*b+Ty{P@g+#qE7FGor6DVH0g2(hf*u0I;1D zOcbL0a?!$2ThJ`ueEG6_j?VL6C0l>lTW)^Sk=_VKOIF=ehH*g%E*#_^8%=of(4aC- zP8lE2@jk^VB)6KT()<>e=1&DYl46Zo5Wzbxq<87I&{)Fa(R`$xx)!*}aZrnVh0JcX zr4I&fH@hXSz$)a;5f-q_l%d>$v7dbNzi;53EK-9OG9@ji0X!Q>C z%X%Y_CNtXO$9vBT-B)OU;*NH2?ct<+f8QN1EE0pM4yj_r7tnD!ihU zRaG_gXTU+pfnvdu<1DfjuIIP|DM5{(o^DH8lRl9^Le`>G;GweXcJjFEci+YnQ|UVT zDEBFU{^?dh&!%TrpOu<`0}3$FtNHGev#`utuq^nGB1cxUFNl1s`fQ^!n9Nw5wTO0n zKI~w(o1F&?>3d)z&yrfki5HBD1Su-=yB)lGSa;blJpn}8jjS*E``cqsL~NUs&RG`2pjZNlT0bJl(Gskc zRL#HPGsz*sDXIx${0%7xp!LzE{NMD5d`TZFvjegLjB2Mnoh?yKptL^2o~Q;cFjNF7 zf?~JFXbir>I`fgOZ)8~Mc$zeb4{<${u8rX@(iS=6%z}^>edz$N<@&q|a@$-8Kv0}J zp(m?WePue@o<$kU^wCCg?P8$JU=PTTVxPjHslaWdf(d2W=0$E}S%4bLz9?BCnUOf~ zDXo3VS@1)FBh&b_00~EjkGMBtnAxU1m)b9RXSjPRWb7rR*pZQ~Jt#qR_4U=}x83&3 zCXo>)o?K(=f0yZ#q5T2^CID8EWo4^7MF>v_fgwd8L~s0-uLJpJqJiRhBT^F?B_pT8 z@vu!`$&%uj5-pk(o_NQd4?!PAgL>u4qlh;>l`PYE>g8d5hYjm|bn1@j;jHWXLUKW8 z+<(3I-8XCbRzn?L6o6_CtzER^NexjX5ZSR`aImy7lsrPf@!=3WqOT`UiQItcA4G~O z|32g%@CLS_E=E&rOpmsc^|?UkG=44@dn}Y^BvZ~1X#KR?@R!N$FRIs(Q^m&Rl7I*K zsbb;Ej5j3S`ngvo{^opL3L+W>+lC!A#EPBGWl(3ZL#m5#JMAc|)JZ}1qyUSAwca#B zvZajQ%qS0`mdSjn`&TPsSA0*1Vtv|L}?Ey2l@zE6b%kq?*?CzpON*#CXwWtuBr`Baj=m4riAS!~ zDD1*eQwHt2PX{)#@C73Nz9kjXGQv-R*mE)@-f>4!vmtxy&j<-TG$1dk&1;nB8uKo) zy6^#?tjW%5elG>TAT8vRDczJ??KPmirmsUDGKLuh0@e*A&A^c9`zriSE3+gI$dkcV zRsYFXPIq#SdN4iGOyk~9t$(gj8qh)A1X*E3kreHSf5H8)N0oFR)$|zl&_kuRY?MNl zAxroQusGVg_kN6uBC46T`km?U=&N!bt3OQIL{mO&D>6mG4`-Dj|~(#&fjUeBHuk~ zR=evqDgyvVWU_yj7aRs*1`!(09%3oPq0f`+fBoRbvi`?*z4egh3z=Qwpz9AAqD(Ep zQ34wUTEB#rQ6$S#roc6^!|ws-3Ni#yv8>Z|a=N7JylmMg23c${=0x`QbI_J%k5=$& ziJSmR+py=PdmKwBg)+ePye-8y4Hg;yCU7cMAog6^CNKCuH`z%;hk4N=LHv2Zl$|$Z zi$CT1^?>Ws0A=__k64LV1C$&hj)xKd<3)r|vzC74qxVm3sJg8svLEE4GFxD7o^bk7y6%b3D2`ZS zLH)wXn>laZPNvkUDR@{wE_XjazbYpWg(B)hvEd`)&Wo}PgCwH?E>=t$y}!-zp@zYb zyo41VG!xNy4)^cIrpQxDh0Lx&<==x$+^uR&wajK8nM;M{#c+Y+eD<%DuesY4n#mq4 z9i4sjE52Yz5t)Kt@8D1nlRteHDMGD&Jw=(>5=Go;m(+PR$RAE z6aomP=sdjrt@tFyJKq612@n%DyB#aHjecG?63ar`P{>PQY+{s>4{^`zU1{>X%S(=U zC9k_s=(iYr1dA{R6y!`{7fAW^d$~G*3q>9x{vJ@|a6kCF{K84ExFmkUqTj2q2d zd$7yUGW zpk1;8QC(Oj(RjnvgW$>DWh&99S5~Sp*u#CegtAlIn1ezWwitKl!`rv&r|rs`p{V5u zk%uYeavApK#xPAryRhhKJ(}iB9tS-g#aB5!9kgeYclLu+SfcTJ8NzF}Fq!g(l$HCm zdX=w3VQrD--W{tKT0KZcSNvUU7ccgJsp!3B;iSfVM$vjO>&}^XKlR|j$ON|^ak?tY z?d_ePq;GEDwv8OPtj^J`QyOS*?LB)y2cg`NA=o~D%1{xdi^7{XJ)L(wU~Etp*&z2L zHY46lc1#~Sioc;w>0;`Y@8ND_-)M{KsqtS^7-nK1TNWJc4P4EkS?nxY0^C;lcx2aD zBnL7qNF#vCk@2WtIynA;<4ACosQyQWegd@`nf?Det7$D{>}~n-JK&bwHXfbq_v4VE zNgz*rOkJ^H$H^L4zNEk}+W53{Yo|~$LS2DWi03RwCg|i66eXCm$T%_C6-Nf8x%60= zSyCC$qT_KF56niI$f)EVldXC`G@&FZThMb+>k&cIpXM%)Mk)Wr2Ck71)m-7N^BH3r zeA1YVs}LYS2@tNNd~AMi^4SNO)J4oF?}kMLUk{o8begM^?s(U>nz62*9#~!iJX|RI zCU_;^4*qD?v?;PCQAe*^%1PsA5vk(c>uL|)wqtIa{)j4XkM^|&PaC$mHX-OU@&N`3 zg#%>4%kGpEaaC!zLiiaT4hkTiZYBg5Xc1s1=nA1smPofeA0@-YU+(nh*ABrXQ<(G8 z(&?BW5T@T?hXO6OV7`L|(*qO%Ai2=V$Z=&eEFFia^(LvjUNJyNhf3D6bJqMe*W<^L zzj(W{rv|(cB#h@_>M5rmZjZ(x4A6+_Y&tivCmYxr1fXAn%3OC6!!Yv7;Qh&Y35eVp zclD~!MZnEQmsaQ6v?@tHb7lvhhXE4O<*Jv79qBR<5AiA)T%53J8l{)GbTIq}<;DX$ zzhKcu9cpGETs5Y}0gX;Re|p2q=dU7{6NB^<4#m#)6Wta~Jy?e3^Vf(5d}zaUFGuDs zV=e3rjHEyj$xKibQ-Z0&4)Bk>R7%5%Hrb_3_FXqK{ zUbG({x?xNJQ%(ai(?QFOd`e0Xc#?IFJ6I0`V~}cqZs@(J8^bI3Y6GmhBayK`skKz|v~p-f}G8~}<7NVCb`Ra|t?`N1Q% zPG}5y2;?l{h9EOYu6O}3pSmMP0F{B!EMC1@NLNA&80CdwURMKmWtSiQ`1$i21`}mt z3Xsj74Mz|Va^m${j@h0Xy7Wz^EZ>tQKqG%KEezSK$ivULx{=n2$AOQMw1||TE!86_ z4WLL{m<_=$DlKH4b zAdW9*_!7$_4{#kGF(*u%#PJZgYBO4souphmZHxF`yF4*2M2LrzUnPiD7asx4)%|2~ z2EY+R495*qE~hRuGrNgF5)B@69iB!_cYIw16;T4j2?y35JR&yRP?l#zUmHogiRh#P z-0Yj4Ppt?~;^N+h{CXcUp8^8vJ!DJs{2NvXFkDU?ZI+l5K5~ubkLD~Uh~E-2+GXRN zx*bPjsp@+NU11XwSYOTCp=rP#K921kyYEQ4gC1OVvXgL|HhFE_ia`C5C7 z9$!JGIFL0^T2{YEB!Q;OP&KWH_j5rX$OKdq^e+;;X)iWc-XF?v!Qk5OAPl(4>%Ln2 z^wn&d3zQ?AwDx-ze}pRos)K_`s@F3#%4U><(%sYF@8qn0WPMT;gPn_XzEEaSUdqh% z$?07whAAf)^!~{v-a=Y%w$eX&mvt8clG3T&j_34D0Y8JO`KVm*jQJJXB0s3a&1s-M zuM|-h*%@h(Br!z9e@8+6_7gQ60ipadj(sqW6?$fe@)GOrLdGYKjtSPj1(MnCmN976gC30nKSo0TI*Th8fY&Q zP3%LfSDSt-58abhFCcKdTltSqpmz-KPS0}XJ;@of!*m#g;d zi9UZPicY{pD8G)Q%E>vbQZqjP2vMzjb}>ml!|@wh#&j+rMq|ul34lgQo2Rv!Z0MPr_{E(!mN=)?Q(v${9-MTP8#flw;b8%JVEHE-Tt2y<)Ce&Mnt==8IZB|Rh=}bGMTq!UdWMIHXPdnTzX?c*^ z?MWOTe&&pfnx8rIc1B<)meFD!A~uX-=E#p^VhK*E=;Ozg`Xdx-FGnG6AOy(h0-;Hu zO9GmTjwQXgH$frvNhkVRb|U|K(WZUdR%do)H=eos)t48xnG+bGZh7V48>XYww6t3D zb*+b`Kwe1b&&o2V>NpsJcM*(0yRPk8+U*Ytyq{CP-*N2Zi4#vGCT@A8@(LK4xW`24 zu4soyG)#D)ipHbwzT`KUwS$@QA+uh;KAkgpYhCRI>VB-Rn^bwa@efpBWCP>kHXg9n zg8pDT&TML9L@6tyQf|uXzLhJ__nHYpMCQLx+nu*}owo%(RC%#ue zmmM7{zkapFAR!}-u8#IQgZ7$20nySt*EFM*{6_FC(Zg|kWJHvyNU9A%YuD6&TO+dj zE{!hD*VH%dVs?v}ng_w7CD4_9xY^5pGEnnAU4<1z>DSd<)pLd>R5fU)VQAyzm$kNY z({#d!_W)U2hL;rwV*BMcHgs3~+nQUo?GGw@UXNGkXWK8Mj()59(PHcQiJw@?Al4u0 zB@{i}WwXnz5-X3$$Pf7=g9#tNNM1pcLIt-4RcwPRmc_ZIP5j5K$JFF|ABl?a+npuM{&0|Xr;juQ1>Y}gsLjZ{wq=6yK~MIQMsqmCvPT^%DN z5EFxxy{PIy=I6QnGWrXWl*}O1JpJ`O`UDw`P*WDCeY$240kLSnqWlLPWu;)f?4lL) zgyMbGl@vkL_q#8eI7d-a=r1+ z+C_sGI&*;G#S*PkpdyY@j>;~|!zH|&~Q9g8=ygizE;jw=m7=Wx-mhupG(*4x4 zbXt56N6rtfYm+;7)O}%(%`pJDApVTS)p&{q3CbVlt-5Yxnan`Y-jee`jrtrf%cLcM zf0iVJ)TUv9csq;PcZ=4oL9V0zYgqJPT|RU5>(^J=|4N+t({{14Vf&tg_PKja`LL+x zBV3Hr(&`UBXImSM%4;Gwp|<7K><158_H7944uV-|cy#K`+WQ}ehmIIG->!4f_@1|1 z9#uoCu&qLjz`&DaHw|PWc@R`cv2wwQ{0Yw(D+R>ntZ1YT@p}J>XJ78ZOT~K7o_T)Y z_-L1E2bR802892;GV+@BXH;A)< z#vMiHtPaW@;-}O+l=gI^4Qi*)6z{FjpEIOGmbb{91F;QIq+jw7P%UyG^i46c2L3u` zWOvX?JOIQ-A|`vz;NDZK!gSn<4uviMr!4&@!K%}&){PZ3RO;vhz@SxDdA34IgduwZ zoFo15pu}F-h$?mKrrG(ir{UZqLH_smuidrM|4DTBn0{)SCN)Qs9#vCli5CO(rp#?* z^jWF^25g$Uh`N;cY?bnar3%uGI`aO0Tcb8%Q&O|^?Mu6K3N+(9PWUz#e zh&~tSHRR4Ruikf`)9ir?P@3eyf9ju;29e2SiCR#BIL?U!8y_fi8Rli4J?q|0pdn>X z;}0K`so{A?Ke)ElRWH=Lw5yAurA5jpoLr*&E|^MxkD3M>14ZBSt;ze1YMm5FjC9|q z5pDoLAH1l%e%y$}q(tv!pB%oXK=jkD8$ z92m)KP#3U`n$x;nHTcGs?7arnoiJr+BMc%ZChx#hi|q6%q`l6W76`r8%kr1Mm(3A33)wS+#JAmt6Inu~XX&KfL)|-R@??nHY40wis5CVi zFHRBn?it2bt}N1NMtF+%>eFj)lAAvLDip9@Vh;XqR56*fN?-)0do_2IPJ=$8TjpcH zPp>U%+dpUg#}i$4f7y*jFZ02JHdq_=`>oh!7-}NB_hM$fvT1ew6W9tri_r^KYzGuX zyW0oqPzFb9Z2_FYh~XMTp%Q)21GRYN*mO!CY%BB=aO`dV;7!PBJN;3k_AqHnb@u7` z)qNPx0P7$udw8y^ODXoXJqYcA9qo_0I>T)Un0P1Fs17QMADQ4tYJjY<7` zIF_luzDB`>gG>m~fRg~8%64kWghe5&G4?Pw??TkcaH9<1J6i9rcSj{!$h@n}rSel3 zEL=#1{VQ}=@HU>EAZ<6h9)@o0fT9OI2f<*_miy~!k9@i#l0Q}F zN{$0}qJWlOO;dBb5lM~+Eng71(J+`LE7nVVm)OaF&qJ*-(Reg<`SkW@76qx7F7Dx$ zsORb5O?6C2DimeM3*PcG{xS6m+h^@$@GkE-MK3XDkJLtSL|^+<1LYA?bd%EmHFCzv)`4d@`j%Z6&_1N5mAsiE8irAt?SGkZ<_-eAmib#G0P6`zb{UJ3Z z0P93A)zorOQ&c%TNtkV^OLKDeM_XaN(U9@WojaSkRF~rSUKae#M0O{OCXb(o&~nw< zrCS>eY7ydN8)1?bKO(@t(>!{(FHo>uz|$XAcM6Ya^)jSsp+ZUx!^{Hc6tOhgD{*Yu zL1R&oJ9<8Xq3cw49OAFAph*k z7q52XWHNs$-6Fm3qGRLm+QGQ05BPvRfIg$was`SiC#xv~JZ@rSpEC6poG#dcb>Rl^ z2MQC9Us-;=yQ=t@h#LgMWhP5dxuWToP9M9Gn6y}?^np{6LjOL9Gu*%Uxdgjhzm2oH zB9ITj(w`^zZhZbb<-L}T18nA7Afeuol2UhY<1gR@F8_A;K89%NgPV8Kr|$oB@70}t zKc*~GHN2Py-hPP#k1V};ix!2l+8Jk5D)#(&D<+5M0c(iTgegDQ&nvC^>glyd5lp(} zoAjsDLX4Sy#TuzaO?PTUG+Mk@va8J%E z3gjRIfhZ@TFd2$Zpi}q=&W~&p6on*>EHDm*I{jqVppvBfg>-gYo~!3{8X<>8Ds~Vs z+S2mXxy*ZqzPRejf$aFM@lW$fP<{?LlS&tFt~MG|KmakGi0sKmNlEhs``U{Sl3p=3 zG=F`E`eyIW%zpCp>1|vt58PSGy%mQRI3LG*D2^#n z=q0H%;}a8O-~tHT>~dPlkT4$&O~R&{!ktKse`clq6cpI_^Jl+SM^u})X=8eFX7gY# zXEq*)*$!_ASS)R&U#oXb)~sLuaM`Q88(v13+GI?VMZbAn@ zmFcZL93O0&?fR-2^$42YMAg?u5#YuC0nXj2@ZTnnn?;7FM)rXIfltS$x`;V4QB`79 zbTA;`>W5JOiE3~>$V?^Z05L4Z6_)NsSiatG2KwFMlfISZrPwRbb&6>hv>roCGN?mD zhJ{D4gw#oUQfyb(uXGNql(J{f7KSt@d&}BDSb=nv96B)CJTyPQt#U$_slho|{rVC> zl>PE&83r3jQOWwEC?c{PAxqtJtpETM^qe3Byd!JvsUHC`WXGjYNJ|vKv4nM4!!yz5 zB5?Z&k@wJT?F2#LQwjnsjV%pV_NVrn(q_36^al+ZMD~d02Gg>{6m9mKs3wbPU}U(8 zjKKc5_s{d~JzCVxPVJ+-70!{!BCM_xB$U^hDPK*A1p=U*&@L zYD7eYEG61&Dy!S+0W<0ZZuxD|zXSGEB)1G;uz6H<(PEH#px3uznkU2;;g0echQbrD zn>Y)uGO@gwCW{(bMsji1iK*)CPc22H=I9u$`#Li3JxHZB{w)N9Q)cJ!t6?^-A-@-` z5omb(KK;fiw0P$&&<7@2pv>&~lpzqV1xm{Cn>T-V`<(T23DSxQD^{HAl`1_Dhx3e< zR!IBYcgNyXJ)#=wgzCJnA1)oD^T|eTep7m686*%%WCjW@=Q{>aQ@HR-71Aw&20}}d zgv3x&Iw_R>zJ7|svrBRo=4L&)kaqLEUbuLIz#RgpI3bx8$8}P6K+U5rdlrGlWAJhv zeLQ61t4+nN`{o-^&jGkL8M?s(z86&}hJsC%hTP#PAace%DK9(53mi?$Kh(LcgAk^~V^Q$_(2zwvWd zsEgyQeZ~prk2Iav&R%QVLuUG`<}gnxOQo@9W8(uP1IJ5Nm|*mWcBVerD58O9`WlSk zcy+}&C&zK5nBQ@K5@PWM{YXvcHaolRP};Plv~{|LKB7S;duYz#@g%5#FE%*2Sq+Z_ zvZUlGP0bFC3m&Zb3b40_DLhncppAT=WH+9QoM*$OPBDcn*{K~9zPC$EvDPb$FtY|7W?CEXY#Ylu_ zogvEUrjk38l8!N^Lq^455lI7miYZx@;By8@88G_w+62erO?y8Ffqo=qpUoy7F%6Kllgs%> zEBL|DPMMB_s#%Alr{|aU{a9L|SST@=4RAq^efadu5SP;7fc@72hs5RrsW;MHgq=Y4 zZE4?8ULA%cJZWdoG!G3V7+8`2Jj>oAMg&T=ur=;uD%HUz`~;8|T9e2q^Jz9#&Pj7s z@=*xBHte9D$>xDo3EkT*_I3{o_!hb~-@NytZe8x?JgG2k&?Kk1zCzCvD*v|44Ij10 zuuNrZGil`8+U10g>TCYjhrfR>0mk?=@j`j)R;`-9T7klFKyruUMq7G>kLiCf&+q&B zv|0_~FBal`I49KQl%mXl(?cJ^S?|XP8$c4^20;~3fIuLrKI^R|hn|V5ex;v)q$Z9} z{Z;!hng38Xy33ExP}W z5tTm~LslC$K9Hj4rokHMfBvx?>`X&wYHogXaouH-A`GnPNHBxKqWGlVItPa~oD0e$ zCJ2?mc5of6WS2&Ea(RY0<(lbk?C4_x!h`$QeaQ}(n6B_afkl0LafRE9kU)TUFW=y*p&DPS+u0l(NEg$NT<@8>7?8`P;+EHNzS;KGGmD z=h#t$23HMhUAnoc4Uc_iUzR$%V8%Wvbv=z2kKFS7)SJE+AvV&(OCLnA@Zq07gP>I( z<2603mjzs|%n9E4G{t48ESfA!{hq`g=eeiA*W%)Rbk%4RRXx zOX-*4SVfLyrmkK~Ki0!=_95&{h7DsOlc@VaGNnc7t0P6rNbdi+KE?y>-#BI8Sv;ZoT%o> zi0~h**)j!&;Ju)737x6A^;fHQN7K91E2Y7ZGE`C$qKFKoNJOJFOPVDlPlFI8l|n^PiAZe8 zP(+0HckbRV@89t5FVC}Ur~AIH^E`%ithJ86EaOZhEqv_8)sDZy_DZR$YuR;l)0rV_ z-a+zJ_M3lIL%vS){8)Tzmqqbhh1Qw7b!-X(+BQ3m&*@lS8#dO}?cBtHW2$%eYTY~z8HPruN7Xy?G8hxNcF*KwDwR~~QZjQ<2zD}jfHaXVpb)+jyfpn z;;AJcur+u!=i$_jxk)Q*>!(uj@zg(;+`8SxV&%$ou}lV6xZuYb{o{5gpHxJ21M(?| zoMe=1IEr4oatus-bOT9xOl;V9k8w_%sMu4u#R!*M+zL4i`NPHs|mxz(+^nbVBOJ z2be>FK7%?8f@W)EPXy#Ik7#7Ih+2>qHBzb(IgJ=Q3uT579@Rfd^ij^dE^}~bz$>+j z`9HTF`x>0QY`9+0($^c*Ei3e^^DmUYwpLnE_RwOubW;9eulhz+j{#M)R6-hN_4YVC zP5Wz*zlhyO23zgQn|6=JOKGBK`pR^u|9Yah>Iub;^MWIN=+z=s6CrtEH9#`*QL5dIXLfh8{AkZZ5GSQhYlOY((t}? zLe>dpu<2EQioI|B`iYVQF$Watl#6ws7-EI#Eh70jpEh>^O(X1Q$}Io^W(3Gaz20dq zV~HZl!Y9;@bXDjn+2u|M7Ab6QuH z54L^DxNVw0cb0bX!;G^>yIFVkn)Y^Yvf14FS1B&9uE_V9ez#@+!`uq}mz`SMUp}gc zOtd&JeYK_HeSz6B=lpk$_E28tO_`Kkk*@+(oy-7@|<9CSofS(k*+d&w4iMW3j~`j2RNQ=Br$hA zIv?}|s-17GhPt|Nb%sR+^QF6xK&3>@ggX}21Q5NS^h>DlY)mW?gdjXu&a+|o#}68t zvgIkg{R7l!glPh(ed*RdL$ndYx$;6DA#DiYK*IX2XCU%GW`i{@XrH_X5Fu%8X}H+j z8mKC)J<4R9D{h-G_51QAmRBvb&y=X-1cnPeujS|pCkw$4{!1_Y{0lZ7jWsQgl--^1 zu9Ed7-8`(FyRB`yd--cuQ}1ozeUoB?CwX|vH{UhM(hwyH{md$^;wl(WA~x zpdcKH9a*FvK;svG$tiac3nsJ}Y3vmUG3%!S}V;AhLIB zSEi=Ije6~|J0CZzAo_p#vJaiI&Y#*jaJe{n!f1$Fm)NVQzW(-byUgw0&(}`@weSm` zKy^p?;X=Kwcu=heZW)J{?pwWx*v>lyJ3j}LhIb%l)%*f|v;ffAO^TRA=9IZaObS9! zBoV?HR`W2B0(mK-jbuY(8`>!h2eRV}eVOpH|0RbpFxy53zO%Qd8B@QJ$+!O~%v~$I>08!D=T?nyvXE!Vb2L zb;7Mi-~%#*UNlvpZ;t@n1S}i1Fj_BSmXb94*T>}kmY(khIwr_E5J8!)9uQ`a2jFOv z*-b}!K&2Hld8|Gyyc$+oFHL3{3Vc;!vv2?qYc+)s$Iox@$(}{-Iyg>=dY|$>H+Kc~ z*T`)vz%AR%>|G~U8Ln}dBf?30Yg%uD*1$nSGu={tFJAAjSoqOAe@sq4`=NGDXCKz- zXZxi5`&4&^X8qbf=S3!LT&U5Up7;AkeabdUt!(X|63edDmpZnstxxwGQ8DF>o6iur zOdnJf>>v<6*buIVGc`ld)hipNZpHWSij>RyYuUjnCK7xEdgIKu(tU&l%A}UeH7`I~ zSPiT|YbWH_@a;Y}+J^xfGNbTq`rqx_803mYVnkd#s-v&_S>SDl-8a}V>IKwmP9!-H zlA3~&@MFh_BMGlGR%;*l^#1)nG%klzzk&J0&K8Fa;EkzeS6kwf^aol2Kvr>JMGB*b zq@@+skSwtS2s=-XBeZ5u8U&oS$zjuo37V(4@fUab&D(R*IP*{aH2I{YrfD;dXiR++ zS&^vtS!H?tq8ok1^m~cNE5~y4g0o)W_VmQuEM566v9m2}EB2OjOwvjO=H|6>ncy*C zZ+-=QLuj`75|O<m{t<7?l7|h{ZkV@B_2AAn-6YKAw}iZsUr3=G*R^fRWEo zq077OIq#a$o$UhlI&NAN%!8Rd4#h~=3nNOzBWODTxag;M?5H?h(Z@fLyW)F=5_dGL z9U%9%XUig-52)B1&04x<*us`yBaUX)<=QQjR~S1&^$?!p&Hwy!6_Zxut&@>`WHhO_ zZj}6=aKxKh*Hc*V@P%Ok0J2o7=EX1(U~Jm7+^5fp z+G61v6Xx*~Cw3l=^%MFA#<iN5>j3{RP0GG`B9G zSyeu)!8UtRx$SKy+;gAT>LY$*oY6Y!sg(rGtP&Ul;Y?lkE3>l*F22L27@(jvuFkpY?YNz2?Um z_%~u9fw1<(%mtoxr}{M~_zsO{cAKv*pL%g%KY49Rz21QOtCKuJnFg)w-KFA9w3cht za5XiP+RUGgjTkzb?_kx`*S|dOLP-P3LBy4Em@N7b)~D@ z_xJj1)(qq9fJA`(V@FlO#bTWH@!jT5qD$Zo+kg099~KxYHe%NeAy{my2OLf>r|%;o zIFq5hTfbQ@U%eXeHXjB5?$p$$(pzpEK40T`Y|}K;3o+MbcByKv$X@=?AhwLlRksQ1z~uk9HAZsOsuP~pF8I0;OVjC(qb&LulLpM z3@YP0tZzkmCn{J`f$O#uWbe&j*dThSe%`g6@f>)_ba~)S%M^#)tHNY#|EI%D^Tb5Q z&Q9`)6zGtKS9AUKk5yq}fiR@*4sgzBNW%)Bc5eO}nJ00p_qCkMWA2|ib@hJO<99dLd4cJ|)0-K5 zMrNkLiE^#h)b8Rv@iE~b$I2^H!Z9TV2|R8pbFyjeTJl2ppEEUl%e}o%sV!2T#$ctt!cz` z5Z%*`$@eaHZm<~DCzE2?m%0(&(g;vlo*|dq$)vna%j}x9P==A9#mpV3GpwN{Dkg^2 zT~9V1DwJytQ5e?z!(pUCKZnzi;kN6XCAZA(7^$!SXWo@Z1$m)`2Xz8hDUWS?HukW& zSzV=N`*ay;jR~^DehzCto>>OhRd@#zE19A~nMctu@ z9u^u)zC2lACpCSZ39)M;FOh*cVu{abh^!vdS}x=&)8;Y^9n$kCcn6to-eM*HNh*!k zYe4M8I&b zW`(e%pgOB;-jHfB%HyvRva0zCUdI5xA}9Ohy@n_TquuD|q21)Y7n78lqVNH=Os?%@ z7uqXsRdA?bhD5BYPKb$*uGa4zIxh#cRxikL>~yWX^o~zA_4EsuvD9oY>eV%)z1(NV z`XZgakDsi?=4(fWOr(~Ww=)|9gXGZ3vK-rUK-lK<@RR2N&f^`08}VVwi2dCKnXGB= z)f}}uAHBA2w>2NzW?6UTtJ;%IQ;7N0@fdTYEmEjpZARSW2s2jbEb4!rU3Xj*P|B(I zXHgFo#V5-U1R0u9h^mt=j&hoJ5WHGZa})AC;S zS>ooVqwXz7`KvV0^vq4B>CANcvp50PAyZ+xS?a!;lhrdMZf9g<0G0ZI?@&rmU!I&> z+Yx`%F*;rI9){ifR#I6h+1F1l&8+f;szP?Y;+QdL(S;{6$6)F|%P9)Q_hKTB=ff2y zHas+Xe|2g{23cZt%;}cGj~|U66pNzkGkk_QVtrCYt(|g> zNp9)6b-jWHL^=-dm~_{#Qyd-#S=m!VlD9mIO}FfF`%Z$<``5l+R>Q09rWa10{Ks+4 zFsLvAyUMk-$IVbHKYBB21_FBGG5ieRs3-VyP5eBQy85%Q=$&_-5f6wSrafiMbD*UZ znT%Qr1chOvSi8<}N$}O8qFUm&A5*I<5Jhje@22X1vqB{OjAzHH=Pzi28ZE4dQc@HU z4)duaBdLjzw;=Pt+tUy(5fmK&Nq7)r?fpf$)+NJV>zhG0cyUlHBOr=^&<>s+1qX(g zV>jB~zxB-dm?Z>v<%ynvrbJ8xbdX3SFFXRU7WPM}4c5%ZkQ5>Bx1T0&WMP3opf8-G z%u`iwb8~4@{S%d=EK=XF87>F{Wxf`=?MqQYI;64A5sIFS6 zl(;=-c}n=yiBp2o{^$Wa3ciJg##XeN4CI*fk5pGT?JxXl;Hq+%Ia0OA1;obd5vv3~ zLssQ95vz$BYS#@GURw5-rzxO`f_h7G3@BQFYIZs6i797>FJ(%~Yf)b4MjYUp&EeP! zhebgAzwS=eihV}*U|gW9)+C34?%-HzMUGa zW4Ppb{S}Li$X?BSYd<$5|9aKo`HriGRa$$BB3NbBS%gC-u?T%N-Dm7^#}ie z&ZqviCED*)(^@f$4VQdm^ZKOC{Gn@S9gdncOem}W_sztR(ddYWeE)tMA4-B;!+m@` zBez{40dP9Y4$qhWOm>AHV`OQmGS@8=O0CdrkSZAA_m*)zyx=j$PhdS%Ml@2v-iA?c zA_fIDL?!6lU)*`G!DwyyVT;cM_0IU@6TT%fQg(IQiVB(j2O|%@u9lkd$i;IAb31mJ z%h>N{8tUHO+Q_Gd`Hm}2a+Q2;+5hE$2)?e-Ia4L{{e@SJ#QIOzscRWTicPQV>akKI zl>5O~s6A<>WPiTs1k#Yb)i0qjF}G#=hluhjEUToj9YiNV9lz*WR`(tvmmK?ObGatc z^YpD{3mg7q1Vs_TxH|)smvWW$Mg@(q+0nZjZVv{3l2Tc6G>8Rw({y^q*O?J4*$+z*D_ zZ~y?SM2m?17vxJJiy~+tQ0BaVSvS2p=slN%XG!>o@rCKPR8-;-W1-Aa%i}@zwG1k6pKqaIhZ@ z&Jcdkzij6&`B`eZ*|$Rn{WdnfZE#8ZwwKo8($Yn^)y&X*9=b9)x#d!F@;ROo&9;f> zBKU&xAhEx z3)~T<7Cr^7M+R#=`g4x7!-yNLAHC5c_zg_Gz$#@Y-K6-`u6sO?SHmvB?1Mgk)>+@X z1y(=vpy`!2+~HmPNyY(bX;s*0enXMI6t@=g-x6r)w7vo|N@;Jc2|hPxZ}O(cIb9sP zjgDNh#O{^W<`2OK4!zHLnEPckG>-@Uo{pBhJV{AC(s<4eb+zu@HvYcachlVi`?S=H z&mGY_vah@FG^a^o%rq*)FFS|^IQi$<8XlB8HjtpnlF7FPdkiuaI6a(ENX#Q7SF_fJ z>Xw-wBvi6+WL(_g@^GJXRA_+rqV@T-?yTXR8{;_S!D7LHjbExOvoJrAV&<`CM@2Gu zWBpKH-3ugHN6*rs{3KRdI@G^m)e!6_7Q1P{s~6}dP%j-5qg|)~Q&z3s0#=8K673uB zh7_mAQtRs>xx+pF>NlM$*o@fRQupK6lNV{eze4(IdwTT@Ixt#uTn}3n75mYW_PeF( zcPmv4ov;17$>)N5eV@?-E7D_sM8-?TEE{n8RG{(b3sF%)vrkIQS5xb@>oo#q$$^_J za(96m?%8v8m|@?(VonZcR=hUam*4k>KEUD>n~n_Vp^(2-s5ix?1T~+ZYKX!Jn(+8> z@>fMQ#kD{dX$5F4h;THbP^=6A*LwMt4Ai%$F%Tf1Xd=s{XBUmWv|<7rDI06+&&j7< z7X2yvuN4_^iDfNAoBx%uNumHkrrCq*&*X<(>la~-uM)!|MiyTh9osAdZc0S*Z{hLy8Zr(E5*(Q2FLnT4T&E)`K{{Nr|)9oaAw zPQj(i%b>k|eV-sDE#0ee@uEe=u^TmdM&i)YE%(~WypE2~w8 zNc?AXJwM<9AUPwQ3;^_dt3zndfX^V^3HFLGJVj0>=!VP(gljl*@485Z)&O>T@Dyrx zN_;jXLJ5!%FM*8-?^|47tLCsi6GkRKhFHcls5&w8?SB>nQ|kst=%qxB>LS~GH~G$0 zYi5#Dbak`;{CQy2aeaRs(NdgLoG>MjU0hD^&QSd@hO9|GY;S+9|9UvV)f8L8G^}uniurMtB`IDuZ zJ!xJ)8;H!oQJB|fG>hEEj2qX3SrBvC^|zNa09w<=) z@es$}_H(_%U*%Af#P~U;tG{0!Sh=&C80=EaKh4S#yNLu?+=wM0e`Xf3kLHhyA@)GR zonG34aYAYCK7}7CXz!J-<~@y$ewMO5X!`i^$1GAp`qCQZ+{p)$@i=Ztds0 zHTrnF$%@CmhWqwJPqOqW>8Z^swXgM?qyXXf%=LwQ3WISfzM-2EMvqbaTwJk$tN`2> z7ct^L#^s_fr;D2WtyXPzaJXq%&~SKxY>r(5fdtA=AQDT8CP8#U2T09JIu`nC^w4yo z^aG#aGJF-5NyG;e3wN8mnull8Hf-9o5bhf_5;+swgzF5IpM6sc#Fo^~0IJ zuC`B)Vn;>?dLu_}ydL$)^4gaXmn02_4t*PZVEDBgqhG#|Fz?=d3>z|K_RHRieOQ!z zF!z|$SNko$&431v9=+X9LN++xd~?E?sAxrfI4{xW^*&N!jmG4eI>KlV0=~c`fl`4_ zyUga@M&c6;!RGH)81W!M#c74XpP^?CxnxON6jM<#O^10a#x2K=VffeuGX!|%!w)Zj zeuHVANQH~WtZS?;6eS`9E3hq9mmODPcYE*fiHjW{`VTJAwA_$j={3fh4jTOU)uAU< zEc%3AY2dm}dEc^YkJ0AQP70%oz0=o{rG=H!!3iGS#EUgF9K-A!^5#dAeU}kvlGfPG zTo`r~tB3!D&Qs@hU9n4juu}G|*CkJGqV3jse{f^PfoV_otap}d4D6L${dJz3rNXV7 z%E~&;<2vvBRjjTVc>113`s~>qwk-jDnANpKT-ZN^@9{4c8@3_;OZatojFAsk^)9NmFniv!bdKfQWkof2T zKR$5(x#ZV1B142s_fBvWL)cU&XJlQ9K z`f1(N!8L5(j8RgQ+%}|-Lq%bSZM)`0UAl2Sa61cikOpj=KBR4l*G%Q9Q{^j3#5|t z&?u$TnczkwU&hm7PQb9CxCZOH0vLD%^t4hs1VQ-j8g&tJbSd5tLmeN?22;vu!e;Ei z+y}9-{W*NpD(+Qr8BBX3E?(TrfmzwREvf(hxv(UJGbB!v)NhC|mJ;`{UL&Q^EDM7^ z#;Z!6?oAI+ER|q&3F~cL-q~{i8X!O-a>mBqZB&_D=g0omF*?g{zwi3?#>qKr6m4gX zju?73@KZ)=PIW}r_wPRx+}=L1Z2R_#>ILa9v$9^Bn#_Mb->~F-O4FT$1Yt`3cX8<} zwZt=;>74YO&>gyIVlHf|gb!UD1}6+FO{RrM-@Lg&ly48*m-p|wM-{opQO1{?Dimn6 zJ3vldI@*C*QKAd`eyj!PD2ONRCn^;_B4}>i&tB#^LM7YSa=^H&}px zfcbx7mI=bg(K%P>br5C2u3(egJ;f&p;WGS1FsJ!T zW-|brX_>+)g#rK$;PYvpL&*{`X!pEK91Y#4P_Vb#)tY~&2Y!*x7*V)p&BpTb{RaY6 zSIyc2x8l^5a~?tz)q7npWZJ&Na)?mS74*C=^Lyw7UH*N2X{ADxwXQAgF_akDAk`kH zBX%=Bi34|pZ~C7Ga*^4D(2j1KzUhi&6vuMsSN}5xE;b0xlWM0;cx;v0j9}z?TAK$J)#NUC8{uYXZ^V!x=!q zdk>kHZPuB|r|v;P6jD$YiDjM95F3=4u|t7^x!HK7IiN6Wmi5Mts`&7O zO<9MhwiJRU{Z%~&gEqikeFdF7`uR>|e7=J1Oerf!~ ziL6Hzo78dk;$z?qCiW#kmcmrIoWl=Zd2_;94^h+r?4h=R(=I$zm<#`^DN0#8A(zvO zsE~#UM|-iukDMvgERkQO=LD-DK4P}>A1`6g3!3%t!Y2bC^?jSS&Exut2~^LFR9imY zDLK*f=D(;jl=rXQkh`3(GHK#*s!rnIkV^_A4&gzahKmT@{Xiuz-r!&bg$#gM_#za; zd+%cgl#a3+a5uu@Ye`8OTyC;-G4Kb}s)!X6zBIjme}a3fyWwWv|~UiaRpbylXks9jPzV7_QSQ{+%S0 zVm!dSL>_+yP^aOZ=uR0GK+)bi&T%r$90SFR%l-`yb>bj7BiiSAZFF$3sM|{YL7xwQ zrhRm&%$PQ9RT#6`!8~im(r~dYjGLH}xmRAha^PbDNYz$XR}6uBV;#aT^QG`L5nZ+;fzw}sI!}BRAmH|Jcr?Tmb zz{7@s*9Izedldfc6879`nlnsH-Yt=8n6xi7u@-nkST7;K0pnsU0szhWsqrr)IuS+% zbOrGP>{)POIIWR0$wFDLbWNt18}-&`>G9uI`vh+Bfx-t2epWN6UEVEGkZ9i%F*1K$lL38O=Ols863vl05M zI(ggLeux6!Ps!mBTOfG^mNLK)N$x;AT*Ph zL@rsma{IfDS*pI)wP{liSbKhQ)n$||%1D|yrMReGC}d({`sKXar?9hXGJ}&fTdV@#Rj^TNvF<;=CicxN>htLNE#^Epic{r@^^pkQcu`I|L>#8upGh;YZ;u>5E^5D`=C^k+ zDF8?JS7>j_hzcx0jmgGyNxKBt8h=V;QdCzhY;>PIW5$>p)6K6H*ic%6O|O`ccU>tO zeBr+t%0zyJ4{#%YFrjC^ag-ubT@;o`6ohjLMlV2(H0N7!njV=3>-cSq<&u>v^KPYN zFa5w&wtepA>kzbOHwjuQHg9nI+@cjH0SftxrBh z7*`CGNjUVOEx~+4@ba{;P0d4E<-7&;S}k{AcCr4<4G`T2fxO!TUH%41V9GymwV z6XYf^9A?U_;30)S6!QISMRdY0F6$73h(OBQg4LfP7ChrVk%}Aq^&vBe?gE&BA0)i? z*|j$C(z1J%5e{?C)@0wCOqEcz9OYpL${f#syb`# z+{d>X(OQ-QMX(>sDGsAsf^N=#Yuo~IjsZcvq{TWCv7VRgT9uDjT1^9vf^eCjbRzd5nm4)) zQ56zgA>bbu{&ft^fKE*mXZgnkbLa5Ve2Ed*Jm^C*%B#<#tiZ*3NbrG=eS+u3m&k-1iZ&ciWTl-&C=x(JcuGf`o7+>8wEBcJKlm}T zt<`PwzYfbdg>4*^3Sn3@=yb9$4-&HvYjG z=j&5$E~>h9_HnBG@c&Kj*0alo;il#W!$<7?)wO3tpGncj53QR0>4t{tXkvw zA#x)KH4K$B6kPcDM0I}X$4c#@XaW%f5CHXov<=SAx9+PHaJ;Ro&QFW_)&Ix05U1W* zQ@zF<-SqZCFIL!qCm2VqOo|4crtG0)LsUY9i5mEULV+rLc2wRiybrd&SW2(@*Rjhz zNx6KoA1HT&ss}t5;bv0fajwP{<0#PCpGe`a%`Ve^>dh>4`i?V$u5tARj|OvNQ3;AK z1+;pl6TomXY{2H38HI^3rgw~d13QtbLqjB_8#ECMD5ayJ<1a%EOV>@ z@8BU5*w8>eq_68BR!H_;4ZEZMMNe|%YiJvRd#CuJZ!mZql@wfl7IOq0i($L8M zZ`W@I@g=E;4bG-*p}$!hUw||-sWh3Q4&w7%h$RMY!2mR>Q>N${IK2Ga+M&b9y9?*e zUSZIiuvOXbBjiUEz@Y0#@2m7+pPzd9?lu5dMNd)Qob*?xzvj3kGUuUGfJa!XCxe{TQNROfCI z7g)B~cgfw*f*~ea*#T@zi_EhV74T}~t%61N>4C6?r|p9cNJ;7pz)8W9`^%c1Sl_7n zeo7b(DST}p5tponsOV@LQs@~Cmkn=Q$Q8KgibcXE<@r2IFu=L|mtb%lkn0iMW9{-L z7~e3RZD0`e-f|l!(QTUlxgezQNH2H_2)e3TQb7S7= z9`l+);^Y$ZlZ6&AzMzTF!`FL$!DI`~6`(l3h6%&r$UX-r_tg1pOz%MAb{g-Dj?(x_ zS7AC&u^VP(@90?mY;5=!dUN43f)^u|tzcxaU5R@tnONxku5~7_2ll)_3KD|*x%i6C za>G_LiJ+&V0en=JOphjvad31H?Ef1UNvCL!=xsGzt7Pe|cy`yjDi>F1vQ7Ky%>`hn z;tgK7u=Z1UIJp2bVLF&(^egU3VSb*D%*(RG;wDr|nb$x5_EH@Z%ukS1P>6ATb1xi} zi=BdO;*{qLuqTImU4J1wv#3ZcKb6w|e6Rdmsd!|JhOi5Jy(MaS`s;!?)i<806VJ!3>6hJA=FJ=@^yw5AA|x z4_9XBTOy|`WSw*uV`zXwx3iaHS5Q1dk%{wZ_ZDpNikSB-tra!I;>9l?1O|M4n{?*E6U5uoqtckN(6N-GhO$#-{q5s1Xm{8fL1UeHjwYB_%XaoxRX}a z$T08#>@W{l#JK$qPKG`Xu&+OJVE2%;|MtFn;@wjDTRpMRkWQ2GjOp&Zs+z+4&s#`X zG6_>AU=I)THmRzTsLj~`UrqG5R}W5ADYff^#+AW97CA`Y!2|h=p+mmmUqIyGmGV1x zCH#}lUKl4xCzO#b$ApuNQFym1xn{$Bzq?tj06Bfbun#!wrbN{dp^T*44kN z9s2!`010t5FY_1{Aj)ADDy+<9LQK?O3(0|c>*`Ah`h*_+`jsQ!2pbueafWYg0Ml34 z>QTmR_sQM_CQ1i}sg=MzI`F|rx;Y;|F7oiWulXoj!}&4_&BCJItjgX$_T19>gC||K z9jk6^KQHp|Uz;aEXt>7m5wXoPE^e#E!JRv!Vkn5HnZY>*S= z^CvjYxMR4M9fx=C|HCHH^9c#tUu6ug_n67|u#5PIN{F5m6kN1}L}$7JyI7Rai7QT7 z(7a({-0*t|niSI9>L<&0m&z#YNiBYzDvW(74fLn0$YchIFPgP-jhkEJjl2Llv>U4u z{u#C(tnM*8YIQNd6rK)*1>s_YK`?c{N^;Xkv3JA9CJxawT&YX`U-dM4uN2{j5iMVs z0S58mHwz+gbUoF$4!I8NZ(FIAb7)z~3%UZjzVjVPN4K*HjMhVt(WE`Y@w*TOtwSieFt8?qksMY+6Njq#x= z;d-Gw!G@OM@{W?8X_F{A#Cj)T6iZK3b2kNxUwVquLJA8>Q1rvHvSK$NXq(vTC~QfI znp}2#I)U)92mW%_?UUJxC>7hGxAE%jFC$Yv<&82p6m`4R?1=6m*4OT2?Q-e+E;u0I zp~IbZGfs~mH_pkd?o;-0SX`AcrNg}bc*@9O%3DWMHxGA^-5Zrb}Hf~~< zkbpEuL8!V&sP1^F=RH&yI@F~g)BK;@knQG_NI zhNQ0@K^nd55^A!1d3^Etq#|Cta8|_8RA?2Ug$Xs!|F)cde@Kh{3;IR?+o=wBP=p#l z_X9^49Z*V3VoKz-YYTtnJ)Sd)(hZ)WjOcI~HjrpR>tecv7dp(3c_(&3h+_t5#Ly}d zQVY-|!{zy83K0tdoae;6n~EDF)jGH8Wc;$%8{%31&YJnr)29!j6W|p5F0AoJF0KSq zXhTC~9!nUw)wr$-Sfnt~Z8^9MsPKazEe92+ju|$ez)mFfjaaHmv{`Apha#Fv1{8&J#gX{8qJk#(AYqC25F}6-$KW5L z+;r&o9t?7Ft)vg?l2(rkL1$}?kC;-z$b?MOelJreB-QGnm1->N1Q6Nz+>-VdpH|0t z^X3ab|7UK=KZn8p{EfNDL!UnxKEx#L@+Nu8I*xB{Xdy!a@$NVwm6u+jTu(4qL|cik z4RcsfQ4~y~$}o*K1_QxC#0tZwtp3~NSGaYv#O8d+AKFPMKR--Z_KSsqOMS(wmgF$E zow2yzNy^AvNv>vTheWqM&E=C>{zvf9g7G6x~@tbxNi8GSU5>>8H_6d(BUsI8iKo?=ho#&|DdXOgGHH+Bhmy zxDB$o3GfY*wh|HmC8}6UeSKvV{=MfhZs)_0!#DJqsc)1!=NfyEJXvs!)@Aj^ z>tajCKA)!UVUgXa@TM9PUJp>%}w-VC`z^Tg2QrXP)Ugnn>qav$JR& zu?BnvH!J~MTY5DN;#O_@W^fV|H0Wmapv;3rW}+hZb*z=wFIwn9tPDen1^t|rw(yX=stBwu)qMs;C5@W z1F|g?f5NkcLxaBa3-!&T4e_kp5|UMR2DtS+SYW)DxG9zKFvd zE_Sel;A-btxwzin+U;bX-O8w0gY+Xn&?!e1SI!$E(T$D*E-0r~ydBzK@A)P}M||AP zSKBFe;NtA(K7W*uF*@=&wHHrq18K(*mpeVZl+3B)umbq1C>1fEmKHLHO8{VTjgT zDaHfvezFmPRcpHcv7iWuTNT|X_gwQdqhx9kVNQk#)zN2jIa)~g1W}aW%m)GCMV{7$ z`wi0H6z20=#`{-%IL@}Shzy(#CT>Sr#CErfIVBDOsPcM^!|_!QSh`DXXBY9D5fxwc zi;x>PHoDMtiSWf|z7TRiyB9Ce`B>_s1=P2;39INjS2TWiaJ%y)kH>ZN*~R~*h@;5a z4pO!fH@ob4sGOFoeX4G5gU3ut)WpIpjw}{`B6K5A^RACnh$BNmD4-xN6YeZ+ZEbwQ zffTcFdqK?bYg?b?y1w7_39mRU($Y^DTx!nk5bsB08$M1ss$`-pOh8BSFN z(W?>yx$DydsJJN;yDyzMLIukzOcVLmV2Ay&Z{Tn}$@Xb;(P^$2B|4B*tA>C_3VTJB zn0+nTAoH=*_Z)uGMY_YC?5L&eGAg>%azN|8cdIDu#|2(63<-;rI5)?4iBfOsDfV#sP^{v6~(wArvJ5osm zxxPn0zV59Eoe-#pCU4Bq{Zy=CBeJ;cr>1YFvA9S@7n9r^hIb+4+Hr}}-JBl8zjk8jf z4G0cK+&b&~F=s8JX~_VmsuuP6U05h`oZ&3(uaK>F;1!B(p6F_b4v;q8&ZaqO!7}FF zfu-Xp`0>&(Gq&FduPdy0iC0wVRN5J9RJ`g><%|hMbXJ@LrRpqB5TD$Q^iWwpoLRdQqhIzjI3_cgkNtRNcfA_8C z!vnC9WZ}2ZQqw|*aypepo9&GV0-c&_t-}uM>)q|$Qzy<|J!mz|UE4m%Tw4$~LQJLm z44!ww_*-nsqfFm5Dj$8;dH<&bi(z}#x;Q(NafMRDpnCtmRq@QlcVikXc46s0|g}|`)5CYory|hL^6Pk$#-E@>ZyjQYi>Y)P+Vi-ZF)xEi2E8ZuEizH zl!2?5Ds9d1A`S?m5MF9L*1!t@LL$V029rIVxbx)ta?f+z4+1q(wfrM<*diFftwNwA z)=y}amr^in#c_@7vXDxZiMm1CM_w^?neaa9(~cb&pwpMP!&b^qJNdl$zOlEub16Gl?zwnT1F?j4qGq#@-ufqnOQTr9x%|h>@^V-`LH~Hojo}ggyI?3<@`OrM(lzdfzIq!1tw{Th`Xj zH=ClVDJDU{V)1=11c!uN#srD1sGsoR^}pLhA}3Dj$NbnJ+*_%D1Uk)AVBp`NQ*IP2 zng;M5xP8w>d5p)^60^dWds3}LfLLJcxz-FBAD?wtyz4sh;QXjOQTg@NOfXeq#(X$5 z)GvK)>iQ}7RzH_u(KUU;O}u`ZE#@X{+6*i!AJ$ zB%3sXxny`l^4kYieK`^unozt}THh!jFt8-MttwmK359M&E5}|fT7pX%a1v?W{j;A; zY=J$`O^AeEY=}3vcn%H0YR8UzHnq4W3d;tTt5JU)Y%UAfw@7(=piLC&e(olHL|)q& zk0g1T5n0(230t=V5ffrem83b7B3f%}d#0u<(XD?eD`V8>S=3^y**){}#f!o>j;0Dd zpC{&A0C7iXWkn8|S$WXMEWW^=!l*Xd(JOO{@$>)s%gp2PTj`CW?y)GLxFXwZ<;t$J zfI~sRZjr(mp^L5ypGG!cF*pbnz3`_N52{1x8=a%_G-DoB^tM)&&7FOZBLLdI9M&B` z0);+k7%~L5O|NWJPA}mZ0^AQzE#EET2h=A2XX}^k$=*2adWI~6X1=G>rqx^GOo7qp z(=Y<~jqk_TVICX;#<$DN%@e<@>t&dgSIB3jnx*@orx7hw&5zFRe+|eq99_d9D#k&l zr49+$zu(MxsCwK35i_G%>Ph_>U%)AC4%iPCAF7X0L~eB2Jo<+rHxs!wFeOG^5_+6ZCApXg>7uH%*AWZo3Mt`{!E7wBog zQ1s8%xUlqFd<{?w0PuU18>CCvQZMd#RMpgQC$D$5POqZpVZ_s$W)_&!6KY{ZDIp`o?J>;gO##nesx9VgAQCCMo9)_C!Gzvs6moc&Gf+ zKJA0jJ9<4-&*`(M)0>AAAO2HZ8|l3}?Iq)nlJDPNLQietKvdsNLHQ%(5p)9}narZa z@))eTc0>JS%fi)e;Vz+#IL)%=;eJIYY1@eBqD=}6guJ*1Q&IP5ENX#<%F$EAwaxxc z!6>HzXs{k6oj!tAp1PHh^x8Wg7y@E@D{{L0S=>OlxI41SQ7WC@em<^N!a>$ktK+a* z1G&_9eX6>q?GEqodij#O-1~KmO+dtn90v2}@AKI4enWg6mCMgkh4vGIuPXTY!vAMn zFP86e)VKSG=h+EF0vt-LUobGp^tIUMvK=6HF3a5*!4WxWMc%YHYi!}5qdcA8x;6Wm zmFm?=r6dVn-;ACnQeFQ7O_&T-HfHiR74tFrkr`yK_c3T_xA2Zlx(_?lYFTxyol@J^ zsnsY&{j)z+3^OP`0RtVe&o*bHT+(0$n_|^A+_8!V51L`I^_Ah5XzL#jT#{2*_!4Ns zNXo`2LyFMOEvKHgnl?n#YT@3^|N5%fWTl%GubnnTp<%wa2_Ie<5sGa<0>Mpb{g48U zesR*=Z=S7z7kC8V;QZ*Qun8~)nG$>CI?mDl`cbuMOh?_~MD<@kW|a1LSZd(Dv`&`C z^99F?(J0}0)9~kuoqdQ?0A3&(0!m~0vQ)~ChbZ<~z)Zq&{7ZM;rrnuy_wD4&iH!_k zOx!54>Y5*yUfdIKD%q5NQS)r|;YCt+z0$w_v3WGuo=+{PmPiSxZG{=u?b|E*{Ewj# zv)c`m#z>Y}Z+%o8-(EMdUsK1W{T~0+je6MmuGAg-PX4=B4ew;yU9R)RrJ3tsApDFE zZ>_r77_Q;sPg8#P(x z=jr}KZeHYoJ*nrbqoSdU!-r$$TWuO=rX)>djVrLP3}hb1mlvAgq{dH2|Lvak{jPQG z;*OEKRB}3-I<0WE+ofE+QKhm^RrfZ9*s_B@YxI`9u->ub1lX=GqZYwcfqzT+8QNC=lX(8U_Q+PqDHa;!i?z{E2<@q~^&0?F=ut)OjmUP-ek@a*}HK zOE2v z%u5+T%tlFsP7Q55|6-R@C~r@$p)0r+b(d$T6}W8gjx#)zHC;b-zpy)|qmR{Fmz{01 zMuen)?pWO3Nq0`5PP%U>lxvR$yS6{s?Q)T?1oJ@6@zZFw5;4YOCj28u*(OT}KMM16uMwQ?mB=lvJPaae)jM!pR5yW3l>ug)$zt4VHhtNJ~O zdvCsfl#EGh-NEN}OO$-sWC{EWeSk3>VCDI^xVqgsS7>2~d%H@{yCU5XLvn{Zi8t~e zPAH?8W*ibu3>v1QD(cw@gsNHpQ9e_i2t5w1!`u2QvoN; zh{<`gaTCWXO-HKr z)7dp~ma=kchJxb+@7$Qh+J?kHGvw$345tmFPb~iaJ(wR!qT@$4$nKgKnaT>ZNyF~} zAb~A%(|PmK!|e3}x;qZ;VmT_dW5&Prx^2T>b@Gs#|EGFSw0hv2iCgVuHgpItRbMee zI|FEj=18b4K$*$axgnzkfTMHz!nl0<|IK#}S<)kJTjublF}n@aSKa;-_f&CkhD}xr zI}oHYjz@HD8WA#SPS2T*U%!2eG90ZSFP~h#yYe?!suj!-8t)ey2sdXA&zv?wez|L7 zd*J^b-T7Ypt*NF{)dMG=@Y0=D?Q&H`?q6zFCV&0ez})Twh;9|!iC?7mmLDhRZGSNZ zOnkQf79>vHAC2QIe<)h^`?`7Xji!f2Uz|H9JXJj1ax0}gs8sIHxR6t?`Yeck;S5L- z@N7LCAJgx8w^o2_7ISD0Hb?gyAs=fa>DeJ{w_J{~=C8&l$J+w-tFQ9>)oDy|qxyUA zT}aShj3&r01Ff5UrJf4v@Y9WtxRcTVg0+kAgj(+S_? z@ze9CsT*(0Qd{5gdWR1R?TM!gh9>Uq{9(7Vm3QfUzy5kkZkb9=#S48GuHXC5CrX{Vq`O!AA5T!W5qoRLNqX|z+JRlf?;eC|w6}j+@5eCJObx2;4 zWf;aXma$|vhAe}ze2?Cr$M>K3e17nlbDwkW`&{Qb&uhPKFU?I2xH*M60RZ4OGQ4>Y z09eBS;7~Wm5%3J#sV5)6pQAp8_x-@@{Re+6x|co#0l*o+=;jT}pp3;4NQtLe1$CVw zCuJ3>IyQ@3{DXY)lJZ{e?CD94xP~zH0l{;R*mTbuPII3zs86_}dnVu!)zs(Y35{|| zD!|V6!vAE35|Mz+Lj`=4^01^JPn@A z-(UgHIvn4*^71U^;Ci6M(y7Mn7a6ERjkyl^n?@{nDXyt!Qv)|ml zutZ4M+hHC|c%UO4X1*M=91uWc|MwCNtkPlc)|ktyk@AGj+5JcI0<> z|3}B-_2p;Z)(~Q(0*Ud1Dc130?1z)9&}QVsvsnjsdw?J3cgJd5_CGci-CTZ_OuZE@ z&&_yM7#4NF=Lh_e5(3OZS|xZ4nBQ7%I!7?wGbR69?D-hG3sH;U{~iA7f2$dTt0fgJ zzK87|++B2ix#^l7fE*m%-c|ZJ5wIYtK|8x!6_;HT{GuM77l_EYyYlQL$l}TaDnt{< z4j=@i9jpaDXzJZ0y8&h#^Ge2+wz@jwR3RZT4Bil7%eMnOAdwrll6yeV(m29^Z@x~` zmiDW9QIjx#SH}fb`+Eoal(XmVbss_V~^iA5@3y35QWr%Si{{?DK*=Bhi8vuxI-H zMpw|2%Zpc!?X@!Y_iAtl(iF`R)-Y8rjjTG8^OZVM9%=3Q0TwhWekA8p(n@Bk<+z@Ot41xiY}bIFtDbLX>{Js3-N9D+{<)!6^!51cbkd}o zL*=H5kGQ>J;{rW=Tsq->%eH(b0Wt(vOCb#wS8R6h+P;WH|@av5E*ii4nRkXfAR|@ge zg|uHKn+f%>b<1z|)w^koUC1GE0Pxmr=Iy+@!qr%DwTDwtvnlP5XkB!Z#oZNFV9bJx&QfbqDe)rJYCPcib7A9xGHMcWDXKuD21RBB5$W-h->9cfH1f$!Mzow4;VTz7e-Vr-cIgBH zof;ZG9)4`_O6U3!VC*sY=&?HL9NeBZ1a1EPT-)6iX~|LtWg4ebzX(B@+WX`1%}sBe z`aMDef%EJR+A)TTDyTjLL_8r-MgSl0Vv_eEVl<2yI?qTUz1tpxGJ^2hQ2BhUbqpu*EGAm zv%4MqcKYG9n74;O0p$pbP{I|wBR?r;i0P^Wh5~-?JteZw{|)t`p4`^uaEwNU?d8xJ z3ni7T59UU{0iY7AUx9?FwU0DG{G4WT$E1#i;In2%3DxnimXT>QT@J#Q@WDi#4W@SQ z>d}a^<@BUK!gbm{;K$>Ls{u?iM6XTICq;07r`F^*&yB!6Z@ha$*K3{8**hi?ZdUqm z-f^EpV!!@zqiE|ng+hTb@Pm4SLhm$+|J8OB6-m0i*~8;pBE-2JdPC4?*2E~<%a{;z zw;EKu4`RmH)y(JB(BjkTq~NUkrOn??2(rIJ=(S21gfH!+5h@;ZuG*LdxkAkWpbwPz z51H4>ea;KHAETG?gjd}Pm~fUbu%Q)(r0Ny;hw9r0)Ug0Q31cy=BTB=oKfC&e96C7D zp_^^AGJa#<#+IJCofF%8K@W9US-dNRLp;g+Kt#MX`D6^rV0rawuis}$ukM%qwemUr z=UT4jFWQ{K!lycuXjtY&wnM;`n6a2=nPPjU9HC{|H1)m$>5<=|MLZAfxn_5!C8MYz z;o~}OwR8Kg_C$HtcdS5@D;c%C|C?fIyHd6$9=~vhgAMp7p$B=&UCX=Dn@_r*m9w5f zNVexE$nWQ`tnQ!LUftJ5zMw?j{OUhN>^}1=kQy44ji;}x#74PX= z3%HQ~sL)yR%nXR$P&jihXV1B}SZ@yVvm~vaYKBtq8)5|_G$JK<{xfvBW7FswpeB4Y zJlUzjeIV|c{tjdCb&<=ZHAvLB*>?7IxgD&INr|&J-yg0C7U1>SO%^UAz3$&zq3+++ z@0x8Ea^Gz~T<8D7$s3D!{-ukNA4N#wJ?zn+1N$Pv9f|b>VXw-j^WeC56Pw&2YNuZc zTZuo1$K}PTiZ>ZU3Cnq?j{Ua3dj<*JoZ-m}Dks=Zb8-R=M2;}E;nPhJNVGPM)A39C ztmgo{upkW`PQ+90Z&|DmLYc$@_4vB+B2|uihuMHJ5!gCghM{JzObj|Rw-hO~5MW$DbAeq~1A!xlU z20~@cZWmTcrOxY=kfihf>$+`p>vi@=AVT%;i1U%3J0b6xZYqmwop5)r;n)JJVlhdE z)92q-6e=lpILqqVwkO9pBQ>8Nsn==bh=vVv?!p8^pgcUPKj zg;?%tL6^!S9f?=!)`&P{yy!kRza`!E&|U8-v(*8~mbk>Z;4m2gP+`-t`{}(b6L732 z`+1qz!aBs*@m?Ri2q=!}#g*ua@E?w+w(Hxc z;!g9dv?pN_U8k&B`E`JXFQDDMgy?W4Ib1&vL83B9E4D*vYf<(0J{UJm>p#n0D?H@u zY3<@#PxWyN`7z9B+ptLWelif(VaF@*hy|1cejPj4@MeW5UjzHAH}5G4r4*cm$T(rV z;He7mTyA0V55AD-oW7Xzq=L-?zctuXHsE^fSPU19I~?2T!LiyTg|2)9`*l9`O*eMa z77D=?+@aakL8D<|xW)s);E)j4=Dj?>`|;*>J7RQ!Lif=s8f;oU3|!~YgRnT)XgsUp zDLv2ewnD`IWf|Vy^HP5FT8Nf^CzckZH!Jfc6HVL3V_awzxwI8K`@=x32uQD6XtSB~ zW|}fb?}h@mr!W^Hx8)Mv{ib(J9n2-3;dgJ!%sD$NF)?xEu+P_W<02KRa+o(qD5DPk zp(J%LB7-j*GJhYNuK(eCCTH__$n068Ie@PNhw&Gs%WjF=cZ~~ zSiXC7p8xM!D1>QBmuk{s0UY>te7@wpt1HQIxr_hxyyX3uIhVM&41Y4&0PDwzfZk{g zE6-(I4^5vc!DA*-U8^V7H9r95gDDk$O; z#Al`(cVI^*+}$l-&_TE2NJrPTdvc)_iTfh^vZ0~T|GftD2l}Pox#TOoiiX@~$PW)U z&Fm&7rSck3uwSot`0ezq7&9+Jub8yVx)Y!rqE*qKCMB-)TKKtGv@vYuwEQe0*nv&` zW?r?1MbXcr4WCw^hj7B`S5wD)0*pdA)IpV75 zkqmYMxk(MD2VEFt@W@=)VFAjI?<^k*dzPg?@Or6ot-kLo(n{@1yikWvGtqsyhr>yd{Fpbp^`ZPF0Dy$yYgihD7qllg zcXl2hDVzzPquSp1g!gu58n<{oPnt8fG+-i+b-(ejFWiI>_xE-f;d@gvcuxdFJ&Z>g z6VqdeY1%w(vpx*U*qmq2ED`{;Ko9EHVnG;Q-Qnz-+{PKPYwwsq-f;hLjWhYj>A(-vDyeEN7+@LOMni4piUOvg?!7)0M#Zi*}74x2;kx+(Bn zt=`ltJgNRo!-YtMv!?Z#-<|X6eZSnt83oaExp1St-1F|=cj$M19{klLw8rXfx;g41 zJo*|dV6MB|)HWMKNGg4se!A}+QV5%^e*%V{DUF9+G0@AJ3TYi&9<0`e5P#fWep6m~ zQ_|8p`pszRAH_@SFnPZr6Dk)FqzalY0qMh$Gb-_0Xq%#$fo7J=o(#hvvHNQ|czV*R z_jB(#zA>oS_Nb4-2=aovrWR2oe%+D<9<9#`j2>W7zj8uVgICU=u$tuj+4#q~lar_d z+z5-$cq|6zF&@jyL(*Y*E!-gbtnmF8BLYr}ABz!8r=MnYzVD$RA5ky3yA;5^Z04*< z&rM_nsIy|{JRpf47sqCzQLz<)Ybrc2@{fDpgY`D!s3M10_<*jMY)r!ilm=yG`8Ukv zOP=o=u1m>Rs;{m=Jl}XJ-K+BGprZGN{o2Pl$BxwT7g^F{_=wj=f7m6C!mmdCWj}Om zpAGn94q~e#RbMt*-NW*_G1skEos;wTU!4yP_tK0rrnYON4tdheYwb#xa1+g|yEnNa z)bcmoM~LY#tjXWencdOIq`q@za|@%LCxKFNP^z#JJIb(6qVE-~nf?R;Q4i)EluH#i z-_$wQU*;(n^8C!gW0UBP*h3EPS!ry9zCBcoGGi%RHJ&qw1Jt|?R-jQ9&F7vJ;f{SW z^Ob*ZBFiMvekd_F)LkU-{psKLxt>&Ir6xcZKIZk8mlH{fR;1c2+=BJc=axCWn|>a8 zH@r2ifCy23o!WP%!H-<;zU=mh&h@>fv}i&347-$MqfYSlmr&vwZx=5K81@#4T0XsT z_&TjCPciSR3YrT0mY?ytHd6_Vr@&XK(Ai9_@aC?2e3)SKL0`AUumO?TbKB)>K+$pR z!f<+_ptt6#sNoQ7_#!I9$_l{i8k^Oakc(3MzfX$%aIB>Yd-sF(^I0|~=q-ii%6NTwzZYyH>l zm+bZ72rY}kr~NIy)N|_3cHy1(eRae7JzMNl%~IwOh1652O6ga_r)@zUl>;|j%__#XwZ8Wmkfxn)`q zY=TMqV(bB3&jG_+I+z3zaDQG%sm-OBn;Wr1ujYQmOU#v)me(oyEtki`mPreqPqb|^ znG~&xVWL6I5h70sj=ORgrD@O_Lh_Y;je)+_+IV!y z1La_VFPapR>>DssSecL&}fP&e*L8ELDOQ9{!Hb4g`Wuiq59vp9`wBiVVzX=!O^7 z?-k6&{OX#LYOQ6Qe-N#G_!^GkN@ZLQN=*KOyf}L5oa_wif7$K6))&F7Stpq9f3=Q$ ztFO~6G52mAd1{i!wKx>JTS-Y5*{=E&`G|j8_Z@To#cOSwpdPX zwaG1=prhZWHJhO}tWbCS9H!icV0#}Xcd6Ha>!8B($;WdTdj(k~4lkP+am)upyx`s+ zFoZh(sv5}#$$H4CBIh}h6m z7t1Qb<9MFXgz&GsEXHMNdfybh8*Ns_U$s|}i{5VRp}+b5f)~mGfKL7u{lw;R-+xsrevSy^e6qz^R%1rNv? zWq3|_u^8S{`2a|fz8veTMp=1%U7bl=33)vliG$f6t2}L-e5XRcPld5IfCLAazyI16jnzDDu-EOAJ8vZn#WJSfzQP*27D>IGm#o=gU@fGXwKyKiEmfu44MwBEi zVL5HrMZ5#nEPtUYOSs?HO6VN~NgOupP!CDIK3Y~Xy7e^Y0O@<6%*F0NcOR0@hAJ_= zxK}bxA9;7=nVm~XWvq&{HcYN`4Q6{M(ri5GcA@9of)4F7U#Bu91U2Oy@Ih{x^)vIE zKA2bE0fE{{Thz+S9^YDR&tqa&TLY{ST#1H-7&%CP#i=6@ZV{aQkPQ}A^U%*@^TX-U zf(tx%iB$MT87C+%A>eeb#rYi%ala|^;(IFQHQWMmfw{~|agVe@KBG>=XJ45Bo6RAJ zvP#s>aBq_ISTV08M>sGh*vOmzS7o>ip3NR_#`NP??Z}R(qgM(|tLFsB8TTU|iI1nz zv=`{!BYFOYZe|Ze1B^FC6wzMEGnc}=w{5CRHfQio^>4lEseq4kq=ZjI_s3JZ;Zh2! zIQpZqQ`XrWR0H+cU=AN?_XPp+VLuD)&<0R+|LrLcVT*bm%Z z_wO`rl)CVxe4Xc{Sa7(zW^~-(Z0Mfyvl|*#J<@!J4BX%mqjl7Dpib1+W_y(Gm*(A4 zQ5Yxi8vHg7HO9T6%QAB`HJj)t8;;kVPSRo}%KmuRO1qff`PXkN+-ZfV4z@%`FGrGJ zau??jnIF{Rj}|q=nnQtRKINS5V3A=U5p)A@; zdU!FB^wqfWOQmF%mvi^=w;5*JWl4UsBc|VoJ<|j0qEb;S#+lK>bW4O=W%K%q@=rlv z^u-wai_Dr|CW)9Xs1oJrZ9%Wr=UCE;&A5WLK0Vm&{@pFN4&EXt#8x>Hfhv)mc|T>n zw>PET@Va7daP;0%;N`&EH1t)JJs7%xd2|*Jr~KTt%i*53ZDw0pI%#gl_6rZgj2bS> zeM%P5r--=Pw)CAltt~=L944Y!Kf*RY3}*HIHqP?5cHvlvxo-S}umS1bynYn8k}$^p zxOCEj4$Et+=KL!v892NN!R;ExgnwqHistcisQei13J?%Tzc5~&bln2$WgZYHf$uS4XkjpXA#?>zVkAcWe9x0t zK2oExPBIN%O3!7!uE#7ff=lw2)4m-O!J$iiFD<;fx7lB`cYF_czzd@LW70SV-w*L` z@EtGim7lw!K?9CEmJAO!VXhaDKPP49V@vtH9np0H0A5D#ZNHHTO+9pRZ+9Mw7FS+U z1m*N!%G6M^g3@?FmEQJglB}7Q2fIAy>F7EBda%<~^im+~iE+zYj4f>o@w~z2WB0Kp zn{n@eSxxojsgxi4t$MyJWAUIStSpO0znvE8Kz={pq~bT!JFSzt(W7*#^wb&BBqEBi zNnd$lQ(YW7efPtcs10H6r*-507!Qra7&GPcF7Ls9gLZ+t$@5fNs;uZl3h>p@ z(P=W69Q-?cqxkvt*0Mg$wMsleJcnGDtQ!6PUO*+%^FTLMfKoDUlbM^;rTF7hj%zo| zh1`Gz*z*<+GS*1?c&nf zD@(Gn%oF@!Yu62E;R&)vMmj@MRq(f-LEtTs^QjH@_}uV;xwNY1?i?c3#{Ct_yuCei zHefhvjNR@d`G)YEsL80a%KjJrTI0BHe=6qOsq;K=QDm5g!_;b&tws};&zkE{Rp{F2 z42hkkk34F-G?Z`iJ^W8Ji$(llK#WbN;b>uk6GCX#O{JsYq^4520wgVIgO;K9-9s@g z-Ja#vi9^`9>fSJnc;SY|8eTiXIO|!@^y;Aq_(2J0EQIJ|7Vg3I;O9hec=FiSLf_*t z$=`9w^Ec>ETr1LElsIe9zxfYWTD~GNMNCS}wzYEmmx9AlIKLs=p{?vl)nvp~pgxBakZ0srhd5=Q@QdTvi z86!;%OLnS`asj&ZK+pYU(`}C3)wjwTMpb-+JpwXVr|>7tTrNXHYk!SfdiQnuEyWO8 z&k20Q*05|1!0;w@4DE91N2 ze-XW5d(}_OB$JxzM>6FwCYjHU+nH7u%i#5e+;-#-H5}A$Rjxq^quH1_M9vMDJW5xG zrTeA4wP8Q5f&r|-s^t|A8KBYLs|vVRvRXF*EwgP=x^*uH;58E{h8i+Ngjwu~s+;TdWwSl$b$ z$gH$8Up0DzxbNbS+=oq}_*1;NE znaT!_U)VT3P4QH@Sqy(sm>XK<=>hG>__;$E__JLyb?W7>G6GT5iR=;Yx&)x>*%*6% z&zJ4s`S$j5Y~?dta3{>K&O^@y?uJ3j5C4%)t$S*W5Snrm@n9xLj}Dib^Ah0RimMqj zOCq2+J_02fi$q4DG}i@auk?P~YDP)MWg3oZTHK(G7?{0?W7t#Vai?fJ5#F4#>HTW; ziE{|=?{9%Ckzjqzbug(l^qvFrPc2y>o-<*6SWC{8T%T`T6ii33l;RsqO}%UMHFqF! zOSvd8zaSwUaSayo{iMXgmOALLfdUvsz2#u6-}DM5)%N!dYA&N?_{Z^NWG74@{Bd52 z6k3ozci||uOoFXkH_LxuZg!_3H8tmh47BfT`+Soa@EvTD`Tnk4Z_sw##IeVt@G$Od z7M^FZU9mo@{!tkzR45Z(`RQ3vcXwKp_Lsi0;Q~(WaD9SplPr)CJI4NQrS4Z;ZqtVk zI;%T_)nXKq`VGDD+oj=iOa$G8H61qa7Ip>8{0$u~TAFGvQ$4xonn-Ic_&xD^0m{7c zZ0soD2%+Vb{G|E;uk*MwJ*rD-57X2 zu^iipFjG+#{D}WEeczaJKDFj8ZoFe|Lx5J@7>gj)d`w)cKh$v0lweU07O_ZfiT+P{ zOy*XwdIH$E*pv-P?ob)BbT+u;`eS3k{`V>(dl-godG`>#D#hgkmhh%#Uydc>B&e1J zFNL0PKxN_Wvwl`i`#0P0YhI4OUiQ~!YI+GLR9*Qk{qz09;plbZd{yuF;<~5efY*V+ z{aU>$5&8H+TT+#ixWUDH}*aY-Pl`WnW6Q5 z5_X^;@(%zRojydU*W4K+=`<{7-bTh%y0O?2rgOKQorM@~rQ>HaP9MA$wROGx>YqeX zt(8pY8!#58g0!Xy(bjq^7Dn=*F^UFPQ~aQp3LWwqiEKp_%uoq5pttFYQO7dlu|#B| zU(e@Y)3^OnfmAR|0Fy`pD`mghicQVvcB*aJ@9@&kkRN|@Z}n2>FS+yMOxZ}4>;ZfdNR!e4yKJqg{e>N_M2@#T8i3;Of5nR>!m zlhIeg>=9h=*W?{?ptSD#x7fq4m9-xqy@9O9#x4}U{`8~-W~Fl>=M-?@`!qPgLToY% z$J*Pe#``6w0jU=1_#X;iYNEIz>7}E9_i~B^Ae*B~ zEUC;X5%{l@18o?imMUy2s zMY8rYFY)M=&2*)66^I?W;Kw=1w5Ul_CDo3C4Srz%%L9zSg@JCKc;{&W?0s^AO^}+) zl3k&+C6`DZG(}kuJ(tc!vA&r%^KM1kBX#=2+NhM-e(|A*i_&2Y0`NN}o={caCUTLE zO6B4^G6jPfGS@t%zm2j^`2^+nz$@~Y0;|kTUC3fh8m%<3)(TAbjCNP_E1Z*yv%FXN_X2JquWmy~C zd{U7+WtlU#i%m4s#r24Wvm(L7CO@F{xla5-&rmd+utJ^eCrxgI z$bkeMMq2F}D^u{3wKkbs!{+)=r0!e)N##khdlGv7Z23&nvr+Q}NQB{!tf^4x=NfUZ zPfN74tykXMWc4{2DN&jVDkR|!p0@VaKgXStIyG!@(hoQ$JvY?adp2)5>;D zvB6;isStOU;N}<>jLcU#$^MvS_A!B?`J)fid<-kmqmuSjic7cA%jKH=8=J%BlnkDp zq3paIP0Cpecl8q>N!ym_%%5OyU>+Fk3mR!E!}#+lidb68;!ygZ?^vF)>GgN+S#Oin-gli%W#x1=(x0IajIvct!ybs#O&I4;G97v;pAAIA zOVG0w(H0Eu7DvsD_v~4Ix#Rvo&VK0Lt+_TdyEl%!Q=ge__OO|qt?-bc=n3DFJkKP{ z4+cX?l+$)d-ou%@BNW9D0l*csHf>sBNt*;x!kubQjw#c3x|f;1;=2o62c4$tw{WZ}g&vEu zm!_oUu?(!9hAotkktJ=M<(xT48vc4u#H2RB933N2QluQ+C3t;e-lw|mk2Q7|HzrqG zB+6M3u!Jd=08&7EZ}nIpcn~7$9vG7^6=V}Irv1Z!L*lQ8#}Yo1>-*x;z>?6#46ZXO zb1K4Hbwg0vUogAGFgL$E&16wK+{hdB^ndPm69f@wZXK8`s~KBI1KX{}l|rHum$R?s zdOpghU0Mi6O7i#GtoyxHE=|=o%Rl)L4Gp|pZH(6mXSX#_$fD%^zJ14-j&U1ED+fT%n+-r9wv|Jmi+ykJgZ;q*&dWz*}0Q;GhgDgw2y^W|c{>3LZ%-VT~O?fRjoEWY`W zbXns=B(tv!zSW*_qQKN0erJIy+@bz%rIz@n-3t*QS#alW>ElFd#Ar~zZI zw0CppV+fL_ZpLW|~{s<*d zD=~Hy{+@#_EEdi3-4Cp&&v-T=Clg@k=hrgPZ!31cM9e%Me#7}`!f03CdiL*^<6}Rs z>G(dicm9e^CWV>RB7sh@dU(cHuf=p|QRU^(1@6E)PmOgF-r*Ewu zwdvpd3HH2S0IlM!+Q5gkm1Ywy>QPAi8E$wPi%NaiO1NKtFEd~%Sm3-<4r4I6wx6jo zJf6ZUn!D<1(kKd;-dtu)@agj*DhFwm&`KvZ2dj`b#BF4wQ^*^^dQ!+oOPF%jlDc#G zxe!UH4)N(vzacNjC;WghD9S(eHFY3E?#NPQ-PBwUh6P%OaF~E`{?i$lJA%FPr0wCk zvh2bD?(^Bi`R$Rbe^$r8(!>Sc9g46Ajj!TPcwSbXsRR8=V={lLZkuz4=(cb6$adHw zXK3O{xjz&Ay@}?Rs!u=W z$-m4^za(vi3D7R#FND(8m{sUsmDBiz)ABpD5WHMYmc`+> zFsN*(x3Dm5vpbkeLdPpn+3sD1)Jf6WfUAMe*K96$xHP-2#{il*t(a83d|V6^;y3S+l``W%Kb<^-UsdU;c;D&k^+Zr1mk}5+w(?hWgm2APmWUv)it(PU6qe@! zC?KDnfG{GRvoFmF6o1=q`bK|9f5}RI7E%)Yol!%#@{)JsKvOP=!GcV#m#QU_c6*2S zoBpZ+55OG*4}RTlxl?_IsLLrn4G#?oiQ2Rk^?+9JdzM+NxmJjcvc|P+;D1oRIGH2f z<*u8zQT9|ycE2!=H>iV;jib%F*^N{M*AwXI&hDjmj72Hc%H=J3!P%^IF<;uuXJrOy zp)7cT-mw_qsQ9RN$ovr?v|b4I%wL%}y)>uyrDrwj)h4~p=4>+}1_A$&%k^A~PS!?h zrSwkLy?o|_!XZ1KJr>i%y&h3+_xTed8^-8?TY(7#=98h&!(-sqf`(FzY4d3nwd``G4__M{1UNiqyfe%?|pR<|A!Mu$zH94r`XXUgviofH6kdW~uJv-f&nV z%VLwL&X_ekG%ssfOUOI5ULvmg6vzapk?cbIG|E@>49|Z*qoO%&V7sUiBl=hG{DgLGB}}-gR^^?hc6#elxPmLag9hqw zaj=+o#dGR+AZh%CfY`$+VjXJKJ5I~g3+s`);hcM~{vmYm zxDw;fTjtS*gEByED0NQtp1T@ODW}fA_Vasn2O@KF{+E&QOc8{B*SCFygbaS1b8{h( zrcPWNgm^*+-}S>e8!|!YTUztP#A-g1(KLQ5_Iq%(%clK8@#_pqFwgi**8~1OEA8;Q zCSNlizB&Rzybyf>++-1SW0@5!1+A|Rw1SBe#Nl(eF+N8NTxjR9=c_h#qQ|WwCV&T_ z3F6^qx|=TAANn_@46|B?%{whR6{E_Qjvh3T0Qubxf3Ur0%NK73SZ!StfQpHI8WiSC zs}IlB@YOX?sf=hTcu+IHy(TW@us9XPv_fCB)l;v7IpP^le$=t~9Ep^OP;k|I-=`R8 z`B^sMv=wt=-zK>|G`7%L>aTfKuAcU1=+wei=|nl&#|F(Z{G7hRTAaO_8731vTdPCk zXxwLn;ztDoFR8?QL47w!yqD^o#^3MuN9YNeIJDb_hffd2H>KqH$(^oJ5T{>=SOx83 zelpUWWLDpE)`LWY$86CGWQ`r(cxkR`8=;FL$wwK+Kb-Sw8H`pNnNnhfH+jbtPy_dQ zeUCLId&A*R$WNfsY|qlFEm!inLlmNYA+V#@lB z&w!hv4lJ=hB0$@<04bxPD;0p5sMzp-sG|82CT2Rf+($tp$iGt=1JxGtBjN7yb4$Fw zpgGi`F2Q3MnJPqg7>Z=Ib;zWpyW3^q%M07lvm| z>Xd{aan{4s(dC)-)2s(<^~qcn2!4NI?$OesEEcL6Z=4pj;d9ly$p>9r7!V}>{^T5_ zJ>gsa625b&?V(N%haUg~mG>1zrD2N?t$Xp`@W{ONa?ZwC&OF@eZJCl4gfJ=8D024K ziovv3aejS=LqFz0U`|h%8A}GZ_vxb{VyZp8yeY4nMLHl1f-FEnrHl);`zX$X>a;Jv zI?5Y8psmACil%QRSU%C))YvC}I?*p;==}EVj(U9yb^mzOO&|xzGMcT8Fl6_)&{+k4q!ve zD^5c&?7|GEW`fe_e#c=S`A7-iYf|Tn@;3!{r&eZQMec@(VJbD7gf1l>* z>dtc*kCC{XDKdz{t>1Xo{CXhO^e8kLiSd;OgR4yzzL$d098R^9s#ittkmTd4BI|s` zT#e4q+{@N$l}&PJ>s?i3AeT4 zmCRtk6p(?hjGww9*Ns}G_EuK>JTK7#H#X}sNl-ECh0bsK>j7(eDSe-$g^7+|goicy zjJ!B4RWrE&G>AH{Khf_~VKZP4Ufu*c0mF@{itV@*7wk^lD9ii}<)08MFD!xhExIPE zGjFudu`H)F_#11oWPn?&?1-P|D-ot6OTh|RVE)EzB=wRCPLz{U-6x#AlEOo8H}6Vf zrr4%hpfYBx@t(GxB%$r&=3PC54eG^Vd+*{HT7p|c}xBbqn$7*28c z-nURx(G1?7igk`JzfrgyfHHsy|CXK6stD_!V7zL7gD<#N;%n@tfzABawBTl}87QE4 zvd7d-qaSe8*e&DUIBM^f-igZ+T{Py6<377KNV>Wswvx8+u8WI^}2J%@y}BqnCB z-+1|7*JLVrTD1Vu&!z{Q0G&Sm4Y|K0&iJ9}d45aHA`$uQTQS9qbdw<;y%s;^0enh9 zNjh=2y&nIJVx)KD=pA4bj4U6#@002~yLdE0Ml%ni@h-jJZlSiQBoSKrrU2?_D?4Lh z1N~@rniFNbsd+#%XryMp4cjci9u->RQMdiCkj`?jB-MWXavB{8`zj`7TbwI#|H$#AHZVSlC=f z+K&|22Yo@=*8A$=_bi0RNUK8kPklMhy;vA5#wlHwP@~tkG|8%VU{>$pcuWcl6z{Fe z&;hhenEYS+qd8JTf^NF7}hi3qngX5e1j_Vtut)qVC~D{ zR^EK&H$O!`*~F$+-}5uyC(_fRkJ-rUCZju;yWf&wc0K*@tmE{j4Q=LKZ+`R`c^)p6 z03Yfr+4Lp1vB{VG^SBi9H_0ip4B9u0o^ZZzpJk!hyrQ&U9_s4$h#tD;GXmxU)_u73 zGl!7}bx$CAQRsvKQIqSej+r|nl07{xGw3d-FFry_oo-u9EW*q?ATIfDZ_o7y&6syt z9O}JHV>@_aP-dAxaMCeH^eEhQ%=dngu7>6!bQMfB$%LQ{pprk=+T$M6W}>PdYDPz* zYI)SFI9HC+j+BCJoecsuVkZ;DKAhCBgWNb9C|@=H0@C7Oe|f`Kr|3{zj8lgUO`LOE zl-N@?g@XV)U_Q0PfApM!lBs)M)S8{Xpm{eZud4m(eaQIF9`o^&OXIQGAEoSK42JvO zP`Dp}J1-+VQG&rMUKQy*J$Dy&f3vz<-xln>>?s-QI49)Y#nfuI`*1Q$r|5ok!yDb+ z0|p)tm6DqIN*VAVX1C4DzVdL08TGLmGDFnc*Ahm}tx%5J+aek{ImEm_+v|^qYJ`_O zWv5v&LiwhTl>ki;-}p|OKNr}j(D1YFOxbrpIrXUMq|nF zN=o%vwV-#r-znS-?g(v=RGfYc8Z|$VQXrGVU&B9hftwrBug(B_V~mChQZJaa)UTx5 zkc2qXwTYN4diVGMumo<$54l$cZtnYEFMtEB_LhTdbcuVV(r$hEno8S(qM!U*#{7oq z=Z#&OnDLOvKo8AeILHhh9f|RWjA{)F9_%Ut625&qxjJe6To1GS5=ALaLiTlr6X=q9*=5ayiONU(%TF*@2fXk(GhGgKrl&>O09Pz<5+)rfgAcLTwQb>gt9+_A$KOc;-~d(anJAx$z-`($)H-R@*&Vs5Uuc4tPK{YEEv)VrNjFh0 z&W>UFTx}H{CmTyV%6*!O=BYi1&qXu^gOipi?lx8Lj2EhdYqifVO2qb~kjM~hLjhG} zU~t!tRqY@!2n-VpzRc}nH`skyjHo9y(6m$D*MDs>e|t)!SyNg$xvLUkEv3iOLaX%> z51V1hnECe)7ZlwMddr*UAN3ag5e;M`bt4GUj}A1@(f4zustPxxykQES+9e>FA$)q5iQx0;x(CFkoLy*rc0ov%>-wPE4mIDYugx7kr`Erw{aRd zw?o$c1wla9}_snpSL9w3oJjYT&dFNwI(&(V+O6-DVdYZ>d zyI~9)VsR#3e`#nIvaxgHNW|*b?_3cFHPW}6Ve_Mu(Xw|<1jZwBCP4g@P#S zS8lyu36=V;CC?u*-(Wod^@*xcY&8m0F^*bx%AvbYw&%fK<&rJ*nUVeu0$Nz2JSAGM zg_)Rm1J56!5{)`^MM=s3@zn1m?08B|bEf{BI?kx5-~Z~4?B8=Vp)Ya*Cmv-JHAGRI5R!Tt)>A(L9=Zg3iib@Nwo3mRImL&g zf5@Y{19UJOF_!LsH}*az8rMda z;Pi(v>~7^u?tWddtBZ=ho4nv?du1~EmYu05Ixf$=&}jAjYQ?<#!3F}>v3omTs@Bgb z%teYq=vnyHnvq;rhNRfvit2Npo@gcNZRvJNR0rGQjVJ4yp@_M9>&BA}V81rN4;DLu zmX!B6>_uWf)MXO;0?IjFLs+!z*)H1eu3i)u^f7YZA0=`m!ph0G04L}Y*CAl+aDmV1c(NRM4AMg)@}Y#(D{B_br<>c=Q?h=Rl?*Y`MHKRIUZ z`(3q!>;9j!xl#>t~HL!{R( zuVYXeG9@k~PtErfdQd_xVS_->fQA79!K7L)55iE&#KA7fNsAaXdM+f)eB?znIFnnI zyP+RU2sP-Z<$jh5cx4lfzZQ%vVe$B2=oMntz~aiLY=F1Rt)3&r3rw{v`|mH%A-D%j zbGlo5h#R-tTO2QR83;hm5)f;E6D7KkTgMF%rp~F908~N5GW<)tSj5Y>Quzo>KXt{l z&Vx6$s%=}L%YQ#)$dc)&DUZIHG?1C~=zfeF+&|bU2K78z{qER2<>A0% zulQBw=NkXqvK?pc4OuMVOzcz*#0N6Jnw~yB5%}j5`c&)S{AvI#X|52p8sWs8Z&@ODTv@&1)BDUwQ5+PX=7szR-)&ZGHtOZ|HbXSd-2eGV`-d<&>_k{ z=O22UW2O3jZTakWDtE+!PuGhANLHhs&!+xp2H5dc??kBtV#D!b%~o>4>M5YgGjhiD zb9H7c`{J34w}+^%W_?P>eQ%UoWUX6fT$UY_DGa?vI>rc&zp)As|F((UWj%p{5yEp}QR?}6tyNRkxN=PP!~2E0s9#SKe0Ofn=d>Jb=2i}q4Zt^Ea({-! z|7zS37yx_C(ynq%=`;F~Uk5p)s6^Hj02>+32$t<9XE{>8GXS2PdtPa{B_TY@;rR)n{(v zW6iIrBbwD^W=nw?s-bQc5gC+AheH2*d9YD5)cDVcc*q`2i%VjMa=@)t5F`}W*sDFd z(D5<56_4pI$}^Z)9#i42kZ^jG(YI!OG+KXqq_+M+5O=>z@o_eLh3Mdx+j6O0jO?GT zVXMr>Fiwe`e!iAHd*5XiRKv)7@QXR(m+J+;7aCVXOd4OKUNvYMvweD`{K)5##M?2~ z+$I&G=DwKvLD~{^!iizWKX}&rsr<$XKsg|_wJqMTms0Kow!x&d5*h>N7|FI0#r3{0 zDubV271^ppaJR+jN$2+cdEHmVcV~IS+JSl~=$5wCqJm=C(RCJJ*eC~h|N0Igu+91~ z2bs~!ibu*#UH9PRrB%{5Zxixhg-~PT@ee4Sbh4|jQpef?Q!v`_OqTpxu7Cusf5Xl# zQ-BB26a6Gc>dj48og*5^x87Wy&RFB@H&+$$-7YoD7HYU!Y1^G3b#Y~o4rtSNBNk`c z!nX6|%0RA*ghFK5b%p&c7!DwQUrh3I49k{`h5?>Q}uM zWo0T4m^~l(*Ui~zuepLG_%_v9FcswdX@!c>vSqV}Vr5QIT_d$giEcOHmLWb;D%`8GQP+lHY(Sl6bBe{C zJaNj@w=l;>rB*s)J!k@x!DgP=XGepB1<+;Lf04EE9(eW2!O+{I>%Pmf zuxA?Nf{-1RlF1Pt?s_YZ=!mTwgfe_VvpnH2YY9lJ zmd63rPgA`~Y~JkdSda(RDbN3-ZdtX-tuE|bRbkstY+A^CpM(C1e-`<*OjX9~jM2Li z&j%>Yr6=rY3trO`?v4Nc`+qrnkpIf$cdy)6J zyYJ%4-3U<@D!oajc#)4H^uCt(134(*^E|9Uk?(duv8`U|^BC6?VJoj24u&AwOqkDJ z46d5Q@5=;XsL7Kug)oU=iU{i0etfxeWBbz7g62chBBU&?LdJ4JQQR|Ew2^B+Z1Me6>i&dNOK&BavLG9Ud1(ghcrz(~#aSRWEz zYN*4yZ3a7X&y9%v@}&Dt&EPK6@w~G&RV^$uq!n+1Yx(gFq5?UxB7G+LOy^91mFGDg z6Q+7_&zflBn$tH-}yf z+2t+#c$P>f@iBB8)7ajzbjyAwxq*YBieWy+X-%lX1_igiU_0+vHB)mYoP zNKQ$j65g@qy{my6t0ssa0U_cZ|0 z7(29im2PZLxLpI+{BX*2D`g5XLfxM9a#n=)z${z|AbT3}x^0-r9d3S1B2`Sh8Hk>V zo}@LPKl)>=+~YmADstEMb0h>383mD+N*F~6CFGe6g~a8+O6IR zhoC;x#7AmCU<;RBAqpnCs~A5_pR0dU?civTfSyRxwkZxMv6$*!_+!E3nfN_*;D3X? zZ#~=gP_8K`^%128f63SyZY?5;Npo%QxPHNERXK7Ewr2zX_A?6ijrqGqB%$qg5sd0j zq0h}uoPiWsKlKLbnKP9o^=NtVUj+VL#nl)LlVr)gz75)4HqI5J^Ha1hSCE!uEjs+@2=-RjPaYP3_m=p((Dx|EF-l9(86G(pDvWTNV4 z#d*Ev%}Z+`=-Lns+S(){p&H4?BCRZc*L+$bS{-R`THU@V6bILlm982@`qxOxICNVV zF@orp+v9Y-C6duN`y_WWFBD&sAhl*Ko(uHOyRewqGEy*Co5%HsuZJMA?+bmAE|e?3C(y0Ge$X zbi}iv?aYk|F8KLi+vUg>w5<~6$1hUEs+aelLBdtFV#~5A5toR=;DN?>aya}(Y+=g)UHu-IOkEvQq!i+fS(;)6G$nGrd(P~e^mC@@} zBV`~AI0{$2yZyJic;t%R>I#3Tj9!q#t|i60tL-Qfjv(I+HB$QaYH1J57ktRl*xd5G zOCkUv-NXf^{;atuwhvz^;JY$*{fP-({lQk~kx!l2GfMdG#U*9jL?$A<@+Zu_NoDNg7x2)f0eAm1#Fk#4`ct$n| z3N-)flrD@S`^;&a-eLP|=UYZ+YwM#gcM=ZO`*CVS_L`^Pu}D71e9~svyWpebpD!1n z_`7aE>3DzZ+7XClKw9c=A47JTT-V>8kkD{nq7}Bg@8HPN^U)~tpUo~^__Jof*!3*o zy&nYsc86a3+x5oT{4KU&5CUwHKu=+6r;_SBYxLFP&C#`1=;lg?l80Wkl-M8sQEO?~ z`H`qosB<$1Qq)c9>QP#}MJ4;pfCPhnoQ-V_coj{|inlIZ0hi+CM+8y>)A8 z2_g}ni@yWG+U5RIttnm>DI`?Z2OCfdar3PqQ+cf2Haf(M?7kJ*hnl*6nynkgbz^Vq zomlG_3GpaF1gDJuS3^uGGO!Rs@wbSFCj)tTYMljDYZLAE{m-1jgrgh9+xHlZOJ|kn z{G4|7n#m6e79GZ?MC+@t+qg9u+2VECOhuiUB@@ou(8YN{{R5Bz|2JPG&&B}N`K>hH zg@u)-f=%U6QX!GKzT12_1=;le-j}Mx!Y51Wx}_uT6>H0~w~7ib(1wD(c3z zADO3ED~;CK5yjSllPq!ElWaDqcyX@aQ8G!%{6IxMX0Aak)34aLD6lTt!CaNHg(qsv zzInxgW4RGz%#g)rWq1dZ=7*TWVTd}Zoc(E20l5z53f>=%+WSl#kUBJ-ZE}7oe$A~} zKF@zDYjl|>459+3`D8lS?35(R7v1YLRV758p-;dgyivaiy3bOXp!T4P8is5>TGs4- z<79!ndSyPh^|INV|K>9phztUn;nym31R62LNrH-_8%V0`iGNp*Z{5!>iug#E8LI6% z5dV(w(A8~2Xc_rDWwh@$1I|IDnKt6P$77#BC-6L;Gye+uUKobkSk+ zkufU0sFu+s+%e=jo3!tCFqJrT9W`7il`TPy_Nl&hiaiq?mPuJdC-soPktshlds2~z z61k?RLQSz4Nng?NSW~?j7i|hpN|M<5-;EmQ!EF80{V66siEJ=Nbv5p*P@I2mH=UD} zspO`vJh`uF0gRmd?2 za7`Mq-5qJIgfsrTMGeJu|2lBGEu>@iHsz}--T=){=xJG{Mq{j^r4&>F8n!(TAkRbb zY4c-k>v-NGpA<_AMEl6nSOo!u!{c?#dUY7=ApM2|V%LS)TEpD?u55HySa@MH+7}M_ zTGNu}jEp)`is{tO(G3`y;Ipt1$dSp?Td?Z>zVIqJ=3)fA4)^L{>=;(o%BBpj^Zc8U zQS9Mq#L((x%pPSQD~}wC3lzSRDjXkZ?x#DmbnY^J;W`aGgbF44><5IDKzDRe%1B3v zQZEz`bGa~P<>t>-41Rx+Bn0=He@twg?wpn6qNVq+iE)1~F}dzK(OI*#v>!LY4y}NE zW#|n~{&%8}HrC@tvf=PlxrS8eR7>&z2uo! z!8FI7L0~l7@+u1|7A{=5kD%lp%k6$IQMTEO1IHi%3#-62 z^Eoa%w^4%yP88!sZ8;}Qk#@j;!4hQjex$qKHp{qc5ffO&RRSKY| z%+&-sTf(7*q9 zM|7+D!c*JkZ%{6?KOo@TMC4RC6a@5{%$6npt*A+dxgW-`G_0!#2X1VivIIkOZ@gK5 z$v>L!-OXY4iy%J_;)(P1o?w_9QZ=XO6$N6t@3k18l&oB^2njPR^kir8Nrq>Ql<}mZ z>+(kaY#x^t6PiFV{-gVt#|$}qKfTkH{e|NitK&jJYUMJGdG3x^d({<6u3fA<)!qL# z-B>%e{bGFJnCV~9YMQT<@%>nrFlM*7d&w-ePQuc5B_@rEk{ZHhC%Y*tdE z!7t6dKy5(49>(A1Df@A5D6P?gEzcWX)AZgC09 zEe^k~D#xL4Z(-;lakg|24}osGh>niju*PUvtdS&2tXfB9j^%MkyyJ}L7Q?wt7BA@!Pu9M*)^-u<#*WU+ zsmm?%^uv)+_3&%@qo?aPt4UImUEpA5hC_~0)>bQ#o83XJfu!To#bGHy&#XG{4vAd@ z=p{&YHme`I&A4yfvQR2bqp0u5$MqFc5gah+JXo7+dHfR@Dc!DpY9HzGNaCT*G5B3; zZK_NCnzg@ht>Jzci#`x)dR=pD?AWHcPdDyhtYs6oo!hl>tH9r4-%2PAyK)s=Spgaf z|I_aE>d}MdSBof4mCu&3#uUU{t0*qo3-H5zTf5`qj*GG08~@9<0I}mtFKDj_%HAf_ zuWMk4BHGN*1o_e#iikgvx&5FhGVm<`Rv%em)d(2&Duc#Ad=?VU5gi{fdJR8|^MmI~ z3|Q1*1CPvD4`4Q~rat^x5jzS&)xdq)6h4wk5K@DGu2byGc5+XOiGmfQy(f_G1-r+H z9tdH8QLJXEAwF>Ql!?JFGyT%l<&djWY5_eKbD>qQ1GaJZAsR@Gfh3C};P`(SMFTA_ zQ=l*GCYrTlmUy8SF=(B&sS`(3Z@%?Ok-Y^Qz-ACibzChBz3tL_=q4Vo^vO-}VhJdS zl>!MhJ+}mY$A3OqU2pxOgN8XNp#Al*1dBA&-rWzs8RqRa1*e#&rrd^Xj)|K?{(t-5 zcOoa@Ne1#WMr-fc-i~;U;5kHZ7FDqH%LkpZPoCXfqK_%IQoXPV+Mp{qH=5dV>hcl3giJ1RN zo|b4rl@JkibLxNXT1X_b>U(D#fnTY}_Q4m;K{8e?949#(wL&dpV}rO@*J@_9c@lg( zC?G%n;d{Zu#0rzKZ|`?AI8XKIBw;GP%tnWAtzmdz*YFe zPe=Y0Xq7LR?vhwWNAc!`vsN%o0=jnON-@UJ)RlJY)HOkPVg`ee_>Pn*(({hZx5{#=4K zRsV(KFMk2l{#d*1MPMkVHNs@ufG3Ez5OoW^dxzb5n?OAXHBpeoxCI0jFIo)yBxOAT zh}6aRwi%4fH@uJnYqRxqx%$~UN-jnI5Z6&9+XmshCm+#6?y)>&uidd`$SEGLjF#G07+`H8R{FI;`kfUT!>NEK?5$Pukr z52+xWS3tKgia2qf^LKJ>nkWANLe5Z@9uQ@a_KcicVokjFhASkSo(3lP8eoBiuEynj zs6;g%y$fiWhks)8Kp)D1x*6W4`>gp6B&0e|ZSrgB0Y=3VGu=sq0oeJ!0cb(Zu(Kyo zv<4||qa(80mzBmEX)z!wg?P@CoO^lj1v+bKRyyOjj%vGCJ!H!&Lvm&K5{Dr`cW2So zFP^RaCY2#h_1Wf-gF;zqD0>{T+rVsgZcsXdzQhBuBCe2#^W`2w)#%X%_x#^&)2boW z>Bpc+9$D%>C@o;ippifc*q0dNGsKr+7%Z2u7gURHnu+X%AYazP8}&^N2TjEH`0H@m zI~qVudaOlweHMq{$YrEPHfSc6lM52LpeEK1Qz(bUrE6BMt#7hRs`odsoS>7o*-zaa z`P8vnZARejyR5fIN+nW?;=RnB)v)8?4|cZkYdkpCSr_Ry!%2qNY&mh|nfw7K>~DfP z!~ushr^|$TH0SjQ?49M+C<93dx&TIni!(W;D)}q@xWQAwU_f%B;? zM^l0g#l1;zSC71%5jOj$U8Kocpa>Zn99*+d43JErh&L(7DGiKM`FbN`$Qq!@ix`uslD2*_8+b3f7cJ_k6goK=F|w`{1Kw8A_ZS};m$Ey+T!6#gowZlgE9=~&kzyrBAPs>|{GMSBg2+paD zb6SA+ut}HpL8f--?Dl^r&Ws2$)a3^he=MSot@3l_gU#D)xNH++6EQKt*qxBtIl2Wg zj)zIvE?_JBaWd3MNj; zbk1FT@s;~Y_i{jJ@9iSVg3yBg#+-l07Oq;nI5KB*Gc2?)G|VZqx@1pbW^W0S&8a=5 zhnV}SQtSBi1pM3n@QQn@X}?W<{po@Y(YSRQl$q~DvQdck#>7meLY~zLE1kC5514OO z+?>fahaNwd6&vi}GlXK>?A#tRi zu6m>p4Q_b`Jdzomg@G}<_*%prt)T5#KRqbCr#)kte9iVW2=}_Z?w|#1R z=nU5xP}4y!GSRD#aIf|)6i&!z+_mEufCApU&Pr7Yju8j+HNj7}4I1Te2J!pD-E z1BGW?Y6q1zj&+!-Eo+yv1Mcl+!vnE6DEwSQz6bdYN?OcSo)W2DnYc>{hF*toTj+OOb#`OwtC%LLBN9! zMruO5tae$6cq=!E=rik}9sopk$d~#&-EuaIwGQQX6b8<_YA+U2lENO?C0lt4T z`S}m)+x?uOAA=8Qb-dh-{e@=*;wg_TTExK@o?`P1s~rAi?<~s1xv;%fP{V^V>$mUk zSMm`V1$mi;C(>M|+}F>C{kNNbP?Oadd1grj{_A^a#>>5s2fHfMhe8^;z;r;+B>d;9 z#dOLn0P(ZRwXm|41^!dG2-XJrTb+jWS&axVQ^DW=Wz8kV-e?)SAb39f`tBf|@#BLk qD7FEm9s~TT;s5{N|2OBM7P_xwl3Xlu^Bij<=-n{*w^Z9U;{O0h-J{b0 diff --git a/doc/_static/partial_hemispherical_grid.png b/doc/_static/partial_hemispherical_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac6d09b52c914eff1a6ff445ee207367d2d9c18 GIT binary patch literal 4400 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 J#^m}0E~ zBTGnjvhT}SCWCmNexLWBct7vw^UTbB<~jG?bI$#q?>+ZCgd4^v?i0c%*x1;(F=(V2 z8{45W;G@lX82IP?&j)J2&k-M8j0Gnr=g_#xZ{SwQSI^ql+{?+=|Bm-vHfK*SkGl#! zj^20gdiuC{`K}(RL$I-l2xE{s76B>CBX(Y*eUH8{oSjC#TR(X`X7VHX7VYZklYVDT zmI;43&;KBTlQ1r!boX_-e5>)~FH6Ile#t5cS!y<*4Dd4#_1mXUKY#j@7gG22!eN>~ z<$NFKq3o+Geq{ng=Jr}!it=n*2f0e~K>UPbLkAlvK2H8c``<8!*evLOb_Cd- z%dz}64@gTr$P`R#vq-qwAp zDX%+zIt+=UCaNQn9e7E$$=`L)!?(~7>5c|d{b1i(z4P$W{>TQr>(R9Kg8m29H{}

      (BhJfiB__5h_#ldqrH>^?Z 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 literal 0 HcmV?d00001 diff --git a/doc/_static/partrindgrid.png b/doc/_static/partrindgrid.png index b90c7913e18d67eee523b677af36f323ab42dfbf..75a511a5382a67c43426928f6f474498b0cbaa72 100644 GIT binary patch literal 77426 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 literal 32202 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 z z(r83XR58`|K=hEgYu?w|0tpe(sNgkD2qa?rLIRysF1IT+O&*NaSyd;D zfv64yyLO9zBJ~Zjpv4KGg}wlbjWr3#;i9{N_Cp9=djO42fJcBpH20bd8O;ID f@c;c`l*Vy7Mus~ZcB&N|4Y_gc_SG`OdvX5<(b^Jz diff --git a/doc/_static/pipe.png b/doc/_static/pipe.png index c3193f119c2ce3efddad5b40533963d88e3af2d2..feeec36e654304358a5ba0a8d1b70b14fffa31bf 100644 GIT binary patch literal 74390 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 diff --git a/doc/_static/point_sym_before.png b/doc/_static/point_sym_before.png index dec83d049f476bf50d643367b175808d97fa35ca..d87d3a499ee57b20a8a9440d9b584f037c3e5372 100644 GIT binary patch literal 10959 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 OAV4ZUP$-f!4gMc&T$cj? literal 9265 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 diff --git a/doc/_static/prisme.png b/doc/_static/prisme.png index 3a089ad1dd9db42d49be6a0aa6162a2137c93f68..5912363db0aa20a5777c70f39983f20439a3a118 100644 GIT binary patch literal 4428 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 F{{ifeW^Vuh literal 10061 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 diff --git a/doc/_static/prisme_gui.png b/doc/_static/prisme_gui.png index 68ea36f16af35e91566aa3b81c43e2e4a1a903f9..9ab7920d396e2c1f4cd8d2782e349aba2dc30eed 100644 GIT binary patch literal 30894 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 Vj*c5QM8Wt#z>cr|>giEu{txH)_U`}y diff --git a/doc/_static/prisme_gui2.png b/doc/_static/prisme_gui2.png new file mode 100644 index 0000000000000000000000000000000000000000..8ba49f180bb010cf6ef938f03dcdc4974a273977 GIT binary patch literal 16524 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 literal 0 HcmV?d00001 diff --git a/doc/_static/quad_revolution.png b/doc/_static/quad_revolution.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ace945bdfac9a89b99c2f9fd00ac4650867ab4 GIT binary patch literal 4925 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 T)lhi>Ou^mdk~6{a+MRy`4En@~ literal 0 HcmV?d00001 diff --git a/doc/_static/quadrevolution.png b/doc/_static/quadrevolution.png index d3baf1d0108cec36db041dd3bf46992b82888c95..39d20e0b968a27a3554d9d7c9ddc69f9f6440d34 100644 GIT binary patch literal 107478 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

      WpUwZ=n~niIpY0YUQE|j|phhBO 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 X;~VBY?Kq2XFnD=%b>HJQZ0`R7^;WH` literal 33700 zcmZ6zdpy(q`v?AZib!&IFA*(t=e|jbVZ$csH5Om?(8QajTrHSU!KYCu| z&?t}HI{z{DS&n&YVfW$kr^BH_33JecJ3n_nd35yAhr2QVW@;1PL6Yx|#)h2kJdi)tgFm*%JNdxxc)8Y+7^b8N|4M7b9Ee71DSZVJAhnw0=7K@ju7|L^tjoMq=< zzrZx56QZ3yNk;DYweUTuzoxuz?a4fgR|CH;i(@?Yfg_cFty!D@Eus3?axEpjeOA>n zi+con#Ei*qlw)unLCU-G4#ET+Olfb|t+O(IN)`T( z;$tfe^vs%8h?X!s5orw`aIG_g6IaZXh%3V(TB7j8L;=5LgE^@)YcAj)SMX)>FQ$(M z#y8FAqnn!pmDldMBt&W`gD0Wuy?tCWMKfH~_IK*+RQ}Z!fn2`w*Y(lSoD8$=_A}Ko zA^#K7d+=mxDxBQ3{Xmg8Iq^v)=GU_S{C9TJY;$&Td(vM+82$LycfYS&5ec~reUvTF zi}f%6e^RK5eyB*?zP~9ERZvOc29&z&?)#sl00|+6j>bitTkv0EKScLq7^7VrjUP4s zPh|h-tY-5zu59;hVoq5vJ^Ho9lMA_o5>Efzv;TYM`PF$}e3Ws$4DZk{@!$2IU(C*B z6mwRVOqc#g)yLIbYo8TS&beQ@zl@w;#79+y-PZcGsq1;EDAoV(r_;KUQP-+vM)v+v z)Si^PKl12{JlZt0X0Nl8UM`bn52I-xj*ZCudU5SB zY~$TNQVoUpw^Nzg|1_;=b#(Ot+0@nL*E*+nMIH37P6ccw3D}B}DTp%-sAimdqsFli zklB*Z72i}zu>wE;GJqCw9?JzaY@Q?Mj~zMiYZLg_y&DZ=Q;KnUtr;-?sZ~CoKQ`Rd z)a0xKY+>Zt?;GLY@(&!g<&~MK3#@zXcr>!f)Mw=%T$CCvY6K25^ZOh36}Z8V>RhdX z@1x&891GnY3$FKP<2aHG{5T*$XMgUt5f^N9~zEQl-8ZTfP`#2GPEH~~ABA2nSZd|xe7`j)D=^K8D z1B&}@Ac6Xrvd^P;;YQHNsDW|GxML?vQV7cV>$i==4nT(0G9+_myMM8|oaS@09$P6P zXwA64&$BwThHQFpI>u9FZTb{46H|22{UDiXt0SP3+Vd%`>;8x)R)J!?a#YkTa+ih| z>YHi(R__N0ij2RURA5Wb@7YT_%WVHcJM~Iorj|BM&7_^cN3FVuKvPQEnpkIB9@E&k zS19ABsbTJdtWF+H1jYw|M-SONCgl=w~8S)EO!ap|Ky5>Tj~byC6Vc+uw=Ho-Ff^3rfsEX71nlk!s^T?8Fze6{&@*N(;^{t zvOR};1>3@s-7L%2aNJ=xepTne7I}lF>Z~Lj!ZU`ToVjRY^vvR#EcCwbe^wR&tSr4r z1#va^oBC~7pvfQmYZ!DiF3a}JAELt0GHW<`-RaX}!H>ye2Z?(a!i@e$Rgq(~owq5& z9<%|RHGb?+bx=y^@Qk--%9BA2Q*rY{(3Ha@G4+y5PxIo|7FYa{OaL&A*{U*Cr%h6P zd1reMLjtug;P~JWHtM61@*aqJ3^^}CO+{M!ov9xoQH54DRS=&{fAmCp*fB^mAC3b* z^1Zs!J{ufPb!4O3>b?9cUSR6;d(mmxtfEOdsAYE{M~HZa*)E+&PtbYP{n|I<4WT=+ zDjbV*@DljcQp%LLqId~*?H<-B%CdLz8Dizl&g*uy9^WJ-p-$yhApjT0JSU#tDX8-} zIDF6Z&lO`_p8Dl-_#UWC%^cn*Fy4TV_mjwZuT4TamRJ%R=7(gS0SFn9YLyv_@Hu^x ze~-JhiJQ7E`yuqaF*F72GUi~b4Ez?6sefRXj++P3%?yaeKq4yU2_WSsi@Cg8QX}@( z&{uv8=6-NCh?lN*qGo=K23K0!1n1ow{Jrb@q0=U~sF?UE@rI{^uSZc)itleFxj-_@l*o6STdB(C@?zKXA+3Cl~zqH9MQaNL9DBcgF*Lz z%%&`u?Ip{Rw(Y$Lj2F2~yKnio4=RDn-`YS*Q>GCMKd4HHU!RkDfETOz-Z&}$!DH@D z^g$?65*Kw^G&QiL1Q}n6scBG)6V=?6N@aEP>RBs$V2hz}ZNcTPU1&W=$jp1}sQk)NEW`p)A8(6*I%htsk6_v77OPY>-kMYg_B%Pe zGLv&PMl<sALg^oPQx2gfU{gWEg3^TM_BnbOkNZp`Cjh9a`16)$WrDSEB4b1)$Jnl9z#RV9o zB-qEgzODle+sAm^{Jt*#me=5S`8wHN#I3Ib3-UXSL&oJFzN^>}JRRc$w@H~wC@GP2 zx7#7cSnF?0a1guSag5ZMgo?(Ueaod?F+?v2;Nyg+%xG zqo9Yqh3d6=8&+!~%)3uaU17@$&-_Cf$)g8dR`$ouH((5k11nN9JIAw6R%Y}$WO#04 zPa%Ks^aE)K?_G;?n*BL?i=|b@93cp}rYlSxH9~>O)ncWBNdA00oO~$dR!LF71;uJ* zj$5cO)hl~QA2!*Qc=0XwO13<90bY^=y#*ejA-l;u;c+a}Bpu7)ZY^R@ykq61mw7Q) zpR{;sEFdEGg-Acj&(XQNDGVu?!^;$a3_{KSaQhH<|M#ORJcdfD&(qA&E<1i<{Ga|> zF6k-s4h9RyaP zaW7EL&wI|m2QlNADnIhYYtqGi5A#V93ZBQ^aZ*DhNlnyYl99-NP0>$>8R4QKY+RrC z&A3GP@h=BrtA=&l!ihy65Car~g~M6TgXBFYaIOv^e@87)&Dwz4ya0pe@tnGp4r(i^YU@?2%HBI$}; z@AQ^_!wubH+}6s7IK;4+7g;|2S!PVZ>0K`s_Tbc-{UR&*uM{Qu0Yj}%rVN_g&d{`b ziqeM>=`H7HA6D%EvH=hZ-eI=aSjx3l^61#r!uXjoZl1k=Vt>ux)hP}#btCAU!(aIx z=5INych%7jLVZRIFO&Q*^?=*w)B4adn2`zv$R z9P3`9zu5NVu^e(rYSleTS|cju|6^nJ=<~L$W*o@PsK}Dn>OJ>^*r`l$S0#XP6C*PT zniGwaz1Me^Q_ku{(6w1%vD1DQfwpn0$UikW^1akSs{?Kxmr2y-C6Z0FUk!aEX~-J# z-Lny+1oD~p^J1vr=Im27dWy+I_VSy?dR1Sjq3?el(Hm{iu!jkkuqr|pvUYkokXThw52-8K5!-nmSEOQS zKtT0xzbBN0X~usa`$pf@WLkQWD2M0+8|YV1RX%==--U9v-G+=o zEE*95LBdgKvp9)0Y7&B-G0CIn_b0Kh?)llB78Za%>$**u|6ss3z`E)w5EU+MtbcuS zm2S+a6TJTeu$SGpu=DVp0M{22)^>>U)zS#t^cPgOI{}k^jvr2;%&-W=fv6A2dz{Eq z)SB-8NUX^l2geT~%>`DoHy~57T$vGRa0UtZurTbh$0{I31;M8fNVpM^{g{Hh+kc8F z;TKN6CRSn#F&AC8*_`}BNn8StS<(-O38jZ_!2AA$+Q%Ub#+P@}ZYCoT>;A$Bq2zZ8EH36PF z*L)8VCpGDlR#d5pIn`SIJWRMoe45Fl{;-nu#+>}Yxxb>0A?xqlS?+(WLD4Rm3bI)A zWZ!_Wi9YZ$9YC?(zzgpby?R+ z6!ZMx%c~K6skfeO-Mll$EY9^g3R$0>7YVjvwyP!|^YOe}@!L*R+6j$N;mg}W4E_8v zoxQdyL}yuHUF30e_oDZG_LF12N`PxY+PZ`W;fF~rRC(~|sFR=FlbZ9-i?g(TL#p1g zl9Iy5I+AZtXm2KR{_0uuo>`);Mv^=qj~){!i}{yCRLkByn@kCZ)A)~11KiF3@m%f> z#hy6Y52cN^59icgl2~oX@X}wg4N_g~8@evr9bCB8zp*n?G8WDh1!0$fdoin|^C`sd zBsWoN(hE;}s`l<2hiQRkDH<8QD){zVdMY2%$C*2tk*KFeHE;sxEtB1dDVVyy`*gmx zE&X0OUhI&@4|K-@X>l^2t4}J2xm}>(9PTh~^FER1yy;`CWJ1abpH}ivz7oFiAg2AA z!M>PmVB~7K-xKJFiKFhwDw79fu~IT;p@`|_+g%mzq5de%O+({RW4hZVx9(#1hr2+W z=7R8K4G@Qu2N1heP21z&uToYbtzi;BnRQsiTeVL;Eo?%8kvVQIYtwZy)-Z zp%JY($w$|q?yam8bXR=Me7W8D+WYXMkev#6{~SQ;cNbG?^R8A~6KG1c+J`M4pZoA# zZ{TOBokSHn-P~2HQv5-cR-eyo7GHju7J5kldB(t}LREl~{o{ShFZE?N^0rFEraCU{ zVA_;kWv^QNY3oaPa?^h%p8rZ_ytc*(lw`a!S0+?F7Je7zJ(~rr33{7Sg!rfQ(~X`d zXEom48QS`H&q%cYNi=M~6~c?8NHvM3DDr(N#zS?K8yG>x(4q$FLEuo^UXpj~aAh<@ zF>tO;cP!Z94~NgIRR?Q`h+^N`J@XS8^8QkH&Bm@q{O5)3jPOq-A!i#{Swt&Z(OrJA zg4AhUb2#%3$eVFK@NsXC0H?#yO{dudank>-y{y$N{~0@>z)0LPU-WM_(UbG!BF&w{ zbr(MLOJhJVLKHs$&TrjH}Snekcl zA?9z;&a!1jb^=)$0>*Xrep7L?Y%@=vkMr@^#+>T)vc`Bug~XjEl~+Fc<~WfQ-{Iwo z$8C8Nukl4}lKR9Ogj!{4JC`x6nokxM9jnVZN!|78Yhkgyj^=N<5$;iQc)sW6>t-uw`&SwJM$dy-U>fA<1_+3yQ zsUJQO(O_q^bpRJV@Bl1@oXAU5|FTq@WLtUon?<$W`A~<$;MA^hD7CG1z7kXN>W-tiU6p%yYASL(oI*Ms zG@G%I6OH|9U>WEu5qDZ(gG#M3f5CW@Xt&4}L!Dl);!)%vM%~tflpV4?+8tM+chWY# zWj>Trj`eZT`Wa|<6_&q|LD)jnpg5p>1kO*9!m;pcICa!eCgmgF;+@`cWL2I=DoeEa z@@Gcr@tR8#eyI$NFl6R)6k27n_A;B`61c5EZmuJ_pA1Ny63+sws2u`AFkEw|(2+l# zyX}y$>T;fm7nSs5ulZZDx-TL&A6AdUWx^=f8~m=~^{)%?R+&D4$<}9>XP<_UvVxcA zV~_ndN10KbK2G^<-s$lvE2E5p#MvTacZY)^JKbO`bQ@>BvLBs_Tq@imBj)nldTh5P zP%%#c`M<@&$33?HpyJT(xTlm87|Gj+pc5PNJx{CxIw|ip11;*YCrfD&AF3lR&e-si z8u#%{t+s35=e6lOo)M*jYP4Vl)OGpS#rLgp15SEIpbNB*q||Vah&K7MymON4+E0P_Lb>9yy{C2+m)s}rdNr&ULm zmDUf!KXskxrlPZ2+Zb z^vcsE<4E`|dG7-U#DF%xop)!I)^y{-Oq6T4os)ZuibqUJHZtS`5*Bi}%~$F0^oGS9 z)D$2IfcL1q(wAul7^&cZJ*@cr(V?r0<~reLd{XlJsR=`ExNNPGcEclq#qV!Zw`i?< zP4gz@yg^#J0!Xi+$Zne298T^QHN*RB@7=VN<6}?tXxJ|%&ueW|fAxDuK0&!1j*zG_)v;#l z@MQL5XNtB`i1=_VY8Xzv>Dx$4{hrMj5K?%jby~Id;wt0{^J@mY$b?Vd^;83I-A$P- z(g$(HgqYgvPvX|_5Tf$9XbuI}@w#a1f&}VxYM*$_6gSNy_L4I*0`OYXGWwu|A2V}kE$W?@SH-bd z?UF3a#qYSO;Z$#gPu>|DN6%Bo!`l`I%w2h-5h7<@gwXLSjPS8QoJKHa;Uu|va*{Pq zOJIuc*?=}r0|o%51i1UhjnnWS=afM zGzBL|lti_)Jr0-mQk zCy7p;kDGr+ZtnNZvEeU<;o7J(CcZ~Dr$<5a2&J+XRfd}iIXLjzyS^b$#o)U%sy_%l zWIKA-{(e@7Gow815I(9Vf2I-O!+}N)XCbFn-OP~cD330c8-eG_v=Agv@M4uU3$1QT zH;-c~CF~Tm<5k^m=R@JK1BF2+#}@2I=l+u)knF-TuGYM-Hlxu2B?k4#?G1wGmaNx9 zW6hj3U=dKW>RQxC3{&sZNb-*6(Ik8~Z+{$8b3W8T#?xCf75NlbyaQSNB)l!?hY5$p zp0vhAGjLlM^0p<&*t2Ar9MFfF3K4CV(YvnM<$RJ^qzR=~#<5YPPRVcjI>Rt!n|kI! zzT%B^V~t`PzM~7jt2-ctjNQ9VRPZgu?G|Z+b3lFdt$=XcbEHx+jyruv1BD&3A-&cx z%{i}o+30SK&kb2&6EidHLUQ#!Tr?NCt?gD#vj~me=h+UBmIwNOeL#&j5$}&aI5WHR zWm=M137w=>FrX?auLK7G@gl6)usa&ikq&#pWYZ7A8S0rGF|znq$jnngY?e z0lsVVGzT2tKTG!R$v7d28ZuPPakOYj1jICq>iQ7Fn+RBFvBU?BF4*9XFXXJI?i@1v zy*m;v5gjTAtoZ~0YI;b)WoB1Rl!X_|QseULC9xSliEdQ1$C$Rx;^5GOrh_I;{7+oC za^aRq<%ZmPolj3`$}8&zkzAP=aB|T(-h&PyTfF%FXR*}i`Qyd7-_OsapkJcN)U&}2 z-3ssTM^v_IInr}~1-K^b|FSMWe^cb=xR|$)KvP{6Vk)oYo-A|+bs!5`_m1XH#e<`J zM&LOm#uhYmX}Mg<_t4n9>KY~W;B+?&kvBo;lO!0q`TTRZ(i{5WLz~l1z?36_8cPie z>A!6*+ah)jns)V@7GlD9>n6U&%~Y4usU2+OpYIJS{8K5sPZhT_>>b@*ySgiJ8*<)b zmb;(<6e<<@*HiaU_0;^Y7u?0ZDO|@XIGkx! z7zphB6LJu89bTC9+WP96X;4tHp~sqxLns$Z_=}nu%jC+O?iMt+IXZif7*8ud5DI0B zAwI;OlKe`&zcmxRmRck=6Wmy-Y!eQr?x7qEa4JkyPZ(O^hxs2bKQ?6rYxf$P@+!Uj zyl<{{&OYjjM{$3IF)@+3^|;ONUKf(&iC=~wP)(cMI`lc=|D6R$7;7X4)`ahq*9mW3 z_P1Xx{$g0`SzTCCDtd7y+&oA3L-3WV*H&!8Ru*o-g>1IzMbEE_{H|j|7uf^A^d9*P z{fdr%5k{&RgRH$=?-t?wu0mkIIVA<*YAHrIQH%DhhgW`tGHy~r?c%=FKfcA$N!rp| z;3uRn1ow37i<;d8@;j6OD$>u8(^mkr`AcKjmd8HWJvnWiUd4C#0sq}N{qMgHUE@a} z*;->?{fZ=_@xq78cC^Zz-rXugcp;5yB)3{SrVg3@=VWzC6pdDjGcEag>P5EN&ruux zn8tn|vzgJH^!^PG2h%Z@MD)mBAZE~fAzVYOylh%FiH^55=t7F-FaARfi9X}+wCQ-p z#>i5^cU70<`wgH!IcFv;NA0htRwB*kq+VCjUspxmHUs_QFj2FHD^ch!>S~|l0=NO-#5Uv?RKg6tYTbK@G<}^$MXDzghqhm-5^N_Qhz)- zub4WTWcF7K@(JmDJ$|3?`x(_%uhoOvGoHAxQ5#Ekz)gPA{y6^SHGJWS`&`YCa5tzd zWrCy8;+@!>&ytToH7cI_-7q4};JOgG_sfoaS;m@O^^0qK7GLDT54gG|!iC|fBl+AJ zCiGy=7$BY*#F9XTX2W33{dGe(bhPP#8gtAiq)sZKU!ge4g}Rcj?0e+$HGUGv8aet7 zrYm(4QIHQP6d2-Tb800IRa<&E$(}BGPHsNvugku%NwnsHBS2bwRk3Lq zF94E*0tOr82GgV%UQ=GF1_$Pa|az}i*u|E13XZgq89_L+7poOt4{(0+{>H*RJ?Rf+F|K?uxH|y z_RrB9+x$@VV7r<~%ihW%^R;#d0K#mbhIGurbPT=&?dRBvS zmycdba(Wm5Z^DdyRn8j>Gh^LeQS7{ygXw)Gb9fA(B{Y2$*@Jg5v0`~6#m#*GP7A*1 zjb^R+eGaIa_SnR za9^ir(pfr-W$Gx*@eAw#|IB3MhsyLOjW!pHdJm7gzM2pS_ddW+hF(5)xwAEN+4Xf; zbAQlzvPqHB$$^UtPJ78_lavawX+X=Hoza**wRyMg)}#If8KcmRMFIfAm@HOXIiC%N zD7v&5`qZSpVD#1^Kd!7gKDdWANeUdRGu|k#(hZ|tn$z`0F?`b)cu)dn7de$q5YGuCG(s>=CGXk*JTZCG}NgXcJ!OpeJ_R%BNj^wx3URVV`dt7P-390V8W{IA0{K}I(_rGXV=PTeW}_%;j1|=xs@tg2sl7bpJgh z;y--hQFOBKJ2`~ezX0uSrh<*%>?PZ zqW{6a4?l54*4_!n$BeF6d9D9j4Lq(CpdH?QtPh;zk4<@=15S7U3MR>wG4gEsx86yzud8AC7D1G+YN3-=6Om=NGI`XdZ+X(0M2Ao`L~AIrH0 z`!rp_2c5{YBFg{|hn4|;`C8!q zw(G3Ag6?&^f2&Ze^>WY!1%{&A;A{DvF%E1(4$qt1{5A0K5chN7meX`VP#3K`OoP~R z00?e837E~#C!hK)zR!=KuzrQCkDoqQ<>WhAS+p?GvtiL8h;2*4g#1sH9DA+bHaF^! zwzH)Y8Ts5`MHc-v%x%vmH5TX(*kA+la6>kcL0K3jOrxdDtsM)4sec}J*YHTIMj*F~ zgXj;g*d9?#X`^~YQCY!0>&EEF&qfNk>Y%AF0ycmSe0xNj`-dB79yfe@;|Z_^-<9~+ z=V6{zM>H>^ZnL#+pHgH;yG;C)$KU3%Fqg~K zYA$s+8}VqobVeT~eTY9yN*X=&?!u!Q_?Uxr#LaE{Wc5NUwG$&kRc6?} z&z+MZO|O-ucMSBdG-ZqiTHfl!t4mm#5BbF?HV!p&z1DoU75O(ed|ZNBI!Zx+;h5vq zOxtisYkFJct6H*-p@%PGY@{!ybB{+fP2?UjkI6NYs1+bi#CUu4dJ8qb`npGvJ9&|Z?W5w`2-H{)VyaG;Bm2PjA z8-fQ46i({FX~UMpo=rU^f0&c*4s1-HxT_gJIa%ZFi>8wM@_pj0g8uOKSnAJ0xOq5G zib)@F8^h?odU#J3T;kd57koQy3$y`3gu&83Z?RI4Xe-Tk{U-`H8fAfOuo9@X{i8KK zOQ?gsOX?cOAkQ)L>Lfqwr=0ku^R5*gprFwiLD&^W^F^3hW1e51_-UZv`O9|mPoN(& z6F`pjzcnyZA&It|>c=`N8^l3Q;=Bs4F5 z+Bkt$J^0Qp`3!SRKt+>)3LRK;XWT}y*ZcvoSdGVTVX-EUO5o863oZ|jE@mYzxSU*L z(=J61+afx=))iCFkQtyT3xT1%b|SM%o>S%XWt}4V&Cv7ME=N1DGu};?lWrb{P}kVj zzwMmNH#n@(tGX$>MFn}NYXBHCOZJ-W-RptuMBZp{t5u)8bogO%(}xs#$q>?ZsRB{A z6q*)R%+yoJd1XDx`-0R>bwimQon{mXY=AhU$n4LPyR4yA+SD8!ZF`n2HZeS`oBB|{ znqdVdBovB+Qqc#h>#+o1Sb2Zwx2)0NuB#ST-V~S=e2*9;wDK^;`T-{`$zf!M)wO=1 zvhU3%5F`j&vfAW&uk)Gii0;zkjj~PztTzS}Z{oUsWCtb)l@&mQa@MQW+YS5(omddSH%!D97 zJa)!9L<{PDy6qu3W@7b35*^A|!iaexF6BU71ArZUPe?J?FmWkP>SH~2REzTAXZ zy|_OmKLyr!1D=vm$0Q-2<X`Me0z7*t>_itklEpl;o+_Y~8% zh9YmX1FBy2Q;s6v6Y^r`>>0bKwXS{He8RM1)(ZpcWHI%{r!0CKt!ZLzyv4f|1qvHo z#rR@)_uOa{^AnxsTc8W6bsCp zKqSl0GBIAZvWjs9OU63%oc_eb0)FKufdO$V2p4=KA9T^?8xnmASEINMW;j&9S*8fn z51bZ`A!9I&WyL<*$xoX5Ly=Iob4x^6`$db+XXyMo9RT#+sb|*SoB;}mtO^&t_pD0A zgGlh&Uai4dQp`N(%7>=bKh?V5M@SV8C$bs{C0^_Qv{5eOy=rDF;g4UD@PNGr(D!aR zReU`7pw59kjl|TUy%;N_BM*dfr2Szu3p0{ZZ_<;g%TMtRp8sB+S3NEa0q?$OYuj=K z>oe|mI$1FwuAOB}AC^peo}X>UejSoM$|~Lc980jWO=vQTouTDX#HUO~X2jpx2E$+K z&UqP=7SnW7(A$3#LJZJCxrf0>j(T34t?~^d*@Pp;4y+Z_K)NRXn!`T{uL*-(T9)F%o%O;OKbF}vMd)@9h7cp;BsM_ zIsE;yRgt|Qg$p$U{A+gGj)SV9dL-YMwx3R5eeB%GpY{SL#)dg3Pfml8qeX}TK{{%5 zVRE8X7GmxKGIks-;RpVnsoqqoq!HIO9|l95_TTIbOAGSot?XcCsijO~&Ki0g*;FD% z-m5q4HUq;!P!8xMxEdK%M_a~b5SqNld%IxLx!*G$pGYG3n9qkF&2DzL8I6C+^T(FaKjagt61*piH#NXV=Lo9P)l0_&#i|HHte(a?6?xaR!5<{*0TgKBd9_`?ZbaL+&^uMKs5|KUEJ#w&~iZUD?xtIU%D{G*ht8@_v7?T~| zhg=o=I4Bw9VfX$;HG9T2KkYQzW1GJq4&V}yEbAfswpL81zI2O0=5Z=$6HX=|J`+!9 zyK#tpKjlHVg#?!@rrOVOx2u)UZ={bFsFf5MRw1%Ofg^5-K}wald961H=gL4= zfRN!|uJetwo;Q*kjMV?iXWApu9Y;;QNB{V@(Yx8j2-%^72e$$MX{qGeXil@ST*tNZ zhUj&s-rfh6i>%(->oDfCX|0N;`p07tj;2K%q0``|!qiL;_4rw-=*kgBZSO*z2?8Wh z!J~{?J##p;3S?z-=s*pwqsWjHu>>qMxM<(EpX*O>aA*o(LyQW(ZSww)gUeK`9r@=M zRC83DfQ*E@m0KQLyP!Tgj z{Or4p|9(3-xY@-b>CQG+iOXvo1rDsn;R!(}0q-_98?CJs)GDzE;3qY{O^pjgRI>(f zk{DTV8)Mhfo-IH%&EypyRUT9^DFfXT179DlP}wY>444Q@W6BxKz2xvF5`5s$4ZxOb zX5BqP!@Otnq^Y`jfi6{v$ETEQFRwTKwgG_&WN~OWVmg3hZfuAqt1s+S8Tz=y9jl*Z zC6cZm5P`~Mz}orX|R^GJMw+=wcX4oiGkGF*st!-=&+ zECk0-Xas~u=tc0(XnGEV!jQu-c1~-3FXf}sUXcd;x;!oUw6nkxwSi2I=l;yA@o9E> zn1$!^Oj=>-XB|v+0I)m_d-0tucjPfWD5SbHNaGpha%jcqL*owlw% zJd>R-9l|GEx2W!Ib~Xo30?=y_Mnu%1-Ap&bh&N!k;9b#nnI#K|C-gt9b<3nW`Ah0i6Kw3+@y1C<#UA8-9NsBp@ zpJ6nVnKk(eWwM}0Z|3jqObDt6A*{t*N3I4jt@Q~c3*_EL+|L6}slR_$e{4tRfg3gu z8R(>JWMZ0O%%Jo5D$5jxozg)ox2)(_oH=g~v#!^q^geM&1C)oRgnuE7yT~0gE?P6( z?nw*qpD;H44UG_7iW%y`RMXd3qEG-UXmhPV7itl+G7mv4Rke7ew4<7XXco?? zsD1YSWWx4@Aw%DT0Ue0o9EJ{oTLqBJRoK>snP=~q$)<&Ee9HMu=jusoBReC4Nx{#` z!~Y7kI0NqPm1Cs7e|@V{IT;X=(=bWGQP>fiy)*A|6G13yUtEg>n7IUd?x>t*=x@?r ze{1M}`}1GiWVU7wUOhdZr9Elqiw+!LT5r;Pzu=lpzGUDgpNypDzvWv6hUMO~197$VZjbL{;)5j50#_m5Aox zqi$p?7kU!7Jt1)AmY(2`X&ninG=WS zO|a@^Df0e#Mf!TteKq2CREbP{8W&~~yh&a4aS292F@l?m2QuqEmPkgYoxqO#T#x6Y zFy$H!vDLbkL@#7eC@{#kpgRGbx*uXR@v<$4Yhpnf=;$n@GKLQpAn24R6rDThFgd?S z-ygD_EDZe=7)n|_mxs9d!$tO!`WRdT%)B|u-!$>Zq_OW1GhN#6--%b*6cXIPfc!k> zzHjQ!Ihb09FnsZusz#I9G^K>i!X4f>|6A)1w{$yq=j=L(5H0&1NM68I+App=NfBMB zW=xB!n0e8JP6c+poR!`_p0B*2Th$CMLVyQHY%J>MCZ<#Qs36~Y?kf9?mX5Q9yZ+qp zfloGUkr-bPon5aZBG?{tIZjeMzRzQPP*(6j29m>5o>;XonpCJKI6D+B3$+*vsPwB* z*LEb=sr)#n{6kJV{!pMK6$M3r!!Sv}OuqH7g>-3bZm{Vj7I z>eq=^Ln<=>9EPDwBr;!pWl;##)0V)r$mOT@AZ*);8P9^z1Rt)>YKnQl_7;y6n+O*) zRD@bY#^tw`M;J7v;Xvm*{%I%F$6Qnq^^$xAZJPJS=`}u|*W;BphfyZ>QI2z|F3k*+?&M1?A~B%d1BE`tNcJ7$an!lI zlE`R$@5|LzJOLesyQ85VPx*ARnJ{ftO;94p#Ph=_Tc-Y|6f+^v83dkm4YpN5L&SGj zPcYO{2IAi~8P0{l5s3QWUA|8JCv<4n|NB4l%S^m@CD_H0NAq)h51?+85u(^c)aYLF ze~I&=H&7z?d7Jp}F-hRs(hJ9hTEYc1y*1)4xDQ{wn$1d9wd$m-d@?o3np69n-xwDiXtPLc_WCJ0Rn}?zqs1>w6gcDPcqVv8;C|j03A+ zwFuwJ@p7TktrefbO4! zq*q0S$X~Ph*%aXYH{Db3WwQsxUI;n`?7(>Ba=nK|=a+cP{}w^)B>TP@tyL4#CEd>t zx^Sk@DZhHSG`qlQ;Llf=kW>130rKk5bIWHeb3$x?Vj%G0A^7 zbUDClaEKP>WX7>d^3-iR1PyKsOn?hOOKwM=S1GIQHQfkq-&!0BJLrFCiTI-FZjTx$ z3Aq5JTAmp+v@^Wo+nOR;xJKLHaiyU$IJhXv)UM?5i=+JW*HzqZkl*$9SXHqsBUY+R z{E_nmbBo-s7OQkjf3S5|5O48&$kNTq-MGi#78DSm6n)Q@@nUCH=EX;Sj^2uhkzyv9 zRM7KYYzU=m6TupFOODg6|%iRGq2ebrs{BjJT6q zjOay&87~uxv`a6mWM41l9vx;9@PQIxXQO&pxMgHm*(4GqO6nNgP+|BSrt6agd}5Eg zZTXAd0q5F|sv*5_t^7Bba{(K9javUTCR1nTZ}|WHO`n4Oo8+KFurf_Z^JDLWOoc+& zqR>+n*zfd?qm++Bkx}z6aKZT}8i>BM(8(muC$%5v+=b`6%PCP=bY+ zLh55vKz|;0EnhTF1)P0VQ_vT<7e-3CVI09N9`@i)hT)6S^`h3lP{-^h9$b)8g9ZgT zT|!|)OpUp-W8DCUa$)+aLqNpdeHS9`nz%jPj2gvd4ezz-?QLJxtX zt{qxbKV!BEYvJfy^9pRsD>)yk&jkE_%o0(LGX3i$T0POOsBnLH2U^qsY5`Y!p{e#z zEeda6FKe6=R5Dwc)Agw}aZsB=%7_ZUJpa~Iz+zyk5w-U$2jl-;#N|A>2!XzyI0Wzf z^l^wY78XEJ5mWOu$w!ic|4wTR&X0ZaV?s4(1xOg=H-vCdi>;oZ)GL)?5a^8cL$ zSOOJj2!0ty@y;bl>gK;`3?=rR>%~hPqPl*hkRQ=-%nnnK`hmhO#7ry}9VXFv+P`7Y|=!_#Tuerv-oVKR#SEVTm3`%qe`L#p<#JmiiYWY_0;y|-tjM(2A z>574sFI4f21l<0b;#77+DU8g3#i(&FkOqWEM8=j!j+ zVU5S%oTuql)g+xA)6x)Dpoc&2vwO@d5cNj5o3J6%p=oYk?V_6!$Uz{%*ggdPMG;%; z4&>n4{%*#a9`YbY%_tdp&VA{%`n*TbF%y9{r6BBP9SXGCUr!YnjE`K(Lv7(}s z61am#6cZsx7f^dJw>gs*8))56`&mr{M)Tb%VfACY=||hRR(U(SW-QWQ)m8Yk;145A z$=OY2y{rAH;(|lcN80R9q!P3ZN;!xg?jZ6i6uMWSi)Y=R!yHenn&NT^lxn@GG>WO` zP(3gL)ZbO`8(LJW^cJ7rr96tVcpL{i903D&(>{Kh2<$Q5 z2;4o~%^ep|BqgBeHH?Zo_O03^0ohZj5iYVHKUAjANCkb{&quZR%?1#Sf`@uptYg@8-)G4|i1VW0 z>WM&C)833#=aE|FD$jkZ#o%p@3g2-X#W;l;EN+(-#muO6Dq11Gr2Dm31TNSW2B;t+Dgxz_S^cQ{7(y zsBSVC3^Np)1wlg~(SXc@i+viK;{p#4fB&neGVo(l;7ur0M8KDnQH|kp5V1FihOEbb zGt!ZP1XJ2jneA-lxX1F~dX3Rd%e(V0)(;j(n)&l+yV?#wYXVW-GIGA>GO--CZOmD> zquULdf1mF-N@LIrz8!1{-bD`re_sMD!@O@AVeL9mH)P;hw)hzP@NTrw`+sWs@_4A)_y1!{Dj})tMLj~6NMx5ad9u!6tR>m9CF_J~Qwfs_i3Zun z42c=*pv1^FmS!+ANV1M4W-Md)9na_c`=i&ZKg@m3x$o<`?)SC5uL{R%crPZJMAY8# zUHutu?b+7U!Q6lxd;#c#?GC_74E!m6D_RChtE?I?i`3=FYam>**cYIHm z@ZO6!(`(T5MU%9B5#z;oAF$asG8Qhjr7x=Ccm9lQ_2x3`B4**nJc~ORbR@pl06}kzLQY0y(;Ii|8=l*RKQo3sZbypO zyAFOGL7po;=JRw+Cu4LY??|H6xgpe18i>P z=!I^F_G{>eSx@ZLQ7;ZWCOaCS&-_|~IswD`$`ztRKOmDyR5Dp)IX%lEH3j~ViT}sEBht!~*<4_M?`jD&meN0@gILcaZwg|-6!#My1 zssF%B{oB4@^0#k}k3^8lsK+Zhtk_LD6-`&g*jAr&rpPR{$V26T4VZ2N*=I&{uAm?V zwheh3l}D);Md+yfi#x>f*iUuj&(21N7($C=F2w$B8j6i!p29nCVR`23IS z>=bs)dNX4rZ9>Ad?FjH6FUti;^un&K1{gga-z(-Z4i=x2bI2_q1>KJ%F^8EXMdR_& zW?taaF*vwy$i8QX0+AD2GrK?gpT`jUd0T zSbw6yX?Q>cJXJd=V^$$w?@^}C<2yqkLrwZvIt6~Rw|h$L&euUX2WO56OE6*qTxXE; zg-SKnBxGT!UDfZHYuCMQGlkvVOb7mym2?WBfr-q00aMF|cJDIQPLV!bl3nv*9%Rno zS!230GoyM8oz&hZCQ63Oo`2Y5;mSZG*v$zbT%3{qzR0eh*w1?Soa^ta1Q0YvG^7#P zT{qw)S_LwN9KwDCRzNZWz%w9U=e|Gn@J6S2LlR}y%_WR7IWp?#ciHof;vH^PpjLW+ zJ?u4lK3l(`Nu!GG7BKqbPv?_w_>U!6`o>U-*ZN|UKU?3-FPT16Fdm6ritb6yFmXgGa(AS`F{CKwNADS|b$}e>C%O7FdvNW_I<_pcq5K~41`u@ue36NZW+FBH zVApb<8TzL)oD)|GT@t!GR6_Uqflgsx%qPvKu%C#m9aH6);Dv!#d_@uNA(LnUQ7>%^ zRkq4jLN%j(OECx2Q}IqfOBI;d0v>Rea{dWyP3perKk}ofAAOIC(p{#i)1%lBL~col8!`5YC;%WH?k;7>PR(q6*K{g9J@&5c&G zQG8!27M$q0D81PH6Wzm7Uv}zck^Zli`sO@jBNw?5HTl1I0jFEjt)JCNbzL<1u=_!K z49Lx^^`pfMQ~}Nr6Fj{UZl1%8l^M zB4C;)1yq}fDOXW$D&B^k`6%Cq-`zI!vlNXsKV*^1iSWq<9~M=RIkR9o^MaKN_ zJu{u5E~>R}tUKGit^brxEE8Da1AT8mDqvc_xqoeaef8d%>cFhj!bh1>t$ZB9aGsZr^E_Im>A%u`jwv zXbtZY>(p4E_j<_zz4h^o^1JwM8HX8=3d7i7`9q`)x&1{F0Y85jV1bc4Kx&!xGTK8C z?ITHFB_sVi<_&Umq{*I;9WyMJy`^q+0zf?nF9N4K#6#C^|I4n-3?mujRI?)ow&+(J zKY@mTXwgjSHQ0W@VmQx~H-#Prbous;mPM+|QFUx8RPg7OR}T7UBlW6y>lo%~V88hW zm=Gx^d?9Z3^KU}L6A0Lk^a^sGnjP-<9aXUF7o_`YA!bIKd?7VgxK37V>qS@}mZs`| znWYgS0Xjp!0)qqhtj-DTS7QLc!52K`nTh1VuTQIagYO%szk%>2byvjF?4nY#4+CIN z3K!rhL=SpHXpka*dXs3bVWIFf?02R3{~^N5WNcVwLl9oTu!h90tf`3ggf|D3dfSu* z=`j+N32BjScMTjBPhHPhc%yF)IDsTZ0OIEHyBNw(3^(I9K)^ z(H2DrG!JUFZ?z9`P~pWu)hUjNYf;%CYZ9b97Q+=WWFRIJrhi7DMSR~x+@0>! zao&D}igWDDd^L>P`)#hV*h}RdcKk~nFI@XS>2PtX86xTXEGwjjT&^--;V<`3!!Zw{ zh@YB|waD!sBFG8k&(0TI;lHK(;Ar0@W4;6cOTTO=^b0T|3DcC z0b992vu?UEgQaHS6rMl0w^=1+(>ywJZzv8_1kQcqA{)&-xHQ3Hu{N{zrh}K<+o!1j zd6#C;fy%-FEgHWi7XaXRpYk7BfmSJkar2RQz#x`HW`drs@spAmjND&A-@^?x3&H|>G& zoBpP6nvPtK;}?oQOkoXlfRO*L6XZ=j-ilj09sGA_5-T^@Zr9C8L*l9E_%xOl2iQ~s zZg0BTK{6f?Q@*2Fi+Dn)8Ya!Uo7}4)c zQeRIo>O1gXfVCyx^lOIZS!R5@HMbiO_0PTr03>UBX@tp(D*R^zKR>gE69mLX&MeAf zb4FgB<5^*{`VG)GH%J`+6W8I_4*d%Zh^(Sbl2kn{rS9{75XpUECjPB{Y>9N84L)GMnj1Qo?KUdKY8j;+FP=~N09JP%;`lGkuwoH-{&~Wa z-C_L_Q>rbt?^G$Ld!9g7zK(zIge@3D1Zh4vfN2?{Zf$&E-Xa%ly#5NBc5TfyyyiwJ zXRY=@|1}e?cQXlE0D}FWmv;*C-i-7hpf!6Pqg4R`o$Hjap{XNiX>y1d;Uub`7x<6Z zFTLuj2MgYX{v8cFQMgJCQ|#f^CN;I_M595DxQH2>+BGWR`9u%=3bk0pe8%vTRNpe+ zf?pA+jKbte=c<{1F7*p$;pSOaRXGvteQCb#ZEX0@B@_`Jr0|RX1~m*Y_p+EAsuBn( zN+W*`I41=B$Iv*THZq?R-kN@S#qXi*AqWL#mRBjMZnw3taf)e#lT@)MS4oj4_z_hQ z9heM<=RT!i3%)@7^Ll|eKHDRsecm`t0}t(ggMvFkY^xp>wu|5Kp}LuWQF{b(=neh) zqYNS$P=K_WY0c&RoY@f@-$f$HNwhgNwWa8k%T0LAK5BhqEZdso@T5G~2=JhhDNbu5CB1k5|mk$hbc|;Q-_$f_ARfMEYzaYoRfc zp7caHc(crZ3RC-L_DU~0#2b4t?2RPQqQ4IZ&I^}*G)+P3qtAS-@Qn_hJ@&zvD!%ao zWh26k(EOiGjdgguaf)uHEQY0OQm+^Hj2blb+4WPk#Wt$vIT(suig|(nW#6$e*_})JMxtKrZH8aw% zL1w#^1w~7fRbyy5_ZMdgPBYP9XVf9Rn-tixuf$v!nd(u;==k&ZS#7iRP1_ZJqHgm)u~Jk?4c6LdWg+Rj-A(NFT@C=A2O_NVL(gz=Dz5R1 z7VDvh=sPrxn5(e$g;d^bbIy?Xl>4r%NYLH<^7&qK;nN5kpjH4hh;;CAq@^XI*nFU-4{|KkM9G2h#=`d5$hA*97JMf_DjzT(s5Cav%(8443echMu zq2HFy&+)s`5UG4JC_+GL>Idqceiy#&BVA$e=LfX-_tx2d$M-FLPV zz8)LZ*7$%*<`H}|oQSUu%%-suXkObV`a3qM?)rYsHw$E&ke&sV z2?BgZm-R~qQrV%cYcv2O`YtkcOEn;3@P8bb9-S2`lHB9S@k^*EJ^ zX1}DfVdgzYNRq}Z4P1fVGe1#RfmY1yPS9pPXwG+9=T<%^S#YHK+ z5A@v~-J=J`i?+g=PrypS$a8E{%G7Ya0T&P=y6`L3L4J+4o-e=&_3nVn9-nhsXursQ zmrt<@kfdf;X+E9{c2$otpj8%TO_~J%kYQU{ERU%N#V0ZKWxwd$Tbc(UjL$wgCx(8L zBEKShxmKiBggYLiU`1b;aiXu%qfvbe(PL_dBnNV;rf^eH#^}ptE<%j#V7g*Ah6_-A zM!W(B5~CF~X_ofVm}++Lz)pXqI`Nu_QSjzxPXGIh5f3Vww0&YDAXp6WKgo|@;pQlv zwmu|pmvwW`C*ZF2sntdGMI!S#-ljLHxaa1FlYF1qwO~X9EVBnDG&9AsebZ_$cO)}^ z?^B1MqMca{)KFG*^(&W=a$kCy1mOhXVG?v}4fFjN8}+{!U&}K;mA|9xu)qNC%ejom zJl%MlM@6}ose*gzWs?3d13vh9xlQ;t^@=%!6hV-p5uyj0I-hrFr4l{@2wm_7oiMhT zBv!@W5caECPx%n2fuouihM6y{V@3yG`-3-Hz#c=&eim8w!Kdk&QgxQw?m%4c*ib%B<~5z9&@glBld; z(6Q!^bbk<2h|q6! z`>r3#O3~-ikEloYo@m6gXdjIjH*_!@0BS$jts-3aFmWS%;eec-PHy<(^AlQS7Lgy` zQV-`t>SkAI;yqDiZ-r3vvx}~FteH0us2|4!*eC{8Dl{cm@L!@Y&=5tj1UByPRjmR2 z`4NGkiW+wPj~lc6IW%?*djZ9SRKy{tN~YE8<*N4TMA=E#0$_C>fB7FC1Ik;Zz;#~e zmvp-dns4NpqP+&W|tpsv05GyY#4%6m8u30@-RvQ2!n z8_@6R&EvToMIm+hDg!OnAo_1PY@*U>PCkWgtGcB`^G8wePPXLICXVYB{Fn1VYR7@K z*aephEQ1aDd!Z^a4p06u+P)yUq5BM^m2KV+aj2wXyL<31mgLK%)yztb5yYR7lcxf6 z?vfZN^@btqLw3;V8rb^UkiO!AkGl4fZ}2&K9vBS<@3<(@;OAmvf`xnaB8@UER>2i) z*5jz?l;H6_-!T|s>mTf2X&W*o}B*cEojt#b@vC{`~%*_nA?8xQ8=RWY?8aZKK zHVvj?dB70BiXaSFgQlbyH-G6`8_Pg&V3~#xm7UWrFt%XcrN@&lhuaj_x&8rjhGL2#@KjP{S_FsJ-aR zgtr~TsT;reee)x%@}Z|6}j(f$Ha-5nY!N zNmog;3u5vYVul=r6l6I5)ebK3$icZU$7x~hiXoS9p@quNx0F$4=}! zx=V~>!gXMumJPUkvh-s%(M9CT?(j&b6Z~fh>_@y?fJa(;ibJaI9pi4_<#!s)5Y4V>|<0*UryO7cW3`LW{R-9mq_{A4bZV* zpjlTZdZogA_23-X+zXO3AkP7;h&o(hFAISY3?2_q&1Ree=7`d`46|$4dUrdx3ZN^p zuUHcqFMFGx=vy~4#UO$I_Nz9tCh=a=-*5@yWJ#?v`EsCS>Pj(4wCBqzz@>M*W1m8? z;V2TcY{zfSr_4^)jtB4NVUSZZJ+v0~iyfnb-(dUR1XGZ+%^LJ7PK2f>5=2`igy)x4 zl!_zh|GyR>uDKb>B*zKZ!_SPTj7h1yfd1T$zCiQ$GC)>aUl(uCqlmePme%OCzdhqLD*UT(G@xa78#qq)Eohg&0F?xOBrbcaZY&>BZ$OdNgf{1=^E_ zNVoo+(%Bh>*NV*foJ z{2m68IDa^0yD=@xg3&&zJuD6H9XycHvD?)2noQDw5ur z;*#k?Yelg}IR15MtcqSJifQx|1qu@zP)Qh-R$`>tW=$u|sV7GJB{{12+EH7V(23tp~E8 zn}eXs)ym(z%ORDzieZPi_fO?3h0iRrRj{0ACC7UMo|^bAG6VAQEh7_WJ}mQnK}}(z z3o6W83*>&7Q-u7s7=L#k9{>;_FvwWte%sL&SFQG2(qI6L1NKr?hj`Vkv%C!O_~0&= z@T7zibnXR$bnvwLvDel9ZaPbe5pA%{67PfTRZ=N}2xknx_Z<@J;-?uZCAq5gl(LZYo1`sFiwZ^z;+f zB68GvN89fbJ#&H4)sGwu+B^MUJ4B1KvwaJO3MSA!DiHN%fp~bxS(9j(Zq@c4>R=>z z$%8=S{8@Kb>D`w!3)8RSuhhJ1h}R1arCyFGcs=62=%bj))*7fUQ(+b|d;5Q)4BwRA zHfzT#)S(WA-rnsnc(m^2lGa^f#RG=!_u=A8Qc^+7dT3{WlH}KRWhX7s9nod?*fU-{UGuLfDe&Ga z+aqG^*h_eyo>a?Q=U|55N??v4mwJ1a6<)GMsq06nCi^V*$5nN#Qg%{X=KOGPdl?Vh z;5qcT%3UYFe^D*MAfKsmV)0YWh7-%#6jJM!`oz|iZVWPncVZ9>Z{>Dugg(!!_(;F; zLETAYq4io@+kJ@Yr$4jtrmc(e1E`UN>Za{do-ZA{8l;P9Ms*%j@!RpcZ#L^vuHIt> zTza<7uvPTg8!=O8cHB9_+47$a<7q1Pt?_Md3%jazv=3B2}u>VofxW8VfeMc*CVkm^m-PwoB7TX zb>c?wySv1s#tn;xsaY*L%bomJ(a+f9_M&au;I?Se&fOIE;ztMnlU>8F(O2F@JG6#k z>MFl=568CUOPdEwFE-O0v+gKo6X^K^s{`ZaL^EO#&SL}r-qH(+egHjJflh3gZ=C8F z(`sMa_0bm&wki6{JHZb|?F5gP{`G65`$9KGc@p|pGZA-iKmEJ{yrNpOH#R%q{rWB> zA6f-T{4#4uR;jFPH?L*%*vQ_9dOB1iUEgbYm>Q$VS*fwN3>@87t zcK0WR^nvAk=)ZnPkR7BK)qiY16)=Qb2KO_>#hoAqd1631HLxlIsR3KYnqHp+`;ikF zL^wJHbjKy~6Z3q!CZ+1Kai!8!hVM_nApPY`8z^V>=bHcTHt)LS3>NUS_Dyh@uS~cf;2TA(O>>jO| zm>EI!eYv5TdD$N~>V4kGYjWdUz0$mBi)B-GDV8aMnXWP2UgV}A~_bbiH&={II;_4FsaFhx;isVsU29RT%mbV_qKFB zVhl3lE&B8qc72Wj5k@QU?D$x4HqhRf$L@_;t~+#z?Hh`t{U0I4Q=g>MR1ZZDWT)ay zmc>THVSyj=y$WzqO;TH~`OD*n66sgKxB^E=(N{FK%3yh?uxF0nk;1BJr^Gqul#2Z3 zm{8_!Hs2Z|hVJx$b4%FZzu+~-n2Pg5y$>5-VmsrF`VZ6ANMK#fFy$ReFc0g(s^7Rp z6}Rb~G7p0fEoBx9)X~M%)2sretSw$NWrzg6$Yes~FGR!qHPl6d75k!vc7eqNy*T8G zH8^o;bV_S?byaqqT?77y{iVkh(J05$lur2?G4De83_0sJ{<=otcJc=izIYT^0ia9L zuJ+1TdXh>q*_Miex%;@BcYL6t=e2QDRqPNU?dL4(1vE#N$kk%W-Hc@qf@_X|AFu{K z-~%Wi>L{^oSpMP8*|xa&$=H;<5Cb$qFpi zph>{iF1*};BKuceOZKm*gTpbGRKY`lV*h*{PJjIad4EFG-a^!Fp<)QO7#9JnhBmuV z`#*ZYM`c)0%hEABF_(NE0n+yN@|P>_I(WxwJvH?R))ia@!()T{OI*_I`|S;3AvUIw z2!;6MdvUdhlxzlK1!A##tY0{Q#4KuYRI*F`q#y-r>j_H9sTpS=t zP*(ADpRi5AP$S5J*X-JN)G}uBFr@sNwDmM*glpk0vghHI~ zoBr|WUIF<85Mf+4L)nd4p$<))LZwUAK1rN!Bdi4;+faj%^5&^oj$WE^?veVtxVMnkZ*BYS%o zg59g|{j@mdZs6k`RaVUDG8mRN^Fv%3z$8u7G%gpvZF)naFga{~2I_fyqdc}dclLa2 z(v$PJU~>B0b8n~Fr{~Y@By&$gEnes+__DBrMhoLEXX+l@z_eV>|9Ij9RCMGY5a@|q zB(JG8!I=P}E6Q%dzSzZV{p)~*VOcTQzyc*Y2NA_zLY~ei*J(gLo3UXwC0_vphykY-gK1Q=_UJ=>jY+tF-)y(waZMTA3&NUUq)-f9kPYr^Ps2dM- zyd9^|8P7NjaQH|Ob`U^OUOTu#y@L4;c?iq zNojtEOm;Z?m!!U(a^T(H(}c*qS%>D&fn8Dyc$qY-@C(rA!)32axxGmin=h*alFx06 z^^VI{2v66cM>$%Ywd%TFgEMp#_HZjF2aBOPojF*QifwO3DW=k&UEa7iTirElw1LST zKz}6Dv7-cH0e2^Kd@G`Y@VC+Q(Px-w;Mfov#zaSlpAUN4N(-pjaFRI#ncL5awF$I% zuL@mDvMaPb8YN3U8jdd1Zu*Q>bN6nL^?I>h>Y%pJ3G#`Sk}1?bC$RG&lD+ezWXmE( z1MO5}6P*3_!}!eMviND_->K=-K_XM{;Fkce87cp zp6`dN^3Ry^b)qu|)v6M&bF(m`(t%|8xDl5;7&#@(1_c3yH0j?Ji#vkEM8kaYRt8*r|QY`)BFWJ{g1 zfzdZgZo~GN?Ro2bfDf1?tUaPH=4@R}72-RR>h}xVmpaeW*0J4WaSn`d5-6>v$qCVg{(d|=^;kxghCXA@YHNi9fVNCaq_^Bu@{G>d zTo~@^dKp`qpu~%{Ja=8v#W{7JaYe01#qNUx>dj9mzg_=s48$%V%N-Kle&0SIOV(a< zVaPMc5l`1cxw9TLFn%gZUo9a8EL3u|_?K*cNNI(&eD!Ew{U}oN`dFV#ta&jKZGR#y zG|6Fh9*><%-f<0P8aUlKNML7(p>05w_B z5qVZ)nB1JGVZsUfJ>fxbAo~!4%9gIv8}2sX{^A`iR#Emi>hOG+*|{o-9N2eJE~UHG}Gnx5@YXHu!=(dE^3)KJCVc6d$my#`u9 zr+*n#E{&csh2KtTym2rFDF1bi5Zjm13bul)?TVG>pY%5qXoSa>rPV>l-E+3a-P_6> z8P!tAle>-nSsFCw*ct_U0-{*IB9-`CuZA#}Pr#?{4ZS~!$tTGJn1safNv&=kyI*$v zjz7wnCflbzq-&N19;k`_Ksbw z7^Hb&<1X04T#nF)1CE+cz%MgS6HxeBTq%obLJ3NX9r7w?*`Ph!G!mhhKl8;K>(9g)+8!|PfV$tUeF{%;s#VpA5M z*4uULLf=ciUBF{i%Wfp&mWKRK@>TWwy-l5g&cWLkgaPOm2W#Njne{yAv-h-W!$N`U zdP*Ue?x)q@sAfexW(tqo;brlR4Qy%lG`-Vdz;`wg+V|Gqi;%n%d%HepM04_Ji=@q} z&XH%0QOe5X5b4h97F(C10W!xx+3#t(Dd>XOoaFPxHl=mm9HGps+kL;ls-zB$W*bEZ zk>_%;3WemNjjHgRdlFV#+#wK$oufvxtzn_139QitPc6IYL_AXJTMhaaGzS|BT6xR1 z9<(+&t$Vh<$#;4XTy4F5046Xz+B6jDMo8jjA=`U(#1V(VfQzT*gWszX`Me}cVDz4+ zl<4Eg2D@+tu(KT|hV|`%85Ae9_gfZ`YifEj)4KmM_k%U_#PxpqoFsTxdJFDE5c5<} zFC2H*Op3Y9zGhQv)Rg+(-x@i51X|d;Fe+9v6!}t2D{Ymr9h6+?`2E7@k3g4L7m;3f z8!0!PQ~b?Jw1wYnm3z+yz{1tz+|7~%gO%9HgQt*RS4mZ-LnOw!LXeB10|7xf9OO?f zT_S#-q1N3K$5}wS>&Is=IWKQiDQ2p>%Ryb>`E|CxdIVZNAB@x4njq{IHgVL-x&P^C z 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 KQU5acWc&|&&%;Up diff --git a/doc/_static/remove2.PNG b/doc/_static/remove2.PNG deleted file mode 100644 index eb59e9e4e6bd62bd3e0f8c87728a0c9292c25d52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12111 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�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 literal 74996 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 z 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ூw{OZR2 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�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 Sy}pb7e*2cPY|ahL)Bgie*%jje diff --git a/doc/_static/remove3.PNG b/doc/_static/remove33.png similarity index 100% rename from doc/_static/remove3.PNG rename to doc/_static/remove33.png diff --git a/doc/_static/remove_assoc.png b/doc/_static/remove_assoc.png new file mode 100644 index 0000000000000000000000000000000000000000..594af6b46a2d1454a72133a6f490e0f199dfde2a GIT binary patch literal 5776 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 literal 21689 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 J7g}Dt`5(_NvIqbG diff --git a/doc/_static/rind_grid.png b/doc/_static/rind_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..a1eb8366f6fc2d95edbdf57d3892f70ae17ec5cd GIT binary patch literal 6935 zcmeHs={s9%)V_0iS{=2jI7O<}R+NgVq~;E0ZFC}LHKs_Tkx0}~9Vo4u=OJioXd6P% zl0;DR7;O|mLQRPfREwCxFX#91{qX(;?}v5mYwxwzb3M;}?X~v3?)~Z(#QexXnS&xC zB1bGOOzwz?{PkXF^85c5KJnZ&DidDzpsrco+rNMR=!DHr;q6JZsXh8`fDan$9_TFs zLj*kZRz-ORdV3>K4+79jdm4;HL}Wf$nq0jXoV&ns36L9l+_(&bWwPIa<8ub>?yOut zL46>;C+PUryQjC$UHj{=c<)<<7PpVzj7?3pAQr;U>849q7W#IbxbRxRt6k*#HCog& zg&0rZ)7Z6lv(ZY9AAB9(tG<4xbeTd8t~Q5pdV2E0-zpjY*?p#--aHfdurVSRHuiKlt_~0s`7&sb5b}bN- zS-?vZ?jyIp3qj}l@w-kt<+E!|V;e+?kmzT(^j3&5e`=2EQl$vT&U+-ML3oj4XJm@- z6m^uLG?E0&n7J4j(o4NIeNN@#;MBDuUnf* zmIh6BMaEL*nosO3jokpVrar9k zt*tf-@$wMahdg*=sBrra=)SDK-d4z|s97wctRr{loew0OnU~=jt1sPB9%8dq7>b0} zep7K8w5+JqPXY|mUs-7BH+2yZwG=WkDhp+nM@qC?np%5)VwF&VM0ESi@8nUKU9<>; zw6r!_O)4U{BfggL7Ln;X?{UujOo$JtrT|qxXus{~x!k|@+&af-$8Re8iDZ2?f)8|H zEw&SGOdQ5%b7i#PEOn}*9kRmKEaXI!0O8IKMCYmEon}++!`v=E)oOkxYx0O(oGN&S$y7uTJ;8B)2v>P3X{jC|F?=&r#ahcMa} zOC2NGO?KvOdjp90qgJr|hRV=P^D|+j9$gtq1(vJ06UAy+b*@~$?eFS2w1i|ZrLdXLyz^GY*rl;dFZp1+ZHVIkcvri2ZS_XvKGg>|;qq=qY25yy$lMEv}!tup#*%?vLLX zqptxh(vP0&7N)T>LTMsdcQsV>$JN{2O(Ul&w6AhYJ8|kvRIzN2Xc<%(wrL-lfgigs zj3V{}Bje`zhxH+P9}if;?%w#RYz94`IA}4VFTRl+wkTb;;dXByULEyG9V7ply=om{ z4gDD98{6P_t!}D9{SAFsdV_ncUU*=;?Uff@`G^{}n4*e8pt^%@W@+jwK>^j3fZGQF zlMO?R19~Y*xhJItlyDck-_P&I(l3C?YlYNq)#VT$h%XN$QM4e;Ggj5L!iUc19i^QYD}UB~ekpE+odutR^Ic+g@i^{_nL#3D)Fu!_ zJeex?n4&?JqEDx-f^wZg^X`=@%ka%OsB%^ftn%y=Ub<5|I~i-@1$qo41zp@3-!0mXUsdEM1m(gF8W*3b@H!AvHoKSXb7knQr#famqO zu8{iKc0%^rV#!QIM*_|V8Bxjf1MeDyPeyrl0(>rP*D@>+4+b=(bZ+V0ec5p7-N^m- z{$ac?j#Ubpd8Gztd>xi9VMb~NIQ}2^`N){M#EaC#iyP+WLUvlg^qh=Z71)tmdM~y| zFRd1Z09opnFy8O+Q^s%MNPhnyUQIE860obh#Z#k?Y58o6T5iv7UY)ny^`~gp zu#~CSgZi|%Ceycmx4vdPOj}W^sqNp(itQZ5QpVqiRn$+2+G7T?zHXq4r$LgxBwbG| z<5pgVZoh}KtNCRy>*KC8pL*TTiUghR3>(vd`$Um+3i{ zU+*T$AJ4iWbCYFTW9(4x{vt1VZibt|DBAOT*y!!A`F4orVL~s;SZ<95p;zs@SVzIIzopV8d7&4mz$;L zblWr=v(34O>0^f5pT!|9K9<-a;pI)nK3{BIjn3GoG7EGs`q{@H@GwDrH&xxe;j+1PPXY%>hXTnXXe zs_`2|4f}Cx1iq zn1ZN1D7_+%?w*j=3K4o0G;``u_@HgO`So5N*z!Hs_-nqOX^S>QUcK?!Z9N`Ui(Bts z<_0x}={$yg(K7X0MSPB*pQ?20#K~y(h{U!7iki>9J=2>XdS*=7J?>{|l~(OG!kQ0PsK1~O&=RZybw2q6U)~niclnkk znB2S)OUVm_ZdKtImrc2IGvWprmrK+!PuO;j?b~Xs^$@bFpz?5qc6(5H@bm+o41EPm z2=>QEtvo3&U)Xk(=^g4{9jf#dz$UamH9PM)Br8O?ZRS3=nxQv$Y8OKuq-AsHLYnB# z8T&{q*(STp8$5L9U9g0@b;rN%@E=}5)Y(u+BEYUEk4h9ZF9w3OJBtr+>IbAUY}`S#xUH_?Qk`5u(>qpLp?gM>N$a zPB!79RkV0FtK3(EdS2nr@bpYqu`?uK2U|h>o{pJvy>23Nv!)nTjU2xjP?yzf(BZ6e zW-L5?5n=pT{jrmYj#GJL{vM}}@cpGai%y-R#@zaSdlJrCMZ1%n0{x~gJ=BfmmTka4 z>0vUe)%1@NGA`?XDQDFWAuQf+Wf72@Wo;0XV*UL40!YX_V{Q6AIIaJzWJcxL@z)gb zQ>PB4iU|$`XxHVA9Zw>`D=Uy1kfrUan3zjyuW|vSoG)$+67~r^zmQJLjw>Z464){& zV?933ydOmP9TVXeb#cya0o1?>io=A+ynHmyk}&=N07SJ3dGAjMaIj4^V;ZhY)xN^3 zMrO3vUo@r6<)XMoaV+eMlpW`vfy5l^v1OYm{mio_>WqoTSkvG_tot1lC-ekH2#rr^Hu|$;JqwCoVrH}Q( zkLlx_R9s=ypfEiWfhZAxm^n@)zeQ_T{?K(_FgLZ<5!X!ufZ)!BU-vOINj=;tv$fM0 zLoH4YgkbKfu`fjlhqNB!)F{x&H-&^y~0@cwD%Z3CIG;K4qX9t_N;=-SP2fq&_Lac`|qy z2e~EhJP{B%*gGyjYqR!i0TqTp4JjM&z^CJSxSPIg#|8Ghr`xAsb}L%Y3umJ@S7vx_ z2lF2(yUd7Xcf3WL%_f=f`(Am?cwvGoGW0ZN)vPvjl_Z^~r26Ap(br9Awys}8KsoiP zgodo%ON9q+$|91gpt}Z~nPPEs#b&1@gn?Vo4wUv9BcYBni@a|Ox zrf6CFz0t-w2%AB(JtV-E_X%YjIA42hqLKhl3x@U{t4F+L~uurR)$W3 z2pz)e4$zjlBqmnWO!y-!9iYL=>?>YHr#wRRZag6`i4IejO14a#zgv-0*;%%- zW*0)?q-bL#50N)`zdXoD;o7o-lj7qx{Ld7%6Di5vz!PB2j|YUn4(;#LMq1ZpHf}gB z_yn;FQHot*I;t$u^V{DCN@@%?Fq`+*&;F3|*Sl+WxzTE-^*G|`s<kd014_>{Exg{?R&skY3w*8e-ml9ePH+l&FwJ8_;B#fuqLDIxm* zLs{6T!!ZB#^Y#@k{NO&uaMM=y%4a++z`0I%++ZE?Q_lwWx*$CJdPpU&I?`6yAK_ib z^tn$QLTar7J)OOQ9&b(FQ<-G{&2Ui(r@iQLU>Tuk#IPpCp6`<3FER$d;;w6$pYeI^ z!TFOBq(LYIvy9X5c|MEIB_SMdx9^8m;`XvU;{<4>qG!TU>~kT;oWV8TasSQG3ZMJV?4Wcv%Z>kroONW09Al7m?wem?A+Iun4f!HrVsMX z=4)fZijb=+arhU4GX~G?`yK3(bg_ENIHIcfV^XEJ3?x?I}cMay?*wK$pq9U{EJ z`G8YCh@f5VgS$D*S>_YLaNB3MFVZU-hxD}U`-cmqt=FBHt;c~?&6_`Ij6s}{=)l47 z-a13A612B8D)Ze)D=%hOSGG&QCwzgUOC zR$fKFx62K7>gYq@`^(2BXryH=K748knIzTgGDdC zd3X~h(J!9SqBlahJN)Cql9p0nVDwp#k2w>%m^Gp=C{OCnZ7A?We~uKkgphyi3Ou);5BIm_`R~_B@RL>!tu6Po&rV1A|*2?RM`aOyfdqmnVgeKEf_0O(( z5H-ib?o&dwSl|B#biL;<#o=#OA=abNB;AsC*ooPLT1qaeEfKS;7HfmLJ1vgO(x!zM zF%!=T-{3k9nYv&y`|tKyM{p{w_7_@$`?*wh;_a&r35OM5cbf5H7=VXoP!VzTv6le zg+hjqNdc!7g`6vJ+v)9tRpxVA`DiQJ#e}x^J>EL(GMPPyenVKRD8?uKYMZCeJ5L@Y zr-lZ==UZnPRO2tU0Lts0S24S1YXigmJ9B_Nm>BEQ=PF1Mqi`H`W33gpJV0{@)cX3kNpj(jG#d1% z7k$$tn^iMb>N=c666zU2(mfSbIoyTb-};3C#WkKDKyhHfdX_}ez@o&91fLYr=bWt% zfaN(wTq7$Y7qDzoz}--c>KWKmgfD;ek}4m=OZ?}Mo^X122OL(%=n)Bau78g0{BT>* zjx`$k%njFsELvDk%qn{kbd&(E)x>i;eDI#&BtVESEbJ)@Ln?Bv8(10q{vWNI^oG=R zpDBFc%`uuz>=_VkclGZzrh@nmAB5_U$xO8EeB#!fmL$7fIOUm;T7-K;tYpmDbFb!I zk-H%bCh(ul1QjVPJqzQx#w1-7J4Sh;1!Sq{uiluNE0KHt;k=b7i6SW6eHa|{)d%mF zoEF3Iof@+OuZ%*eNAdBcuI}6wb$?Sfa|$K{HI3{UkScl+gUyjRfY_PPv1*wlsAJR? z-cZ`2JU($?Anfr2S=SF+MQ?R^09o2xEE0+%Pb3dBWYN3b&Zzn$Z@iVy&AvujaNW1w01^nP(^J9)3xGYbDfY zsWQ^arLKta+?cv#XX&IGr}py-s7*+R+_h9O!M4?w37{zF0S;E99yn~DHJK8E{SO<0rsViqDqtp{i9G1!dTmGD-l*x z$6nCgA1z{R1fXv(Pu^!GJdm5bt@q|>L^P#?5VZ$>gB986emX4vAG5~tJ~qb4J}TND z`}b|iNQ1IUq0HZC&DV*_>P*~EKp zm|`Ee;M6eN)4jWSZhE)p$Ej;;qAimCsQb^oIN`b9nomu$&!`PQcC%@i?T(2>8Z&2} z8ne!~+3Lq$?WFp#9FC&*^MMB6#r-}c(=WLqO` zdwuRGm#SjZGiTr6!SddnMkm*FUAJFCHK?}aV726$^dCB18*b{ks*hfGSW#3!Uksg_SH>po7R zM|@jOr{ag3-D%!F}9AvX5b5iHf0v zTkVVh!vW`8Zz|p5lWfw%I?L9bsqH#W(ywD^s-{i;^Gb)GXWV5Q-z}lekIkm&fb5Wks3fKhKb_eS7q6`^7;y1)XG#8pC@1@6)>bwJS{R zVOX_i&FGL{#qD;V%5QtI?}wANgY@u+w|-9&x2N_{&sDX#{b!4_|FV`%FN}9s_cAf( z`BDE95k3Xq?zUx}9yUsEh-!ILUTSWx#2KT5OQP*pukI9L{KsB+Q8aw@uvnB`WgDwQH3*0YefJ5?qU=viatM z)Jfd3{i zr@FfOvSrI^AB~E6`u@GYZul$}i<`%T&Yhb$b*jF-{jl!cyO&pld2x|8HmQ@woV7`J zuu+*Q+uE(~GMVVd?fRecE;uqwDy*NO_RLo)EeXwcQ+Bu&OZ{`#ToPloz}8lIA2@BjMh?=S4-?H8rE1Qd*{L*|O!e2J*TTVsDoz5(2Ej}LMym3`#dix-|;+4k+*J-xi7 z`}a4{)9W;5%$U)mNB15uAn)~Sg_PD`F=s+T`jix;r+3(~W5?sir@|cP4V4)xBhlr6 zM^4T>9)o{cZDv`;nl)>z=lN#EOq@7zHqZ6&;k*Mq8g^@OKVDv)yL9PNTVG#Zm#vij z=#lS%u2QBeSGL%v3{q_lNf)b0LZP$zhtUBgnuhC5TAbX^#9wN>*7?RN$4$$6@dzJ0 zcyKIt^@g{1{5?H8JufWm*T27Rl=)4E0>yy?2X^b(Gt*{VZ$(98uAPUOWM#5?_0YqI z4_8)JwzCZ@Z$pI#=t@yN8cXj*7c^li!vZIPfvI6cG{e;>8P_HEUF7W_R<^ z+pinm+sxA1xbe5yzmz%lIA3c)P*4D23 zF{yvgQ>RY3RtzXf<;HSz=VxVSKl}QtN3UM3I?pHb&bkZ@x?!%`Jm0fJ^fJk)?Kblt z+dY)2uHLsk_0Z^#d(I9H%;naGs;LE@KAp{q9jDOa-Gg1StV(sugw)2yX~o6G4}QN{ z@7}QfV^!5EC#QnzEAAefH+0$Z<>ggXhYlR*IDh_p-iN7~S#EBw&h;gQuV3f*511Mh z9IO{%YCBG$Q}vtIue&`TIc7{maAKjNF&)W3HL7dJXB73=btXQKEvtei^|d`rpZ+$ zYLA~hsr&sqD>v8Y+uOUc0|ppw-aKyO#*OAnm;O9#-P~ctiWM@lvg_8bzj*1AXKL!K z%aM_7l||pHt8Md6jWJ)mSh`Q2IW{(fxne#jZpRO+xpU|8*ff8?UUlO1=^-Z#o;lt= zaq^@@eQa!OX`zXB=DT;6u8$u-HZnRe;f&vcb5m?tp2;zKD#{Zl$|hMAl$Wb??%a7p z@y*T@D?OF6#=45v#l^M`4u|wq!sFrsT3g+8Li_t4G(4^TtfXXY&NE*0j*`8n0|KNs zy}##`n5a=#S2u0OjKZQK{pHKg4la+18gVr`npNO;FKUY`lL>5ZR$?3Vd&HVA;XMR=k9WO7h!Oy!YxgHb$ zO?1ew&9iPje&dF^s;cVD$mf3k{=-yN5AJRH9dP>ep_CMDs>7(}ia9VJDL3K^1>kumyQ2itY~$BY=kVq3Ll z%|Y{#!zN6Sad&sWVU^^2|NacIl0LemKYYk9c0T1jed^THv9aR}3=I>%-ngGJ$&n|p z_R*1yj6=HNgGY>zaB_00si}#*dpA2Xvol}i>gxLW z%a;iY_Nq4D{jc$Kc-o=LBV_dTnQcx(?<#nWnEP@S`-6KuapJ^NI?Dj32WiwHB}wve&7WU(3#b2F)}jpP6-PQ?b~VEv}xYFxTvV8cQlU7lnf=u0FiB;? z1eY_D?dw->e)7>R5FOHOO*V$l~n`+f;uYIg-N^o#+Z9~KAZ*OjkcBQ0LP+L20!GZ-Z zUcE9kHLdrGo;zg8_2roddk%QIcG9i8ceng&SU29;V%airqjZOozxg|I^72+~-+t=& zaT#4*-D$h(hqhxETuey`D=xNZZfT*KmOYfxUcGgz+|s2>Ra8{E_2`k2p1%LiohfpX zosZ7^H(Xj;y7{xd_JvEAI;p9tZP>WcdF$5IZ|`huXlPhy*?j*`W`fm=>aFu4OfOux zFwev!^4c|{-no>Y38N0A+1R|ix|k9+e$php#f$qazuuQM$%d&_vAVzA|Is4@N?9k{ z54);D-Z^Iv8h+9snfB|R|F5SaYqHN#a+ji^Lt*1|)&SKG< zXx4QyHa2F3Y%WXh95_77Q+t4bePg@Lu$f_)QS{SZJ4n0xTw7n@MDNRu|NfaSS(25L z(@o7dcvh78gz@9+)W*K*)vK55k3A(7U#;7w)5Mz_BDL+;tm#72w^?`9z`!8AsOU81 znAI!#DPV%fK7p5S94VVFTTyk*BL3jz%c|oCRsY%zeyFXjO)V)=+V}qcj#Um0*}uLP z?fQ1R=*so$eJ;oxNSj5?;#z3E=gmi+2@RdAe!Al0$2oR(Dtt2yFp$>t!f`S!c*cww zb?^MXzMzO78K|+J?lfY=h-J%0kMZ|g(p6qwo*s~!mv`~*-P3>n?)voU)9}%whfbUr zc<^AC?@52G{lH#h^VZplI_=TzJY;cf!3da6%`e!G8#9mQ$l&5edXoXIXYgr zb?e2X_GfF=Y?p64TPvS2+R!ao&L(J>SyP+lG!2cini?ZlSIxhF|7K)m+1c9aSXlIH z`u*+VwQD_YFMsmlh0;-L0A)6h=;_mitgN80ukxM_7c(B4Z| zXVD^Q$J=Kw>L0aRw{AWa${{~EjUF6j{?DuAAywh_@&)VHf1NP-a(w*6SFc|2yXQ@# z7Dm5(oS$F*_3PoJB&~h16BG)hxcd>KMqOm{@LE{A>o#t*-@W^+pI;9i$_RD!Prtvt z&3kp8rl+s8SB`#i_T0I3n>KyQ@*j|%efq=+PwG`)U)ow3u!a}1Y8BmJYwtdNGGDxq z8=KT1!^#xzc-*+b8+uslEu#lgiZ8r$^zrqzW5wG=OrJ3$&qr46N=%HJwzkq4qpVY7 zR#0j#K6ntEoIF#O$LTe00r0L*tk`~_6;;lqcas;YJyH$v)kqRcNW9KPAvxvcDv67`}>h%t>>C&JYE)8l@d z-X-WPSkRN=LqS@&eEB`2;_7eTk{-9)6#RnsS{&~n)#ZRrH)HxGY$Bt$xF6_ZuD-s{ zkt3?prUj*?>2M3rs<#>~SYW$uozJ;*1D0Pu<>cP<7BFN}?fUKgjuQ63!J3*4cB@v6 zSLku;&K;Mg-x~v3FBDeiJb5x~{CH`7eSN@i(T$a}V~SSs8K5MwhVN}VoS8X?f031y z4c6Qx<3INRuanvb)~opOqrk+iUX}}y=+R^7m@)qJXxp5-0MiK5MT-}ES;aW4UhT;z zy?ghLjn?)0_3NOcz%yrjVq(Vj?AddFJO99NJ}xjYaOcjQ=a)o}7&B(F^m&P}13ryL zjiXZgz3%LqYU=%~L=jZJbJs43Eq4zc>Iyp%J>>oSC$#l`g9fz(T1^LCH#axO-oD+( z%%5^JS!dLeYlC?*8{gguH;szDd6O#E;Xqm{T}Q{kL5(j|=+T8fyv)+Fl6Ca?*Y1IX z1{L34FW*&4Q7_6|y(xLF;cW1CN$c;sK8Fui1e(k&%hqlk&o4fHGRA$Stc(m5xT4~y zcGk<6CvUGWdj9U6A5cVDS(&nQb5(XPDyr9fSN4{Xv9a$7g^SW!g9pzFZkeO6Z?0(3NUY{|9}BtqwM11GvKp^-AOs!Haa@mvHaQ5l%JG4V`YoiiK7BGF|S0M0Ve#cR-v?c=ny$L7nqhqarntDBRbe>pn(Fm;88 z(5d~|{B{e*{l`{L*50lAtubv{>8DSsM(@9W|1PR^!u|X4cA1h?@PxfhQ>Hq7xOC^v z?}E@T^vt@SKV?T5vGVTSyT_v*MzenL!W@w674Wa2y0BB%u0NgHemjA=U4A6}acTLt zZTj@-$MQa2iiim3-KwiwT|Vzx6PKN^vrgsx`}cNdC&^r+qn6$nH+k}~SKdiU zNqLHai&Q&HD9*n>MMl3Mne$ zO|$hnd*ptsx9_xU#frmAqK8pKfJYEyUK-bJYHqGKe|~P&rv65aP5)cjX)+1juauAd z_RY}Humap;M}vwoegoiaibTz5vbX3z<>(w9cI#2Y!(s{G6?WSM~19H*MaBd z<>eXXV9Z12BR{^nzT!nuk=fFv+0dqW^X8@6jNAO}&185Vxajrk*PGez{ER-Uf7q~L zdEMr!1k^VFEZ}jBLqUivgiQzzaO1`eP|Zd2k-JJgx&l%v)4jT*T#VDyG+MuY6iAY7 zDC(@Saj*RR{H@!zEn2y9jH^qQ<s>TWx&2#=*|u&4ZKXFDxo4* zUOIw8YFR;FUl+U?tmxkCY#cH@v$XX5&i5TUcARfwq7OQ|UG5Nev2GV2v|^x!iy(F^ zyMTE^uURG@|NMFF*|TSdvstpT4mSNr34=uIT%I0sgsOJ!+O@TgjzG2JfYi&EFQ2+T z?)|%WIXOA!qoRD!2LLLb(3ct8Yf96)D(Q_pS^rF5$(bhtVE~1Umo6& znm$yGt^T&Bxh{Lx*XwtmI^Jdp($&4@UMyR0-PE57u^RGhV!UmxtpV$iEzi2~zPtsN z&1#Fgd)J}m->=67W6%6H3DwNa$mkSl61HaT+IfvHsWFLvKI|#J>!f55A;ZsGxz^2r z@@hDjciQvkdmmq;Ge)W>PL!3EY5uJY6kP1xyT|X|i9QbuEPVNL4()pKdHEP%}FYA^sONXC)WS=fieN9hK&w2d# zQcTQI6YUoBYn#|^yZ%*2=018FGm z#ro~z$9|QSt66Ldqs-x0<6T1uJRd1!rcu?{# zfNi48VG+Ft4O(DoD#PtGHa1d+O+bVELFiX69iy&ZP0!9g)N{a;W1*o(C`?*fTKvxD z*5+N8Oh@?p`&WMYBuL+Q4UPG;XLrm#s+9fy{mR~tQ`(wR*p$UI(b=}P}*V)YV zz=fVaf1VtB&LpO&@cDCH7ncdJ=p*wMJMY+06}soU&d8H4d^$zy^xviv2E(cf!sJKg z?fIT~=<3yxGg}(WKzXlYZ99tIk+50dx;=YljD1ks0TRx#T12ygGfx=sFg3Luh2zqt zOA8k+Oogz>t6L79GNteJC8N4cQCC0G^!?+<@_uTLC-rnA&+-f*Qr?k}OQ&ko0zw}&5 zvnpJmyvG=>j;~-{0zSbXt2S*iwzmFnQ)s)hEWB8Jh+myLca~UOiI6mI;>1-Y$$MED z09#0T6=m~5bA28>#e0N{i_7tjU3-n2GDQ#%IzmQvHgIV^FPVnS!u#^&%jO+BBJbQ; z(rpP>GH1atu+G#?@6O-31Co=!v+?cR?c1j~J*ewKgGx80mJV)q1yCni9zoKw85g_z zm!tENtA*9<(+ig`ALOZ_I#Q%`Vu~heYL3n^R}Bm}dD6>BwE~&L)6=uJv@}g)ZcLGx zsi`jOpH{YSU%OY=EDlf$`}XZi^)j=vGInx`S?2M929KWDE!=_UqSAx>^DHbc(%u_tKK>*00Y)r-+J)5o-%d!J-NZ3Yw)F2ney@S0p4P z9it7DgnqF`Qft{cHb_Vmpg1D+ou%>}2}$jGjM1#|%~ z8W}JYoOU=xNkO4BDl)YE;?bG9DgnpPUa7Hv8!L|Tl58@4`+!9yJ4|XV*4x+i$5z+@ zb6=-F{}NwW(CSxUyz9x6Cwg<|PM9!3cj;1jwmW-+hv2E%218lHJwAK3DEZfQCusx~ zxE{+DNh^eB0h5CON8GyA050?^m%q4ZW%SDlz!300eCopD!NZ1$o1@um-n_Y#B?2jO z`Mo0K%j#v;A@=-U&- zlgo@^^FNO;gz8M3HZ2Dm0VpLJ@vB$3L35&CO3qnpXxM#sQYdOH%=$6xLRq!0tju=* zfdlgm4QF3`2A4B%avBR*q_FemAJWZf?^H2~6+U&3r%s=K)(O=e0MuP@!8r01iA!z5XGy^M=f-j>WN|+&1vHH>*(kUJ%QI-B<-FIH9-1=uBTEg#Y={SU;+e$g&jqCa&--cbhM*v3AzqQ(O2B% zNh@39;4psbR0qoQmoJVwC+3d#dnVh>aLGZw-`L23p0eRxf;8M^(}xGSumjU5Ij$Dv z0G+V8*%c)1`R^xPzVd1KYLnl zfxB3@{VSsW$sJ{Z1WjK53MS&kU$a*le*Zom5MZm4nj#zIUErCb+AjmU?U z*IOs|&kSg|Zd05-uu)ht3CN$)Le_`=P`s!6yW#xY)yZYwdC8K#2;ux;p_SDUDvWk>nG`h67E%pW zK#%tf5%PO|y$cGhkDuRAUfuKOre%9w8=mPqZ`&4u?4#6Ldx%DZ{yfz0JL>xDw{Jyz zMOOwa%gM_llBv0RfJjriZz&DKuC+}s>8`qO+9^jr)tP_p9yxO4Qe>p8yu3a{A4OC5 znw{qQNAU3Q@b=f2{^ybVFR;R9R2kvf}g+<(^_tT+L8r#0e#iX=OM{G$y zt$NY`m(lLmmzNJ})4SIc#~;G0G6Qy>b4ni3UxtRATTq}zNp%R_b@0IhO$ueZgdfRG zp402Ftg)XKtyp15@z+19h)5Iwut3)k+Br*?Vu6O?p&MRWnsxw=_!P2I_VAEJoL%Pv z&7VE6K!8IJl9DVeEyeadb?P7tR#;RRpxiS{WV4Hl3Qi8Bq2}8+@q0*ffH9o1&T;yB zdcw|>vGYp|&$@c)$KD@%;L^`uyvTU^w0G>*Ua#N3UjSm%(b3^aLya;c3{S_##VKoO z^aD9k@i65mAZjs3;7oEf+??G4+K7vk)c=r^JgMRNbKd|!@ZHF;R4+x zCDW-L+#cJt8#r32wM+?MG>8=kq3O0QirU}O(t<;B(KKrF_U!_`QH%Isgr+qBCro1( zaL$Lle^$b2_@6M38XC6p;rN?dw{OP<;b5G^uHu zOWR3$b-K5Gk1$1q+Ete+F9CIUa(1%Nv1&df zokKFXcmMtz{{U%V0GhD(pJ6O@`tzf_yj)1hB%mq-`BEg> z#!pjIazP;i#K1my<;Q}8a-z&4={&;!rw<`RUAb{Xl}{bB;tsZ!KFp640+?IuQ}iQV zZF!f`z!E-^y@0AaS-P}MI%r9Vs;k879!4Fe>fLk)>B0kr1iEl|0=x)OgC|NWSLoNT z43s}wU0vmL-rwJMQ=VL194+KC)2I_?D)eCj*a*6| z{gjlB{ukP?)LTy=!n=zHNb1eox6pEdyMXDY78bea_SCG^Yt}q3DKUX6cy|O+Rh)4M z4Npo6DKEF<7c9VHEI!XehXl>UM4%?1)Az^v(NmH3x&`tNLfOqmn$Jg=O?3GviS8iY zJ=+X9ar3rqnNOaGoiBtRs9p4u>-c?EmG*CnizSqO5x(x+IrZ<~Zs3Tp05)$vHv3R7 z<-pw6_qIjnyqToXW9YD9&Y&b}ejeRm+QaTrQfe?ztQF88Z|;0Vgcm#HRgCpfm^Cd1 z7k?pSks1uMW_6)rJ-F8X;WEedmMaD)u^9%awxReDOB&g3X9= z;mOIN!fE>UEfFb|>)~NbF21s^^S_kt!qzg}*K^I99Wrt+ObmPnbniah{OSmnNaFTy z{lQjb6GXBG_2%?g>&q!A?q?nq^7#JG5f}XPW%N=XfB%mZb@b5Cy}vDRn&4WR4Nqqy zNMT3`BEa5GEhspOo-uwS(jfu>5d{qW=akQN>qhXF>DK5{b@lb4ORRQqAe>#KK zIe<<0VP{289C9kpiDrcLF8rnyvh zqkwbOTc;0VjpIy;7SmBmbMPAlzodP!tL>aNZOX#8refnz@QxdP{qp&qf)x~A^p(!O zdgsm{HWJT;XSfDXtm3%A*0w!2E%5$^4Xf9#B`lLpa$?bkQqnEk^DiZ zvMX1LbPlpe8|B5IvF@y@x~Ag56h38prPS|wuY|B{_3ryWMXJ|_{vCM z0O0rgKi2RH`6SF8ST)^(g+CXG8G7>I-E-2wftqDJLEdU2~M1l1D~D=3qyPet*zZ$H`(vwEl@fR3>SI2SgA*s13|mPxGdH+ zsh-PFa!Ltn9cSwjCJUqj0cj^aW>;IwAB26^kE5)mRYF)TgGA=v^!BY>=KJUE#Q!m4*B%Ol|?rS^X>x%mcGUi*(%G+fKKX zJoeP?@E?kJ=+Nif@^6|iU$*M$O)GrS&`V1z<=khkOT)eOLC{b?v(W3;$G~IF&CO$- zN@j}9#L7r)Yi&X-bNzX)L`X9>zF*z+TTWeWFQJ)xf{MOUtLWA7v411zwgworsvDah27 zk=iX$u_g-fhVT&{u1G_HX7_&IyM6O!B5nq^ZfdtQ6uP!Gm1IM!Xo*mrIm`1zd)@U@ zmE}cE1zqh#;TBpnMV2RwGB}&MMFnLK(~&(QCZ@B2@MF;aG#g6~2&I5TPJ!F+iF7;^ zWek0J?o-G%C%nCHP-Ge+hFp_%f}$ysC`g_0O5#YYGr)* zpvcXk;C-&C5j=snXnSF5nY*HqMTlzi0vpY|pXf+@ft1t^SJ&Os_AKe?CsYXZ7VcPD zr;v_L$MMb0OH1>x##Y1iMI0NoyPhqM4uk3MrxxaVoPy!|V}`bN0pSMdq_6@III!nI z_jDm($bJlE@<$nkg|dm3>UK#yD{xJCOpFvd4w4|wGf*Er42Ub35+)R~8UpPn7`2{i zpwG4^yt6qJ+%>mikClY59b zoM>XRSY$j3&3~US3iG$n)~{a=;KNaA2T1$*`>oR!5`aL4f{6v14=*n`*I4^dYMqml{MF*>>UDLk z$h#NOVkxLpuCTV|Dp5zTT^o&}sevAeU3THUPV`Ih#E@_K8K?j^%jgH2~?=>fUpZ7<(RkT5dFqXNZYJhCl<@iH{>EC%5@;y}fv$BKHF3q${9U2#B`ADJhdy z@%h`gVW?d0&Drj&Vc>1e1#PQQ_X#Xw1%dC0axRG$6pbR#SMcJ30x8x9I}3>& zv1D_@=S4IBeIA0FQ~T#nHVc}J&Xf(WQ)zB2IxqqPaf0jL2?CUobl~x#vItrS?IDi^ z?xD?6_%RwDK``2pMEnHZhU&4c)U6&2Z{EQJ65D0)Cjt+A8pW;>Yc`$q*v`Q{yL1#0 zVx(hR7!GEp^W3R)BKl&=zn3wuZ>VY+z(%+ zTd^Y0n!AcbkmBBkMUaoiXGh)8g?flI5TFqiKq5N(*+qSXsv#;W`{}NxY(`|55hF(u zd|Ij({PEK#VWjKmwC8?-RJH7{XT+~8Ee8VEVR*HuztHRkFYT%nz)ND?Wa9WT9w|3JRnoeeVBA9>9%5V4b&b{{%X_ zKoA4mPIAV?(lWR<>19z-#rN;|Vy{qr7Y&y~TC2+$a`aem@aS%T{}6meQ~-odoG>9B zQ)AcX@IyNr%MK+vS9IyxYv6gJ(D+wmViXk>(RVvg{76Z%<*-Ee6Qo2A0tO?H9Ku4u zoQ5y-8CgV85fA>hW1l_0Ytl%!q4d%2QBT;?B56si0Rg8$Dv5H%_KRQ74nT>?_G;-z2 z-=DXpb?Q1bFf?@E_3MMkSt0jr22?{(iCEcU&BFaQqlbev5_nj&D=MM*NWPxOq10U3 zRUj~GKjZ>RVh>ZvR&uv|w^wP#b|WKWnnz<(lbDAf1w;*M{QH;R&PS)MuC5LzJ%R=- zf_%^bOo7#_R};~{5*;mTae?H~dBR3iL3FIRJ9j=+M}~b$_2`K3;lc&UNqQ~wBFj#U zibSRNC7hjh+SW?+qEJVF=$8*1#4rqs3uNEA@;& zWe_0*X?#-}!YqCLuB;#GtSIWPr&OE2{bziYiyB2AB2Y;R3ha6r^n?GvlP$irPL|Ze ziBqR0pxzs;Ihxecakafyd8N6@!i5T$>AfJTRGu=a`v{+m4!nNz=BDk#E+V{vZ@^YB z#UwH^F$n~zlH!BN5HS!jdWtLs1wHI0(kx4J8jlJG)2_v_VaK+uThXWUkz>7jXF=>q zv?vk81zJIw2CJzZqUgxjiqVy!~`BVPw+Y`(SWKyV{utfL%YpAkPgJA@u z-efz`FAXA&L&%}LDESOjPze_S3MwlXnwxuCstc)?=PIN8Wj@r`dn%v^cEewZ zP{W4TvF!mY%ANj}NxA3XX?ZZ-BQhz?wGVj{!ls))UxL!1qkeh|tAmQnB!|cYe)%$T zgDhGB*F*BlvuEngIBQ0iP(DO-5HO2KD4v0MLc4awxwY&Lc!<-@awN;Vq?7d_FRy2> zU(X|e00&XIvk3`^6e!X+0xa7%&beYP9#J9yed!I$_NSJ_S^s^slypHUAte<#O*$wn zo7{$2LVSWN5gtTVLBpORS&@7~MG#j4vS5h|K?`qHH)snyjOrAt18ZsOF7Xt+@U9&^ zFrKJ5hJ%2kw6=GyLA7_iL@@DiS-e>&a6V)cnJlz9!BC8h{05H;F;+YNd(4=Sps*5Z zV*8OJdyUu98g=;r3KP~h>Xj;A^{QqO~ZtJeb*`M^SO!rpYWRIBpt(BV5Pd!WcU%^qQWbB zx9AHfYoeD$nX}=$|1W%&Tz@h~$WWqpq2`IKtD4#>KC`Cg+LbRbWGI2O*5#tF=>O!< z&AV-6uL;bIF~RLh%gR0^a|;Ws$dtDpN@=0nC%3iypw+1uII`=>u&2F$KL~k`-~=C% z@#@tnAcDv{kSQaz2@mxN>jN8fKCt=Mm&M`dC%@^3$1056`}alPMYI9;h&m<|Vd3X6 zRTQ%0!+c~K5{ioa7y9`tD&DGsP%S2Bpt$PdmWT-k7)0PbNtEA=kADaequL9F4N~_y zdGGysjvf)`yv+qM-)7J7Jvv($8(<%(pc}*w%w=IZN<>z zvw3#zn;y{!1|8MEaQ6ZqxbG@Eig9bQZ$eU9B=pM6_U3h*(XyR$!ZYs11=YOC6NBflPB$V z`(rZF0>wuQV{7?xU(={dG&1S{PfiGw@$qK2Zne#XrIIm}U*uq6VZi`V9Zi`@q*1SK zq50Y)5a9-L6Ij=B{ykz>2Te6Thm^{Kj^Fi@?XZTV7)mdzTZb_P{w(H3CSQQ{4dnv z8W_h_j{iuipGV%T7Wsh3%qJs>+aRA2*E{jyLwifh(A7WJI2}BA!*t1=$}&j_iLz+x zmXScdE9N6fDrxMj9SmikOE{7tQ}1eF7%jEh<%KmGy0hHJe%&zE*Sl>+E1|w|+rKU6 zPIrAgxzrn(6|nikwQ2@9wW6j*e5eOwjA90%RqhID54Hmue5X9r6b?BrFF`7pDv7_lTe>(n1Q0opb|df4dEJt9o0zuidW z(O}OPeXaiTMP=HwWs}x5k4HE$B_}s3=7F$Em=OsEn?W^2)wHp<7g0n}fe1s`k-N}U z#!Gm(Bc*9&FQu7&h!uP`Sp_yD4&30GGZpu7@81)v6h(&i&maBhmv-Y6rnxrORyke+ zgU{IU9TUihCx=9jD!pdI2HcJwFko)$V}_5c7-vWxuhSM=6kzAUrHtNVOhym_%qQ2Y0qC>O zty_J^756i096Osj#BH~OxzN?c)GH`lgfV;e90s1{4ms zOxi8{myLR4uFW)^u#<`Fki~#vx{z$A)$FVc z(C4d~zU?ZL*~LtV0Mvg{+V-Mu&-q=!5Rb49rqTp1KbVgs%gJsC_$vqt!V6O(6$El3x*g4;L_)o^m zmwiBl=!?RAQ3;3zH>ne8CNxj3^{3rYC6~Yh*u|6(=01e_ z&$B?D5YsqBwaBuP!dS3;dH)^nx5-o98PJd%#fFu=ymQsxSRUF@?bc}!Y$}r?1F`IO z5=VLYPX4#e@J^UwUesyR)Jc;>_+89OfK|aXVet!sYTKj=uNE>cNFb01Fs)oKr{1BU z9*ImZwgK+zxh-wyqQH4Wk*5nkd=LgTh;k^=1x!ak@Lco_x;Ys!FF(Jw)b#TH9v*8Z zO}_0tqJYQ&3$zeloR)-4i<rC+wZ5>t9_HJFGnT8L}?v4sl2Pj7a|BK;XkLo<0W^ zX2*wJYD#X6$_Syrg1W-6))OVopQcg`38Jk1U*MIOa?|nUNIJAw=WH9k6~%`s5c>A` zOmX(Wx^=nC95A`;zA8#to$#Kml`qZjWWO_ z8?HkE(3M-2-lp{5K^C3)9r7ob5txgL{2~1HBvo^6nW#?|OHc1w5%B;D5DD|~nwpP= zhE!8y*>};B<;zFTD;F~*jBqLRcqZ4!|JjGuEmR55G@HTbibAipOw=X6K)MYu%E-JC z{u7Ik^zTnbSg6r?OOxySKr_TxDk-5z>^|{SEFbI)5M>%zR>J6EJtq?E2RpNIJs16D zriiB&c1VIj0TFr(T`gN3yd>VP0QCrcE3Q z0)s~$JN$Df1`q(mDd|^V{MYn62f`moe?A-r@XYfVf!_4s!9XwFG<<-45!=dh1J$&5 z^tJc&_wOkRfRI&5esb=}D#S1v55f)GG0sJO#E3G2j?$gZojEf?^$9sfYq=-s$Ln7( z_y}7QUhP5A(A`>phKcY!%pNW^P;0jwwgO^zzkvhgR&J-hfb_(P8Av8PK;UV24+9n) zEt3T#mYFykfCw#|fPEsg47f#x)NG4U&<)zF*T2r0M;a>4+3 zHnz#7Hbqgy1&*dq`$&_e+o1M9uew=(P&!xdXXc4JOw1~Mp(05^W)yJosmgH)2|3{4 zM1p?c3?{`Enz}%X&!E%ycc@x|iJbMnX%9Y$yu&ek!{ z)4B?!wjictX)t2a^QdNhH^gX>BVnUaz7A8Qr8H~Xq46W(lzsi0$2a8yWRzTM+slu& z(j!uF;zS0@3mz_OT%>8Jw<4Fe3;pIyaPaE3))rE$2s+BIh=HGimy1w7GY=zAk~-H% zksyK%_!WnMym)b<_D?4BQACl5fuj-tJ8y2OGVV2KI?2If!=G&2uwkgOa(i$RFo8i< zY1>Eb$eRd-02xuDNgUsR!#i-MYY;IAI$1_WpT2$P0{B?;L_ZJj9=d9;32HY#6t@1> zR7p#}xo#Cre~-2`9({nrh&cpH!7jOGm2{R-5svTJ$47!WDnEWCVm2Hnh9L(=fZBB% zWdNN-9AF+3QM^0mO^{5^d~4PKBtwx%yO}QA=vk z4aBi0t5yvGGT`4I?%Ne~{QbdCV^MZjtaw}1Ds?Y0QA{q_J}se~o!)EFXf5^MF-x|= z^~i=9XIXQ;|ITYWJQ~1k8R;nGDapy_j~+c5^oIGpzh9Q77@&_$J1`xJDPH;YE>rJD z&Nn<49$q#&DJkV#Jp_zBgXZo99Tyq}vLzB$)sY$Bd+$F9m9g6UYcaY&0LSMLCy#OOI>l0-z5()4Omco2gVJzQrXXLk}=!DW4Zd&yN`N`MGVKfiJC#JADhxV0a`B(h$0z4K8*#Np7O^6RlL3? zzCgHY90tIm#wrtsOM&(n!)mTn(=PjX+Pd{!6>fsr!iD=dM}$*KxI`A|G!bTL4Lp9F z*_({2B@dwRy7N9!xv^3m>YH2K(}!*vuao-WLn!fimK13_oP8-41X%XvivbG(wDx~TMiAi_ zt{B9fZ{;cTW`Pp~PJoXB%V4|^*_#t_oI`6kBqD|^lF-xfX^pC~9?xfOB>#QlRL^*C zU|3i|+JUZ^vL_NOCEpW1WsHR1)GBdn z+K5yoTI&3H^8{t3(AWLMmE>HeOJvy*=tLTfi$|Ulj8JS}LOA5vnYF|IbK%gLMO)Wf zN_C{|NXyHsnL7DdTSu4*@}unS>+dh%Cp%d51&}lnG+^`C*|Q@zJw`3nlMjzu`wDPE zZl7F_0{0yK64ollo8P`&aVe7s`ZG>LBWDX37CO&_2{(=WI-Gy$D9+Zxp5TG&%;b4o zTX9#Mz{OLGijH3K`(D~{$(K070A1z%+?tITTYBV(Sax#MQuRF{_#@)XHTt7Etn}gk zBKWk6l$yNEHpifv9;)3a=5@>xa|~I|*O-)i+*>cH8_czcaUR~90N2sc6`b3&a>~cF z<30A0wWG?bpQ{%U&)vViR9)62ZU;BQ;|iGfM+%aRe}PT==#krOo6?_`F1dze=nZh) z+ahoP>F|e#q$YBNg@GeG6l7H)hHh^Qmq&=bnD{=s!w8!av-IFYaV# zMEHfW$Wm$)o(`c2h7wqLi!3aBU|ntXW82cXbFjW1(vrRX9F#LUEoZ(t*SsDNh~XMo zVdB+dwL|DdsmA~P;QDg`aCy#IUj$duCa6ve`AF6$SpwZ^#9U65!AI}R%$1;G3j3gR zc#Q;J6!+AOhdhYPctw^!;VSPwSDraAsOQa`HIpF2;ARB>$m;BP=X_|InJZc&O)vdb zDY7x09+SI|*6z87eGMWwE@Anx*tr+e05WD~qB_#nRis`lTfF+#R?*X+@4$TrE{n+y zHmI+!uSlivOmNY9DQXTc&$p>wBgXd83@t3qG$#D-gc}Z95rYMIsq>8uRQcz9s8m>N z$Wa^K-#bYm0rX@r7RKxq!vcp8wC$I4T2*2NrFSR@oue99cROaUKWFYhXGD~nbK{s2 z6v>XdT|gFm?fTS?Qng%J9EeVwl!l>Dd}reTF~7klaF*Y!PC5!RWD6MD(pxCZPw}d5 z*4&;{meLEt+sOmfdrM`GG>HX)rywTmvu7w{fK!Mu>kJeq-C;G8#?Cd0^9WHJ zn78lVp=m?lKhWpSQjf0tA|$pTgp0`+`gb`q{$NfaN+-LXp_CsFl=bm@taJUtJU2IO zdJu0+`0IcQk(o!2KtbRB?M)`_pAN=ikycR1VOMA{@xvk|pziB^jYkFvCdkj55bRLs z9{?*-R77U$zeLAK_OT}DC5{|~<ttkKoU~^ufRHE*Q(#1UWSPbw-x|JfIQ&XXoZ+uxG9s<^ITOYx9_2;M zP4w&;!C6YUQPNL-Bdq(f(Aet2SjWR>Iskn@(CxQx2f&#)8)*C1&z&r5FD|rN?N|}U?VnHXtxeQwc?D4BZ^v&Lbdh?PmeDW zCNbF#b`>%rX~$=8-rO^?cLaySTbYM-K+zF{-{^t?$Bw0v6Qvjq(bf**=msBM`yqre z#LyO$cmG2F&?1pbK!icBC5Q>k@acA^K!q9=^y8@PsEYd|_o2pQs5QHY$;ZXF#R z5se-+JU6^%oubGXCv{9HV-DI){qX1EJ(8K>alsAjB7A~?^Mj?Jz0)?I$Emp(thGnf zcVHvIg$uZq=m^dPbt{;RgDB8&K;Z@vx)+~`b7P1PFcFjS?3pyl7Zj;6Dp_nGAPY6{ zCPybws!+h@ax9&^{2}HN@Q{Mnb7q_v(-#3U$PrN&(pYmZ#n70=363JVMqGnsjc#un zGMr2^2VCXr(1p&3}I~W4s7;NX72%%(yMmP&yS_*rDSeL4jk*@zuL!PjcRJ08%1m$Y3fNr_DTf3}+z22u#XRzn z{oA*1Gv&lkF@jxC>%;W)dGqH>51=@AW=e(szcQK>cO+61V0ExHS1F^YsGhSJk~e;Q z8iY~OOSfT4|F5CwYKeQB?ko#%!VgSO*Tq2E+4SwM_MbMCs!miD3{GN%je${9Rb3S? z`~3JZkh+NA!9a(uvGI}5iiQRT_=16WAIv+yPH-L~(oX1JVrAE1G&NnB?P%b zRKKE?J6MAHOb~O#St%)ip{Q#62&S{44>8(^P0JhiksQQ6rR~wwp$#OEJ$a4UM+RLa z-~mDvuv`rJ1Psylyz-E=AO%QFK%=QKJ|D@NC5%iI$E(8~#yLcQsQWB({eW=#G?hs& z{}U^oi9eO7EDq6uj)@T+Cnqr=hjdPWir5mp9?gOSoIY|^k}bqUr8WA-jU&XP$A8RwZ}B4_Z)>D36)BCj%-^j58fG?OgITwjzE#zOvMw2HX`Jp4+ukuz#T*h zO45C{=IAJW$|Mt`oY&!EamRsq0F)!}KUEpr%mG#$F_jw~lkCeoLOjyuF6q0mn51ap z%<}Xp=yysr6A9GqUtt*dUB&wj2d^Q0W4w^UwRdx~@{aOD(!Ky8L?{qhD(>|b zzJ#d2d$@GH4GU*$W!j>OY%LndlhE<+0pBw z#7=0I=uqO`d0@p_#-$+b95UB5kcL@nl+v&VqTk@~CXU=`Ol~Ip#=B7O% zIx@^tc5cNEd^~!c2pEwuJ$~%iEHoYJf`Gjc6LE+NY32bW(D6~AUSLe2>HTjCv7)jv z1JJ?Xu068}V&q}yxN)4WBF+pGF>q>$I8czoe#F#?2ye1pFxSB~{qVd%cTB9IL$Z3i zqXo|_QgZMMSwVt`FX~hZAmfyr17eg~Sfw*(CfAgI;P^`9vwjK+HrUx!Xrt#SkxU8tZTh4A{A#T1!(8Ye9r z)todhq~!>IK#I@2wRXeBlx<)80?IG^)#U_`bLYe%7c@JWL4jd?(pgNlD^N@#@m~lJ z(%RM13mn$0VR?l|N3TEgOBvh(+evQu<|Ip|m|`=>_o>4H2|tHRP&cA6-ST`S7%gC( z9uW?FO|dv9SG%dW;PdzIT|`_D>L(m%W^!f%cf{B!=rp)Q2+cqp=@n}@<_@({$OD2| z3s0JH4@d%8H1QWpW32kD?%%IpF5Q>bIxPB>BL zEPwUt^1oSAw?8k@&Oxdcrvo5Nh@T>I~94AVEttxuSS5HpoPo=KA? z_3qbi#MKkLJm@897i`NMF*wg54hY;re-meQQ38?wGyAO}?njz}8DEj}sy7~9-jrCr7P;qw8QoF~G0RGbkzkAD@DTtu?JIk}%Bd#~(E)o~yh zcV)MhrY4z1RU+L$6tZgv2tbom5cTlo6{ebLth8I!5YAyA`He|dWA|TWCctZgX@qGR zXIGs&_x9#$(z1&DE~fD+j-zsQ-MpD;DWfo0?=gc-$|M{HZVy34A8O2ffzj5%pckiw}|EHlruJu8|%w%c;AWcYl zxB{FbP>VPz%>kB};4J=Y%WoS57xLcAXz%%LfC_Ow3pz-;QWWPMtdCka96hG5!&Nqe zYJJm0Tb1OLRa6pZq7xIQPd7k?qm}Z+yk|V6%q+QKnaidia%#_Ul{9TOqDa!THJG$z zXtxv!J1I@f=FopiG$+ay$dFv;&6RHJPM9;=$d!$Lkj1r5%Xp`IHS}oTjR_rhG?x4CplVgK-R>h z0=I#uE{B5*X!;x#CRgQ-JW1=_&ma%@66Hum_X#kCU>j`PCDGMl^fF$TNN)XijB#Db zDYZO46NGf3=qq79k&wu9(L{U`^97tEr=Yc}@z>7+?W2er`(B%ZC0!UGiMtaV6mVX4tQX$dkkan~W%!0lM3()sE_DIK{g3(-`BDtq&Q+`+q2QYoUnM(@wEX9)} z)&=$>-g05=lh?~O$pwkk$zf~gG>KcQWvB~Wsc_!^I~zO@RR}|Z7!0dI$mWnxxHASd z0b)*_NXPYOuds2TIvk?DpFJz4OAsNke+IMez&3)canJ+Q5cRVZQl%SiL(L&y>Rm;w z)1S%npe_(-UMXPd04qJtjongC^jicCVHk&7lM%N-Xd+{$n96XK?WHghvG`>0X@Rh) zTxM4I1l|0nBp1NBT}f6FrD?Tzsgd>l0X^JaG6UsboZFVW`oe+y;TfEHQJEzbvXvPcR$7vbvMLHC*M*Er zl2R&>y|U91LdJzi^?#q2`+5Ga*YmvY+fDs`-|y#hj^jAa<1B!$o4a=HJ`zB)js0-Q z7h41y-RkG<_D(!2EI#lsH~^goNcyOiD+hq=O9ZJrdH-$X-@0Mu2N@F~o&#KIvnrcabu?vZX8 zFodl_7?wwkf>KuyQt_^YsSVZrNk@dH!iMS($^iK7EAUv*?!Sz>bcihdMVXm(1@#9i zE1+FUv0G?TMkKuHpY>f`m|JkC{)QY~q87hXSYs)6`l(cjyATw(l__l%oJ{wjNo- zg$sLuNI4gc>mz3a9bQkzPMyiU-IG^20ePr@pm?lssF(sl3(@^!-ctOJ7|!J2{Lat# zt+IdM;^M#0zbqD)4<;FAkvRGMd;~;fBAkYSM)cK+OP6h3!GBly48gnjj|npbS0=#& zGMf-!>GPP^QJc5xhX$PsI-a&PPMkD-gVd}~p1qq~X>zds)NBSF#Aycd6QmXtpaIhY z>p>2I%TYScTCrl+zJ2W}cmoC+%1CX z>_v;36WP+4!wYHlp7K-|B|MW95L;wU>?%aYkD6fc=WnRIRetwT%chAX-O59>(M2jg z!|KzzwQFT2g!UJRmv>(;g+~tom>-w3^?z3FlswBA7ea<-L-oQi6bKCoECtF}=Bh!t z_`*0caY{rzdK9b~$=9Lp4;P#xitT`i0a4WY=cK>dR-Gs;YOy|@x`yM#`1>`gLC_lY z!{`GQUj~MC8ichtst>7aPo7-5_gEV3DOl?LXU{IaFY(VSt~bsjB-gx{QkmkK>J8FS zEO(W|4;y`M9C_;l1v*&1MmgjBkraI#B^k>jf%;U;D9oZzIp7cSg;mT=r~vL2%siwH zOtq-A1Pxq1+I{0)50@EGl)y2J69eepMK{G8qw?KYkN&lEBinsaMZ+U1R8)cHB%(NMJC49rAT>PX$(252dQ9qn7npoT7Oq( z)D5NjrVROte}zoS0evFtLfC{0f8MogU8&hfvZCE!(y{SgrZ7EuQgiHQGA0fTN~s~9 z+73zcXSKZ3E#h$Ug55(4t8z^!C0`S1%)<&mq|~jT5pnTMpu~j_6%KOU_rLahp&CX? zr~dZ`s!&mnl$T#6JrlJM?*xDU!Puy1;Jf;fIEzI-EuobpC(>u;_(Y+1_sl>>z#%RJ zo%%>@r-Or0tS{#TuO;e$14Kpgu;=pSt@kEC)QF7k&wNmd&(G6#D{B2No{#v%Aw+sv z#>vR4n4{CRWWgtwx^FJbSK)NOjIZZfja#Btv6yrKslWaBk+_Ti8tbo?)Woqpr`C)D z-m^Sp7i2s=UTG9<09pIu#cJan6%`e&vs#v{JAD5wh-^_))2jNky5f~VVK}FJeun?c zMBqTAr9+1NTK;GQ^)WS~#9KD|p!pA`m1q@IYYIh}<1>;x8NY z?W>C7R$vI`Siteom&5Fd6A5((*%gHwFIuK^nA+PO8#}?-IXcl`pKM`Bq~d4L3{n#g z$;hi>#SqReD7B37@|x5>UBX^~Hy73Jm+jPz!Bw@lAPcW^DiKnvdniQU%~Y>UIZ+OP z%K)q;&{E@@JZGc0{!_qLeO#T9FEh1ZP;xZs?tv|(*6XzPO;^T#{!?@UKCOYe6*30! z5P*t&*RE5i*Eja|qvKWMsSDXbIZSpRhLeEX^)pzXP%QB%*=BI+y`r+n)ol9Hf~grJ zf;Vhvl6r9+rEVz&6g8|$PBH3B@jyUo3;aTLWx*`l>Ffv`?sri&sLiSoRUp(R%8|g9 z9mOS!=PsoT&jkRcd5aca&_2AEHD7OtgnJ<3)4wwM5Cje@w2TFc0r=5z8ju5Mx&#n8v}y#3nke5VKRaXoRnzeh5sd=$Gd{~}_ZAJ{I4yPT{ zPhYG8vv~N}{NOt%ORzlGNS>a1<`N|(`g&`oGzg{clueAni-Jh_Hn{j`DlTDQ1_``(=gwuI z90JzN?=RspC{aV`SX67J7n9oe$AT?!UD;0?%e5OAcyP? z0)p5>2d%*QCEJSbf0k?VuA58JHr3r+>PH>N_OckdR8S4ZF+DK6!&;YfKb|+r$zVna z@MkRiDSZQ8NRt0QSHb!+ouu*PaIVDxk67PGnn&;iJhSnv*7+AqGA_sv(^wDeDCm|T zbC8#%)&8m=Ur`27{lSBu_N!UTV7Eof30jOSB{qhGGMHaS7oFd{JGVgA^d$-`}QA5j&cgEI- z9G%JLec6C!<>h6BYz<^hq$Wyr?f_l{cG^{evzZg1fGLLx^1-Es5|I5O$e<6xx=>-r zs4XHkK~}IKBO|~F!U5~yR*0Y+ieS*5O*@G#GzB@MF8Yi5=Eh#7l$W7N zBq?$ZP~^mcPSa?q*~Td9Ga{q`_~w~cfrgCR5he$GJ=51P)zq6kD~+B2hW z1X)eGest;Jx?twIFjNSHW8&Ovc-i6; z&mM<)_}n6P>aqug5x+^IG+>ytmTK^e!IrD5}Vt%0fdjgtFTzGhtYwe4=1fp|p z!EP&e5Ut-?k*i7;&ieObyPiRU2~(WiyeV&8BpKkIybNZW0 zP1Anz{(2jnO}t-6FHS7sy$Ddc1v`?gZ`pj<)m^p!G5=DsE$*S!9M!sxCyCf?$1 zblur~$wF$*c}Y+lERd7xmdL~R&)1#v_vCRLZXq48t%;lXpRjRNd|X_Q9z9qH(M%?W z&y*Awn*-Rx4uR*0>3Y{v<2EDqpK2uedlmtvxMlSj>1D)8njeF~8&^?`dI|gtmj3m1+z zYyKSmE93IRm2Wo=j=<{81VI%o7qvOZ28R%2y{JfxVBevC*&Yc70oEYQBW5V5?buN$>zSa)iWglQ zR5n&eUG@o(`*=Z@?>$+>_vAOalec(y@|X4X)pR~jV@Kxb%4d{&wTD&b0GLukL096G zfy62nMHYdWtbLg}NbD$>=0QxE_4a-OvI3d)P5b$JKatf;7eLMbU-O|uh8Qdx;9qz( z>cD{;ER-`2-DIO%BE1sx{g>?23m!c1aYX=fEIU7cVY?0OK|w6h+)O&Q;>l~6;?T)T z@ho{$G(h1n`MBuCk^0I8{*9_*C8XHfVYQfX`GpUEIjKpAI zymC4Nnjo?9MnAum;*NsBJdYU=vAvZ|8q_~(w==EQlSyTMpDBI3;h&&B;33g!?E^Xl zpOgiqoTUHRY_3}M&#`Mo{rajE)_H-4$>L0Eg~)b3u5WJ`a=d6R8IDKn>DO(ufPrE{ zM%nR-!-=AsPvFEz@qqw%qOWz2sTLFS|El!Y?e~_`xo(1$x%z@G|LQhq;Fh^1WX1#M zb7@HhFxEQgvEcu=2-~z{-_toQ=oo?)^UW z$KdiAlqY*f_zsa7W}Fvukh6f}L+g3dnEXS?3S+^u>QvhtBTp&xnKJkc^Q95bQ5wtMr$+ArT&)Y|$ z1u4B0D-TX9{pL;7W#d62(bt==m0W<6l3qv#J@P3>$W6pKXg(svkXW3<7&hEv@8{z3(`f1h?kMc0=Y4_St`Y1U!}y-huo1FsQ`BeE3RKq_y+ zmZwbV=bqb~J49zlK)}-f$Ih2gNeX=6{uqokfE8gn5km|0>IaQg+F*xZCgeC|4Vp}f zLbC;4o}MFxXH0u%>KHPL${SqV?ZJ;x>f!>#2i*dAPa~_1t3D+Wch6Eo%c-Y1V=>6% z@30%RR1jytB>*-wiee?siz1~m2gSe?f={ULR}o`670Fss_LEedW0?b4Omyl`pYDT- zgIYMMI*s2e>&k%JXoidyKI&!k&lEUC6#_7STdW)v5zp`asA;vN@!eXjD~})Vp=(Dd zHn8m9j`+RM{dhB!IW^7Oh?g1%{iVP9|b>*buf3oMUHiVQOMZk%P7 zzRSvqn8(Ww0u zY#xL@1%eX4A+b=W%}`lziOLe9*y_l=v6bgIY*0?@A>Q}EwdZbYl);P)_TyEx_CLws zGsDu1Gkm3>GWuhc26iAC5YjqvPN+Fy;}r_?MrAX@!4IVJAfu9HcWzurXO!K;P7z@T zm%w-z_}{Z77sJSefjp`&^vT^AjA0IDN&DI)yB?rkb8$F6kXoy6q0hqWT&C+uIw0QC_AsoU<-Gbu4#V;$!AcDUnZiy3jFK!E z{Nv^~|7Sc-*|SDGp_d22{u0k z^(z)Sa2Uj+K+F{lcE=q(noAfFaEjUI;mldl?6OFy)hX}KZk*JyBlg<>ddQYXY9Amw zGiy{AnO8uav>eBOmFXNb<$buayae*ZP~`pvxouTqc3 zm|!>9_g8a^4qNXU9KW6MoscU=Q8YnhHw)F`;mj2q0o zxz7?`U6N;K*&{$M6|8_D4w^@J5|mbv(B3j>NI4QZeXVgL->0D_p+=OGhnDD+XOX!) zPrQ1kOo<|X9;Bio3L5XVQPp3vYg(f6xMj;u_ZVS-qK0!6;F74!U0cNN2=K2NGddts z68Q;6F=Af;WGxu-(W7(K%}Ph}y4)7_Y~1ixy?X2GjkPdyScnDiyTcp*GWZL98o5zT zTYD?PhaY^ynp9b5yd-Q$ol4gTD-1vM-c(d{)7PJWuYh-pw9NzJ zO!Zen#cE7UooS>#V?pp0tGZV#eZ$O#{OY}SE&ih8_`T>@#3_Vs)Dy^2Tz5Fz7U*xp zo)OszCqaC`u3dAbk`z!Qu+v&4L>_{4&=9l7jmp>^@SL{_Tn2T(;aX2f;y55(04$T; z><||sE3eXaEb808KXT*^Dq7nP+HF?XDi1z>T%VnL*m9`0Zy!RSqP|v4Gv94&%1kbp zIy`k8oC>B7s)#}v?BpGwMhT%R70Eeg(rneLf!tdJRTHhWPE4>l4<2r0q=q`NRJJPN z;3UgY$dH^f(h3&Oy}vId>&hWmwCD!o#9>r2v}-cP6Zhu$@#CV_#U6~)+zKKDI?34g z*9vYlV=d7Z*BB`)qB7zWZ^w0qQS)UNem7l>$b2QAOZk|Cfs!#j4y*{0RhSIw&>aK` zLbR0a;&@9BV4v3u43670{z?6$24P5H_nIv2giv7Pox|@|IqJ6*<%frdJ2p1RfguW! z6$EuDsvNa&;qk{80X%GfT>`Sh^VHtSsaNeSs!Q}eoYYbxR1t29Vl%z`wT)O&oSlCk zu{i1n0^epj6|lCfeKvGtQ0DS(^YdG$ICiJ^KC|fiaK^#wk0(+Xd4c|Etq(*MDi+=snC_Tttv3l3P+k&JV04>Yti@ zO`VvuruJt!8C{3CMTx{)l8RdTR9wyuK|D%Al)MAj3I~@DNO6tSM&?scx1%8JxAf&O z2q;~j96E=HIJH45PsZFn`vblbQG%%l9F2U)dQkZ~pwEP{VXMevZ#|nro0rG^}B4X<^O8O|bjTJ+~=~N|N0j6v>o7 z=y+KbIg5)&ag1PZ4we!(Vof`vIwf0DpqmjidBFm);Iw5KVV|t+A9OcCee^|a$$bmy z6G3lLdo2I6IH>D)3vQFhgE1di&%PGAO1+h7rj5buc>C~qo14|^@^XwnI$SBAMSX=f z21c28+Gxi2xwVH45+`XB!CAQwTlx-!izBPrVEKAP5?(MF!fdYnw+EUBj;72(;^DXz zY8XJ0h7K?Wpn=e+90mr^izBM2cb*w7oW}T(+&fKmCCvzSDn$T%qIdEBSr+vZu{5(f zT^adCWQ?K?z*xjryzeu!G8>@8m8CGK)p-o$J)yA~VZ*r<<x{`v=;%W96)V>xnn2?!D7f@Z(ytVkgP;tdVHfu?ngo-V-kX5j_)biv z=3;_IbxI3Fcp>mg|ALE1q0iSATy5Z~&obzT;+ckJ8yH9i8qX&eSBqpELS2K;K>;em zvRJ?{BGQDfg$h>Yvg?Vsgvdt}bwd#d?1R||2LO4CY()SaRAeloQ{a~_|6J^sbbP>` zJ$G`mXK&{Sod#}KyNC)y1_P*7$X?=uM_hpsJ21jm1{gRq7A9gz%~8ebmyeIP2yfD( zC@Vm~@wlzLAwf`tMWt4DEA7AfqZ3(2)4H5~vG zQYhetrNM4Of-J&jYLqu`t9Hu2Gcf@rMjO8aK(TU<&=~XR@L<;E!lTv&1eY`-av1(O z02L#MbgWGioQlSMqn*b?6=3@0e+<2_@JxAXv2l=%n%0y;Q=a&yoXV5tawu?PmHx3#z5 zxm^rF*p+B02-B34x(o}z2-E`dPY78-8I#3H#W$HC+E!cpzzWrgAI_4X#<4S-gk6`= zz2*5;K6RFT*}TR01{rvQ+wshE{*N(4Q zWZQ7**MSRKQA4teb3NBkD*oEvKhfVQn|a z9yu4omYOYrC+BPVB5_3(&Q}xxICegFy__=)cUd2Sg2gJ%nmUpy)91@IJ+T!ZG;}B; z;avL(!!60u^rv{w%M=`egX2vPA5{L}<;zaA-^8ZuuZ*<}ncqrx=QSBd&CcG8UNd-S z3PFumjIlE_3p!`r1P^)is148sgq&;_tmb`O4uFEoDdqQrxT4rKyKlXsCEq2=q^(twJTdY9HS1+gCg158xo zlt%$com8B9O4h;WTc+s2DXB+@N>pC;FY{qHEL=1n)uEAN*HBYsHN7W3_?%?dm%U@uEBjN z(G%=kwUGc$X8^xzJ9cdFe4(eWwqRHbUQQ`nPi;@5G`V5g#03v|{%8 zQ>SL(1or#qZGV|H72pXz;tU-JU7ze0;DZxtq>&PJw>Swfk@$G*jhNy42`^rt0pJ-^ zQ#`vuL{Xr5!n~{9EQZmcNKt9is|ybAL{V98Dh2uQbpt67H~M&?l0)xnpkzXAER$f! zwwbT$(HxgO7J-?)H=28E>ntCqKozagdqz0#Bo4@~sr&b(PvbcgA@qhfC7Oy9=1qL~ zj;JWvKgD>K2vOPFK*%CI#XZwzS4mxM4Wo@-^z>Mu8SAfqgbr79$kd3Ud*k~iXy`Fo z_4-zHPvc+wXe!_=2H+5{1J%ifBjmDL1D68)aLXe5I2)|kF7CUa4Q%;XfLdoMSt-Z#^Oe(XlCA z6zx3MPRtxB2-1JP?%?W)Ur-*k14WvNX6bQZu=w2dTztQ2N_LRv_4nW6t6LOAgV_eW z1STFducV@)=jfXT1=^Yp8`8OJbLb}QNB<4Ktr`Cnt58n*2INm{CoBT3;@{Ly89fY> zKDXSh?Z9k!?c!dTAKCjiiu=}0W#h-%b?bf>hZ>Tk^q5`%b7(=g1Ki$aW1T@oPpSa;U=N<1dvE3kAd0RSijdS>3x09=zsW zvnRY2u|EU~NUoX^mW3R}``xhwcw>baL9-^0I{{G#Ym|$<0EY@aaKQMnmTp2CQW#*! z1!#;4c@C($BI*N0KWw)60`XJ{foR`nVG( zZl$gHN`SVcE~l8{oAPRkMGuNfMiw)LgeZejh@_hZjHs@NcfyV^n1p1Cfi^M4p@`r3 zVAABt-{Y-%dxjlYUXyOvrAs|pNoq?G+|W{O44W~1`gIu@|M+n(XkFI1vP!k-wKLcM zZICpNO)NxGFwn*q|DmUbjU&7fd~=Y9wrCNipL@Sx6e`XB{dH<(76*MFZT@=WSAKqR^u#F7XtG?0{l4G5px=?I{k*e;wrXQE&q*Ub>hrN!~l3wjveajieXR*k(-vjIj;{XjOC6|ymtTs zU|AZ5iBqP;mX^~i2DChb(H6FubvxBYpI0vQuMch#z@2jO`&qW@emM^~z{;6$FzC~9 zR^H_Eo|Q*P`V5Q0#|O7-(t(vehB#EGCoGfxj4QLiC!2;%JJC z?{1u##s&)gFC{Sr?;RXJYsS)Y3P(PlFY(C$;z8f>{^ioBtQoc>^U3r`o?@MBr^ibl9nlO z>k_{Eo*x}um+y*w4C5eRCb5(LMSv=M3ZxB{yeWV9<#h~T1R#{`cmK=j!j9XfbqA2- zA+?Y;ga<6{Np2aEaB>aV-g*=39D zo|2DFUF2HWN~c#9s~Gn)H15Aksj7Yy+=}#31S|H@-Uh(S;&a}V`@?|%x|U4hPUM9+ z6i-tjMC(x$5GS%>Y{<4^iNn{TED}%;!5eBwk`uAtg_*Hhk@c=_3MjN8PDc32_KQ#gT}H+^A*m9z9geu54CFlF3EYF3pK|Lbi}Ajs|%Xw}qW$kU&J_()m1% z#t}^9EaXT_fUQ{H?|bjG@cs613Q{PP1=nclsdblnb44c_>?VqF{H{xAM&TF zMS&*kj`W5b()ywsnR`1%ymZjy^RQvY)_{jl&irF zA7_u}BU&t&Cy|X&rSDX-;uQ18OrYx?a7TzGXO%f;&M~bHt_MdsSa{K%TJ*%233HLc ziuEVrCQcYz{9}QX#nqt3{m{Fti>avszq7rtn9_%o%NRU`7H#$cWD88x z=ix+s%AEbjfExmQf5Or~^y+hxJYrSxXF(Judw5Zaao@yoC%d9Qes@wE|pGTWyS2Y*|>6FI&_= z&+rgLwy`&^g3l_e=Y7C8d9Xplv)P__nFD!Ml)I;9)rUEtGTjSfz^H35Q4nrWXjRZ@ z5TQJ9&rSRxr-S|t=E<7aDm^`O8Uz}wbMh$lcnJVV%DrduN_bJ1fvZUGoMmo~TJVP? zwTZM3e0=;iBBc0bilfVJYr)yPVHIQ#1!sXbG9%^eZ~x|Q^QLaPSS@DrJ9jLLOif)& z)h8Pmu3ujevRdTwkDsu}F%-&%=(y~HHl3juZUNNEOp{Qdw0crMFzrujp;%-ZY8U4Y zT@H0~8D?$!byiHtW`b0^S)}h#E`II!>ogwiI&^4_^U6`(NJAGP@CDq1M#Oct8D9VZP&yB~ zbUsO_QQUQ(6ne%#-f#?bXW@H5>36p*^PHPZTY-vXqa~&vm<1X2gIhU1{J?0Q(v$F+EavX=Mu#>Of^geA&|lt+W5?j};jI?S83EQ0HHh1XBL zAzB<}T$%KBI!g>k9Spms&S28#A+-l|^Qc%!7Yzm9jf#reo}GB?7%hk#Uw&5MjH(mi z|D<+ewL}@qzxj*HffINan7Uv7vx%Pnf)aKX?X#l2wXJO!Pn>(M_aZ834@w(W@))L? zIcEC8NU;mK99z`OXh-B*@fWFcPy?|EWEW{??2o~i^}E#lniAt*E1)@CpiG-{CEN6I zvYI(FCT}i1PCUwKq^mNh3Q`U*EEeX#8clg~R8^9mX*7Qw&UyiVF?w_pT1%k5Q$T{q zimK0C+ERBc#d66{mmnGUA~Sw`aWNrfj-a%ETq6~49+`X`BnyM#>L|6!k3`KBK|Xd( zK~?Rj21Hy*$$IDRU0JfNcs-{u-4|V?jIcva6MNp!vf^Ebo+^|`VfA7r)h-C2xG!P4 z!@vaLxw!Nr4kq+hL~jC1=)|3r0~ysXDp|W)3=k@Js{N>+th(eX!k*IWf$GarHfl<_ z9cXGKa8d_@J4-GZJvx_W)vIXZ*7Wqy<}JUAE{y*PIYYe@KNlvo^)mReliV+czMNKB zxx*Q=1aBl_QFh3v8yE&LSzu|R1htTKM+6=-y9+VtOA*B5AcIIz+9b5?U`mQF6`T>O z%)Q2I*>s!D;NKtNo&=?#Lp#tD@&d>OM6}(g9$)l7QNC8H?2?jA=mkhen9wPGKYIO6 zHQi@%gBf;qT}FFxCrF0ND6@&xsPQGLojh50W>Se`=~1deuqoz&;`p+lpgbpz;;g4< z=hHIQy(+n+W-vdDdk*phn!^b?L=6uBw+`7a zO~)!u^!ElzfWQ_tp!6uJ2-;b0psX|?Ux-E-n`@W?SvH9WT*~BK#IYcZvM*m=56I4p z>u3y8_NXWB*_(7F1mhMMK+rx`c{AZv!q_b#N^Fg0&pvGR%p#_((!r(9S)=Ji2(Xx-GMIkYY7MI<^ zq-ey2BI6OaAN;XeYie4GVgrR4tH6HO{>Vs3Obp_?(~Qg5*gxax>3TV(Y^V5?jY|_I zgm*b2@I9>pj~oWzAg)D(K~&`H7iyLAro{)6=cTuD7!QZmMerBI_l(Cf)FJLdRGpAv z-LR_yKxAV`Ga!c?VP5<6nOj%e5K-MBhb9e!FW2W~FqE1_=}$>)rPDr9sXe#?poYz< zVaTE_58t8Gz3}0mXJnupnsDj`C4*F&6M$&hON4k5N2m?lA)0qw!B~;P%3u}H%DcOq z3&ZRzJ6%AkyO-`yIpo@Dz=5f6k&1P63;Gv9pDV7E1y(9g5L zk(FXJwbcDtcP(sfKj?kP^Ak+RvS3AxFTNJ;T;cTc(eAHfm(`gp80=^_Et<&&$m*tD z%y)kM@&yGj;aq8Wy!GRZ6>lfW1Rn?#QBbx1`J`K#C&GL&p2B<611*ktwV|uo$y{y` zH3I@}owMx3E2^vvr~b!-sT}WQ(cmD~6>biAo#JE|YaY-|i|wL}pHX~qatO*OHstFN zTan8$0U`#8o4@7*t6O==h)<`}g<~9kE&Z=xR3bS^&&8?cG-Q83XgKUkUN^7@87rhN zm0?@10h=F1$UvD)3l3$;-wF4G%@s32DM9S*OTc=#y+9WEbWL!A%~Ai$+8Cm}5T~}b z-I;tw>ICciB*WiSNE>O|7{irBspz??C zr$y!EV{o;nm*={32^q}Q;YMQO!@vrmpNgD&DqGLleJ3_An~S!=^f)?NQken?WUcY% zR~KkTnQz^i<+ai|G$v--tdbX7Ynm3^GZ3pX&V85W8Ngzwt3;?rHsX5(oEW#Vt23k% z7f#d@3l>x=p=n8YcpYa-;y3QZ>6$+9CACH&CxvG-mG9qXMzRR`cof zBBndEPvxx#zjz(4zszJ5L7BV;=ok8<44et(z_g;;S##!JUlw1Qrq-)ZA6*@t**m;0 zhg(9^fn@PFG5CUhYfP<+4jo&<9)^Y%}vELx0KroXq70?A`C)J{o%h#LaliaHR<9NI)V zFM#x#mEPVdK@%pm+fO%khP`uWA7t+}i7V^OlyfGR7@j6DFzCZfFH$MXhva{3NAj&D8b{1~C!j zor!7I0F<+@ChU}u{Zg!g9Lox7*f)SyN+4wG0Nz(9x`-sGE=Iz@aFirWBgoyVOS(2SB)!Q` z*fHHcTX~wr$yYnYlb+@KVR8eeMnNI7$Pnp(^s;)Fo{)A9aDj&GE`Gix0t<%bhNHuvqX)Vw(^rd6E>9#2){$Va;>e~!?<5`Lks!g-ENYP7XKWG7~RzsF(xhQ7z0=8@7gWYew%fsbFj zuyu6Qq(WD1dXsDc`oi%ai7t%)Gjh`gxL{WA`6}M*$JB~G%*`Xiyh3tDz5^g|4PIC@ z^zinYx{q;RAx`rnq@iNPYB3|0vXGrf;??(JZSveXbBL3-sjveI-@rog)x-pcsYwud z%un6uR^~OX>)<7)E|Y3QC^;I4tiux{X*^JCA(+O-S z(>tOzh1dXB4kFP2PKv6Y32!J1biP-Zbb9}O5i@53C-e6JqAU(~g#AQrDz27HF6e;O zrhR|9P*ICMun7+7AZYS8*%Jl~dFayVvuDMSUgoHVoz&C8oI{%$M~F=Em?oRja?79v zT%B#4cfrGlaCM;qUYjgEiX``c-tD0d8|Y`Yb*$dEZQIn#n<64?mnQt^JO0Ko#>=`uJ#b2h=7&rQVDgzD@?kC=hdKo2a(c+9aJkc^fE8@55vc zCZ&fCpyTW&NkPV@{c9cWKA?q_9eenjQ7X|(qVYb=pm0!hou-{pPbLp(!PtYfhX-Bx z!LxQ+V#qFh7E)6o%3}Agom|_~%l%N=lL8X<#Jl>(S`HJ{5i2!m)Y5BzElk$>>*UF+ zSb9*Nc8SUtd5?e9mChpJ1Uf`mYYZJB6X$$0Fmq8nfK>1;Sdk(t)~G$%&noU^l;_0j zuYfQzMs$z<8_a9Hw}0Y}mjKs4fpYft^Jq!Cjyd=qv?WTxn-+}mEwL`ks1IjS*MLhd zlV8YcZZTJYqzI24x;>_Q4r5O7=3ntF9I&tr6ckE*wh3i&IHXUJaKv|#sXTBLAn6S@ zy6%9+qE%-q0l3QtB zkvkI7Q3=au7U?j1WP|l$X2Heq1L)4Os9A!TT8V{gSm}QI{^i9Z8#01M3KnmE<}q%P z_e5|k)h$$=02mvA~nSdf_PN;~I84<9^`IZwnt6nFya10f-9Ls>?Xd7C|rRfNl2dU_G6 z%EC*_uD>q)SW4ueaEJ#B*s>+p^!dt~;fc>zo+vCj*0L|bmS83KIV|j^>54jop)B_u zP8E@z;h1@)PKo5M`y`9982{8Q=x#8XkYJ6K18D=iWoL}ZLl4_;-VnqRfzgKuTZ5DW z{$wh}fh;ru#JV_ZPg4H~2B3svp?#*eoB)x=?=gQTlWi1tTo5n-9@=f(zYy)sK@H`E z$+9@DvAc%xC(B>g{h#H11(I$h+GH`nRy}s{;>A$kNQ2bb;^JF*DN1My3`P+1@Quni z3%O{ZU_qpzMs{!=${!}$6`oiWvu~%P|Tn z4x|os4nJuF;gAm^C=xUuSz^u%_=W9~ zpHs&#P|X`{5WOYA!vui~DH*A)1TEc5P4K7xVC%9!Ep6DLOtvD@G>dF{VwK1j{>nqn zLM`7NyqK?~d}YDzm~ocs!15GhN(rrKZi?bkIU^2%jVxkcmp&)tf<*Zv1^PE4=r1cEa7WoN>$n!%XVT+qYlWi`!u*!eI0v z=r#$supIU3A$fql06U{Z4|(R_3t%0~JodF(We?sR71dfpBb(oY4(~{M`pkJhX-_x* zGa)DKcQTg|)q4P+UUW$C4YUQ2LF2sNB)zn!`s=EvH|G84vSovjAt1lwV;i`o@=*0I zbpqxmFq5$Qq^%jl51eX>Mg=u4-gD<)tm=S_T9IS+txBqWVl@NU6mmdbbr*G7J{tKL zT)A^N3`5tLm#17Ca+M)6<=*k~q^QU28z=5$6WIMjs3}Ee0yIITEW1!)jCh2`9=Eh- zvLE@b@54urzKH1`DqhC3DRrGvJU9GrNCuRVtACKvlbh24^r6TUi->%X47wz(64|vp z_r{(~*c^icT^!mtFxLWoA_nlWwg2idkR-J#4esRuZT2&AO=C)cU~W23%f&|kK zz%~1}x=@cn5XdtjU{;;sfY7o_84cM&VRjI8G!rngiWGi4XE9|t1tuF6jgQ?A3ks4= z4r`_4{)2iTF9VsFOV>fQVAu{n40^DCOF z95y&Uo;7IP3F<+w<;&esbkh<+vHdpu?3)&ow=Di(jcGGVCCbe%JFjJTO+Y=dCxUsd z%#SOvxF9lfG*p@#2PCGhu-QK_j8X~uEejDnm%Ush=9GdI{UE$D07e}GLpg5ic$S7S zF5eXdjnZ7qIl*;6*xg0_J9q9Rwx8`7N!s1)hx}|i#>27}8B~?oylw<-@lOe4@XWs; z&%UElJ@fS~Uv;_DqIn@CLj-MH5ow7pB1O;_M$CZV^}aWu>WT}Jc_H+(eCHr;EiWDF zmot@pXjC8yAem+a8m;{jl_7TS6aN(tOu9|UN_{?Znt*PT5o6cu_WY@^rMqsgB!Et%UQREyFGjESk*t0-U$`d{GLQ%7?K1+RuaW~p-s|p#piLnl&KUFntDkwwIKGZCez_&MPk$>l}gO(h%h zV*P@GA7nJyLB`_%jgoaupe!n#Zvq$rEC{6;AK#EjPstU?@+fHt!2F<=f>4K>9c0#B zthte}Pi^~q1e6%a74{!L(I-rUKcEmiLLo)~9J|PN_m%5(bTV~Fp(1N^Dd**N5cGiY zbN|fzf{cqz-qh2x#UI26!U-A#*Nkr8eW{w$>T0VM{l7CVs1ZLw)60xb7cCN)&AN^i z$*P_Whi&NG*=zZkf}1ijomhX*zI|U&Me3zgElC2Ez!#PTW zLr(-~1qMXHE#etq^NpWAkIFg4qvI&>m6%3NIac}FG``IKNz5^w<|J5fFLu$(zIj?d zag}qkm^pcJF7;`4{g36F7qpLH=oO&l+K%qy9#gwWg{brO4c*50kd8?Jo5-WcYC`yW zei6ai?Q-e|fi6jxl&EYy=#d)*-a>#<{_qlyzN#BSs1f`Qtic5Fs7=dS_fOrFW0XZz z*M(#zMuGH6&B#+ibfE$SE1{m-mhy%Rt`hn;r}Ha|uUJYUc1~5i;|shGP%qHctz1=s z`jL;wp@%EN*2(S9a86Kga1jd$dcsCi2+B06{7snDVBB~C0zub|7!^;xFKhBFmpn%~ zJ&pHIZUB%CJ^ylTDBI$wHPKSr+Z;TH)0*`WNq^i7U=nF!Gcr0;WQe|ru!9gY2Sx+3 zq-(vXYqP1{LoNjns6@gJOabsD6Oc?*`2r%-nRN31?Zq`)QnhZ&28UVA>>B=d z*P9NV4VgnmK{ft~Z>~Ho4#>2PbyNdno zq+<@-`;ypms#nsA03=b@`a2jQ`!~;L{OKlN^0D5_yluZdJmY5<<#vp-ex|qcTKf4< zE#PS$JRn(LJmuK|hKv~=X%hCt-7}^9P(C^SVSiySfm@)OL|8#f59eaBXE4{7x=IZF z^t;ej%_W2JN1)yUg!JwmCM$U82_OWrTTXvi1L{Ud3Fq2y=1H#0i?SLM!DT)q*1vWz zN**wPpj*jDj+B{>E1uP2P{Z`!voh_ABvy@r2%xwZRaF_5G|c}hAMeSK1Y}G19np>s z?HTv14p2(wyFP(-kz5q!Wre~N>H zg^$l~4YO*0Wqu%sSoL#t4AH;9@vw)=_p?$}&a^wc_fI{>TuDJ{%%QmHm zL|}6!l#HbYLiWcWzfrQzXx8#Ec zGbSZcVWjIK>82j0bTg|Z(Q4k?pf%Hb12jS;m@QpqFj@p25-(~5>$!Q>GOj4W3YgLe zfNU_4172q)64x+_Lus=KmEvVX?E`^BbCWan8C$_;$3R{R(hdHPGB++Ir7b`khlwD^ zSp1~y{|x`(l!&&#bS(k(VP1^Z;-M>y7uyv;H>9ay4goZkdf}Q&?H4ToU73R8=**?k z5r9Gr6@15n#sJ{UwJXhw=-l@2=th$p+SYw73?IX=KLxvdY1|NqFeuN}8+RW%v;#`h z=gfd^+ElquLh2fb@QqtZD-@114(!Js_#P=vUU^jRq^et$jYV3oyAj_>PP0 zg%;0F;~-^!GvnO`#j@`n*XjMWxAtp}GBwQ@n`3um21u)B{Bw?ptf;g;LM0@l>NN3w z%e00=bHF`PfKVoeM5N&PfKF@YS-*@20W%$6Ii46qAi;u^jqrO1E^g0(rQ9oi|6Yu0 z8GcY}(g5m|+GP?O{-8DZ-Ce;IXaJdi!4q^SO(YLgOrC+?IBSZ_WiNDynmvw zms(_g8G$1L-3H5X71G}~iy#+@s<==ax}ZbfCks;3y4V;Tk0LK7rSE}R~xQ$DtM=4ohH(6^Ef zW;50&lSOP@8~?o*-y}@oy zxugh6+omIzFYhOx2NzKw|5MP3#0qKMUsM=w?4a_pncuSiB|n*t!RY1{BZPDUOUecgjHIGol2NnjbG1B5TiY_k;vzg@)Jv`S*wLc^u&uxyH2MrMP+Nry zuIGG0VOQ+B(JRR;*u8sMs3}24hq02zYQe{^(6c}(+uV)vwzIJS`$x=0-qiTS`T>vrcnau>k283p^N@jc1O|Y zIO+cMPkR64gyD7oC5W;K2HWZT-5xY4P)?vgxFA%Wl>9tO-Ub5sw--UKBCQq7_#oZjtrdaRiG&Lyqp|!U-^@-K#4&06> zlx*7I$C3%e(*>&SG)i@j(o}}l^vVM+U z4uK-HZ_b8?kWke8W5bW1IkOYI8umqU9BSCQ>A{~+#DoyJpX{T{x zgrx@N>n7SL=D3Xd^@I1?hb}v!)hfmTk@Ud4_vL|!8#b&hB_E$qWE~G4JyORWgvl#9 z#nyfs7~dpcG3KYUsy}1ih-SdY4OzM%G&$1)AXLd-C8No9`s44@UeUaWE&!zi1^EF} z|4u|#j9X=(92Ap!O_Yc@a#{M^;TR8IR+^_1SKDFFCF;){$1A#tSi^()?E&|+%y(yybOWBE!#sSRG%h#w^$ z>m(SyfUse*^bA;5EDk9iv&BXM5*M%|+Pv!L7##I_C;kR#At}g)Cqx~T!uEY^;KAB_ ztT90OQ0Q>~hi_vle0nDv1P4?_{HZ7qX8PBB8(W=KG4ujC)y1VSV@C7PkPsRt_4pMj zkLG{>@dLoT-JvzhSFB(fxe1C$1Xp5n198j{s{b*Mw?B&JX8qc~#y9C-U)*3cu2d|| z|6{_)D5|aEJ}Gs_fdgB)0z^GnkM-0FtvhrWN9ziHqZoe-D4Y||^UPvMQRJm`RRD;x z-jiYUt&@()*cgZu*$m8CQ@yFaItUxpC3y!}b|+o2n3a6hB8)yf=~&8oW))^31Ok&> z^X5<>E4Z+}BC(Q%1pcE)pq3J_fMyLp@ysVr_;wv#;})}blHM8;n7g?bvLoNb{aZ;X8woj z5h$Pp@S+ysC$;`)XA56}^%fs!rgxQfdV|7lLqXwyIehn%r6C$fU7o`++?a zXL_U8XSn_Aol&jOXo}vKaNHo3Fp{X6@3S(BWd zZ7nTxGzPv7o1V_z0~yDy?H!e`H~%MT8tkU-ano8o^M{LHR>iPyP#5C~%r~2mvP8hb zWnnFYqy%~@B2)Iu(-cE6#ehLl46R@2cO0y*c$N&4NZtWk>c_9ZgsxYkacxpc@0SLcYXaxPMFxt!y77um;tCJ5!|4r)mbo9Lh!QU&88s99)DMVd&n3G*fG9UZZd2^>Ev1)_He7!VKw z(4cv%K`is&Il|X)ojDtqAvox%Q299LsgVe&sB-wh02&AxQji7`{Se@X0>q2O7FUo{ z3j`fuN$0tVWUWeAVdgyaKQ z5-f~{>QARu2%?ts_tdaw7ev3sv8X_#ZD`VD{Jm+w6asAAd-<}@_^ZT2O1a?s>5PZc z3v(o86o*0{ldUXN*=*B7;gVBWJ?d>kwzh(f5X&2t+`@8Xg+o$J4F8O?&zW{L8At&4 z^Q%4VHfY$eUdpB4oSzlm|Mwh<9jcmiq!F3TC*$nkZi{&wh?nk%s`Qg>lMc*X(rXJv zsw`6z@*7Bn$Vlp!c}0LU%4y>Dfj4_7a;YxpHk)vIq&G&;%G9x3l}7&p1?;je)9CHO zvxLft`}88Q?BcXxcW=&=DJdYk>e+73O1*#NntBXI@!Lw~@$-HQ8529UZr1!CZAZ+~CI z{K14QLx)ceatK@SuO(6)85gyKEki)%P%Fe#J5ClQR}X6hNB<43cMD>I7zY>8=Fr7b z*`Hy(l^BPLdV?^OVHOIcM}r{CA6Lwfg~~i3`3;nPG>lju07z2Ki=vRIPROK` zYUy-l(hTh7>8oTVA5fTV#Hsx^!BpsG&KvD9G;>qBR;mhuqA)iY5YWO3BPx^@N`E$~ z1PgS+W8vY$p?$KAHKZa21VOk}PqrO#x`fMUHqQ8A<-`vj#3Rtx*j;14-|yS}K*`g* zGg~Ug#4yQJ20RN*69DV_YTvZ=3}J~vM&@~>=q1$SR~A9HB3tOQ)-$$*n{b=>@s5!P zDP##U#CO2lLGz=&`$B2ZNtwUjICD*zrt3Q&7N%1V!@ciUOiP(~-vps82b9OWXT^pN z+S=%RX6-n-)YH@M)SU9$vElGvJ)RnXI|LQLY__VZbHCXk)D?<~C%topPk|Q0)7GrT zp+RF+&K{ZZK(ioBf`!72bF%q-WKl#OvzPrH(vHsy&<|)wNddUTBTPhyIi@4x4p--gOXBnn&N?n1n}yr08`p9=3FyR1H(FKi<2$M)v494#N?7Xu(9nFQg^=KI$`9L3q} zCi`v1lTJJP|2F!svSuvL$S8u^1~p3UwHKrM6`b|;yR7+Y-}5W1dEoPAKL6|3F<0hB zD84Y~l$ww%3CJupF9S0e0Etf(gDea?!Stf)425}-`CD`a?AO7qPm5NP46>E;NEFx@ zu%@4AgYMni$jBnvXrzx{D7CyueV>OXO)U6k7Z5u$e7~j@CyJ{r%|vu;(k2SstMGZi z(=>M2ADB=!6(3yTuD7~oTjeh|$l&#rd zuUCf;j&yRLH>5#}-)?`JnZnIWGiuuK*kojeb3!E~b6aA`04bZybd4w!!ED6*it9vc zM7@KIN7k8LWnGMFJ-&1m_CV7JNgTUgQ%|jDOjou}L+d~R%UA^DEn(c2WAs0B#P;p2 zIr$tGS|M?Vpdqs;kL0N09)*ZjBp0G81k^+)kg&pme?|!y;`xw55~51vPlQ<@x6;QG;k#r#!KcY{tif8= znaJ9ncGTP8n0WlWdfRy$0t2;piF#m7pd_M(mrZ62Ipi!CDKf4!p66PrsI=~O zf?`y#cGMSKF2*C(nHa*6836z|9KpvHF^q8ETecXJLwG7kV08=)CmcxPWagM9GVy{W zhd-|?Qu*;iGjD&eXcjqbl1khby+yNNWfk=4W-o@ObIT31qC49+cXao2G-3-Hn6e1T zPAZmEIPOxy(6v&aaGhlx z4=R4_d1z5aV~WUEAb%CTeJhJxky9xYZ=*i_ot8W`tFBUme4zKi74;rz6vvBjap?lI zQTux2-E@|g$a+s|5YPf?PiWS~0C!NM<1ORxyaHcrOJ5<1A6ki{zkMlFBr8f`L!Ul= z$O_vH-3u(rUpvi+*JEJj|DRU=_UWaCBaA{AnL0=;gt35nz!~sA`D}PNQF|^90)qXxFPz9sNLED=ot};YhlnI(b^~3n`V<05Yu)S=C z5Oj=kDK9}Ia%PTm zcCPWTdfO@cdQw1MUerYUp_yEGWDfOZ^3JsOb2#zt3_$X$eXpfgK-7iN1t?Zq5)b^` zD@=@FTL^265{XKr=t`i#?$`<-#{$iepn|OcpKGEH6kRY<2Ll7^t!HqB>y|ds*2V^^ zYNYPY;B6Hyjd%b3h&8^Q{i?cBSZ%qp8@@NxXgP!x4SQcR|3yY=URO=1^cSChv4sRc zl*&r~n4{%lF=NKMNhW_iHDmKmu(KyY018RIB{x(Iq6`gVv%fp^(4Za?&rL1`V_;n< zU3m(8j!nEcLaj{F_Wpa}lQ72CV6@V!UTR;aL@insuh^bAq@aRrs-|O4e{%Oav$021 zK8sEvk^?YqX~>x)<}xLux%O5?y9DrN9*mIZFRz%q^gzWVDl_mrOnz4H=ohXG^DHQl zxI=Nwj_qvY80e9CTX$@g$A9@BI!N}I^sK0>$mWDo4!C0Rx9I8FV1|%!E(L}X+JY=b z8};ear&r*(GR}YiCM5Qv_h$vg>s6vEhGI-dh=C_i5Vj5Y{&00%ndYXnSfD&(Tcq}Rvk@+IEXOc*a?xYudeS1FXUrw&R~1BDH;q$pJluX7g~}JXtUYY+q_j`)d7nmP3iV!*!uE-$xlI$Ks`NR zq9CwE$U+%AylYj>7%4T7=#zK4_WP=6*DkE|_2j-rcN;og97Oh4K%F7nVY?Nq~8r5*umVDxSnvNVcuKC-N~ zrBZ1A-=d+43a(yBW$ZuxbJ;Zq$T4DUWSmaO81Ttz?=@5=#LeWPFBMLfOSb{V!(>`)!GiEQk!SCEaZS}vE zNJQ{rqht3v;b=C2Mi}71nCL0h1tW)`_Ts%k>~x2G0&T#k1NVr|%ofJw+c$d*P)@qT z*E58th)Rcwjz!KpSQ0oVRI^8rkr z%5WWliI30&>pL3J?R_04_9p~Oxz4F335m}I{wg$_)Chh97rzQOV|a=I<+{wui_?rA zAc)6!m&lr3UO1&WD=^p+rm-~#alr>jzl8h6zS!FK>!@Gp z@EH(<(jI27_=uL{<@kvlHdt4Zgk^dR!a5mXdUH2ka3;3nO|oMWaSN>|ov#T6jQ#gD zL^F|?gD6U{5gp$16*u;?ykq(85mz_e9-dcG?o$53u<(*@U`;FiKTLI##PNHGmx<25WKAmv@g z)sfbTGnX@e((Wd{2%%KDvg60M1oY**i~lX@UfhD9d*H4~@i|kMv!V-9w}0!qKFdm>;2>8QBF=MTC9e2MmB!> zv^upS;ZxXAwoh185pHX4UrXz_@|)A^TfQyr?<+9m>@x2YVL~c-seqx)`4>2@#Ub8g zAFDWqbEg0@x&5|VhjhSu=jB7_GDsna_a#H#L5t=f;6>wxmmH(f$kkc2Kq{k@Qe=l@Cn+V7LWo0AT6QTT8u$4=?)~FF?&I7; zzrMfE_x*XlU+b;zO1mqvwEwnA;Qr#8lnIqbwWm<5$_RIa_<^q`vffwoCp(eYY;Vev}87!8vzZtKL?I7X0DbB#`O+WOvaB+^lYjN_Cv0r3Yn6)GjyyO z5PA8?w;T`sgqB>m9$EX%$Cac6Mm+9sm{Xs`D7+M`BcoIH_;z}cpfaK;V-_NOoG1=` zL_w?>hk1PqzA9jZs7Kh;WHB>rl3D-7%ZjWfqT-vviX(oe=TE}hW%`E>3l6$Fh+k0_ z)hjFWnyYbFaII6%!u8%;DqC3|c?ffkw}!oA%Tacd!w}C+!xucE*%_6UgRCw#NB=o{ z_A^br%xv+wVsZAcm{>dhr&}7pw`g7K5y-4|N zXmAq6L1do{uaq8Nt=C{*DdgLwvAJlgWq;Y>0q({N&u<|6K8wCYECY?H3jbUkFmR*v zt%cI+uycuSVa-;~xLOZSXj(*~1M)utr}5=Lx0>+%(rQbdZ}KUwQOJ0xp`Bo_^bg+t zW;DwTa^l0~EYnBAkt059%Tbm-0=W}!iMVBLZY){7Itx1qQ}Z1{btxnNxkaK*t-1wp zf($@zA+facuL92YK)4@@u?Q{LK?E8{?$qQs7eWNjt;2plFMhn2N4BS>owDtyZJDCU8a6S6p!T zwb$T1m~<`}*pl7jxWbUY$PNyUsK%gkjpsJmOQw2CW@x;8`@`+}?@2Bbh*H@k5D8i-Q67OpHVCm1SdG8rH-u z&Dz}Ilwwu#wq~3oR>f>%E`?2ol8~*De7EWgAWYCjp_t*NmBlBlp+~Ob=#11;Caj>M zaSGl>>O)qYdOncn-JSKzp4+x@qa40*BV0rzp4I#{OAd9Qe4r5FdjvgMY-{`1JKd8- ziv4+0rsMNFckW!z?`ITc>8tJRk~1?`na#K%6AYsy8WTI3I-uC|>CjEU1G zKLR5N8;&S{T)YG<^$hC79X}UPtF2*`65STKAT8=dRC2OjqWIoE*_Z&51|!GDE?c_6 zl;}x)f|V(I^Z@+EO8Ex`V9nlKr%x#Z6XB=JvQZd7rdvNMD%?F|u$ba;I&sT4#LRV@ zL4Y}|9m6;`4o#J6qxW1ELe9uSAg;>3_TEOx0A~E9uhzf($7s-OB@MRAu`OrHL7Y;RXM;FXOO`ELeN zh!5wIgsjD2BiUQs3d_n)oKFeLSO$;81<7)c4;gsY$azskg^7soIc-3@aqb zoZ^r`vnlW!SC%k?6!@8bSx}*jCE`Q|6b1D-wsS;SSeS9(lbjq(PQTjmH+vpRU_X-_ z9LNAbBJw6+&eF2GkJ_NbBj={%((d4Pih{rSyY+Wa#he zYGss2+&~=G;JIPB0e?Y^p#)If-U6uI=&M8&F=Z|8#rzW$pij2}Fuo@Sc?#9IL$}L+ z2b}OzI(_OC`%?nAUEwf*3B>*j<@BZ7w)~w@uC@R0cY8*iOnGq8Jy+byz@+?nQ3`UY z@G$_$u6;P0z>5}Uw4IoCVG`(#g_P#;>X<~JEyiBlVs_m7$~9#Vqaw2}d{j%p9H(g1 zf1jUj35ThgscJw`BZfd^U_`NKH(G??P-o|n+L{_{AxAG=nst7h8p|5EZ_~k#1!~d= zWV2AVL`G6gp**=5%S*@9hmuWKEYe6RCNtUSfHK~lSU(DcL>mwS zP1^v-5~eqT7mR}!O*McKnHFRrPDWq`Kp;VEIUxc**(ABLNLm(+L-NQB8*vgC1i=R`YjMEPU2j2#0zQ^nj#y9x;_nv{N2reg9Rav*|c6#7z>4(#v!ru;FlpQ|2 zGO=4OC%C7E%vsRWCWlTv3TJBIeeSKLHOX`ghf(M)p0kuY*n4qJQlGts{!5)jHPHY; zIbT5>VxGVz^#LkN>Qt9zB{hSFVqQUzz@^8PVJd#)7nlH?-#zXPdLU=XOV!&**Z4YB zTK&4|Q&UU)Q_#V{pc`8P`LqD}Lv)uxT3Q82X@YIS zXpVTl*km^Mc?>dd40GT0O;;&>xfW(uO=afuOQr+~&ZP5IEhNdZBholNH!y5V(nG;t zAvC1*7cJrD-!EV9=_&hF$Vd@ZoO!bPc8|KALrxDPCFx6~-{N0$B)C$64l$VsssT52 zm<0)DRXX;BMqZFaqJ^1D5jIK7z(oY+3#=-M?98|lWrBpB{VattYx6}i+C!-Ckt6ITknsHBTC)Ci~zEGO&cActrHAMIj4cW$G6v@Wpsq$O*=I(%i?aId!Js^EV_1hlxJ}92(yt$gu+C#)1 zBPwC%i19{7{O>*>{z}W4bml?pG3}wOq+R(MeCM!Sq5ArjYQJBJgVooQCynk5)#Fr+ zFEXG$vgM0IMM~s^zs82du=@|5M}Rxo)P%FLRgS{PmlCZ`o9=zdn&=NuP4KN2`ei5( z4>9{mWWR&Mxt}l5+ChC3kv4QYKR<#tH>xclwyKj1^`MokV`?|%_m8<@{a>A#X*n;# zb>qgVu7f6PsxbCR($2igt3nNKs>H5{Lebd*r?Qhk8&(nLdnGsw?rZ0Sq z$*DJ$!NN&Av37q}pCdh|=ip(((zCMK_)hR-WRo;JsyVY2`~rBwxg|W@4~%JVwiR7lp|l7X!Juhm{}x~1RU9VprW!gr zt1UVlI@S1lRTXbm$*~0y{awuW^$?L?#Zcb~8X@aZq(~wcmRZ_v7);5Thj>S*wvNu2 z!zzh#l4S#2Ai6HnmxONT!FuTi*AhkvVObA>{UI%Vm4?|;v|xum)?2s zV9LjjmPEu0(oGKq+ZFB6=k-O@dC&_(aTrK{Avdlmw=t>|R=H)z%XH*X_?!|yMW zCJ<7_0&1U1hvjS%8n=GdrAOq#09>A7ls>wP_YaNUQ6Ai2&^Bu80Utl=V z(wGC}C>GnDo%Ff0(%B|Rw{txqp}I1%o)>)(lR%0dOUk{#Oh^kOF?&nTMkmN&m24d3 zqtVT2`>fr|m@f(OTE-h9JU5L1`>y;Mv6C=OS0fe2T`9gbP)j6uS{lKCtn6Jr;7GXZ zqj6Ew*`}9{$RkxK9`io!+Vm2T4N#dImATRD*}(qy+RVxA*rrGRRAXZ;b^?(}fL?OCI=>omN_HdecLp5%it}A1d zwxw`^y4fsVx#imB;i`73T}Qbq@e_Dj;LfVO3d27AU?>7^sx|K0c#Oi85jPh#=O-~& zNtVR7jUxb_D%){IjSnGK=9+^gYdvcFO*bJc}2pbl< z0>>TV2Sppfm{I@PP4;;(_jBEf9D^qb$+(9tU|hV4x9E~lx_N3-$ia|zmsK&~%C>L# z2~;rCr%&G!8TtC?j1_Cv#654!%?pAzp8KDD#o-s4Fwz(JQy$tUi`X)+|Vwi>dZV|v+KJSN#VRfte7iDf}5r}@Rmd$bywd68WwnhIBJ7)8ZPX^^-7E!7w$Ch8S2J&y16-*~2 zmZ+rJGuA!u+V%MLfnm<0U$?g0y6`^EaX!7{TlzNrhM`*@_(B%5qh!ej29d&>FQA(I zjB7ozP_uHmo-14+eHb{~knotI0Da@=wK2%DLs5s>`RYBYALTx~pUF}BOw%*{hq(NO zyE~*x9FLp+BYr!GWtl;q-nE3~Sl98W!{}M330gS;ZT1xAwd)YB9S)@{T`#Nisz$Xe zB*VAz94V__~!TPo-gZM}} zRFOds2fi9@Pe@I>(A^{Q#Np-k6ek(`r?)4BGCnZB zw%-w=vR>K2Lg<&X-;V)lsu@5~B?PP-{c2LFQAoZZ{qV)E=`k9+0wai9e|X>wya;MG zczeQx;oA!7?9=1@mz7m#GL?=q-VV+vW@!-cl%Am`PKt)Ix;G{!_>HJQEl_21_wz%3 z98eCf^R@9_d+CR8DW3M~QIm`?jUb}mZ`-4=ceg_QFR9p{^FjTMTZyNiuoFKl1>3W2 zl~wXAq5?^-a3_Mmr&+%741q$?rr2{{^IhL#*|kQu59@R$W81Aavm&&0%cYJPL$ zclXNV$^D7MN8?4}PstV%VXIp>Lge6*gS0<2x)RmgwLj=i=jbxP<=-|6^8)@Z*3OgJ zV-I(DQJ^a_v~UAucCIY;{t34KwY!9+QJ6UNAzm-m+L@{y1eioDx(U*RJw$5YRDj>d z42qv3fctGeUc^qzsM1k0H4u4V`ui_TA7n_cpJyA`K*KNYsltOEW8ajA(R(KcTX=YR z5uE%>siC`r!0|K6uDC?+I!5+Jw?(uWCJ`*9plP`vp$?TvZS;Zn9vmzY3s=@^RN1hy zNQsyC`Y|_3y%djz{p7EV{=To0ZCKmHgqAzS;R56G=zUF%hq%0YRWLz zO9CNWAlqqbvW1W86`JN@O)bgI)P^1x$Lt{?qbCISlV{SpgW@PxO!>aN8!N4?>z-&juKrLHZKi}1pa1%_P6S5tR^N4^MkSQxc_?D6B{dT z@A&Q()E)^=cq(Y|G_}G7ttrFh#}5!G_O|jh+*XfUf&hoD0k{PFrpI-9c>zL0rQ*3J zDsnFBq`b+N=r~t;-S5wDfXoQsrzaoj&MTw=v<+2M(?Jf+i|)0l%!Crmy`G?9NZ8{FijBvFUj_w+oe53VOCjM{je{xI z{`*9GmPR_HR1kdxvPYJb?J{DZud)%agun(#Esi*Z6bx1onTIGr-^m&WXg9Nd0RaL_ zh{>!sq-k{rHEtXiM$(fS<$I0H{We8%yu0nBxj^m)n>*jY+&Hn(B z(Fb6_U_V2%KpX>dDC`50j0evN{oSr$$dCbWl?beZ!z(B>l(|@J+)fVvpHdb+C=6SK z4E6`I0~JB}hPgx%`G!1ito>D=R@zXIVZJFM4-ehNXZW(AcPcq;@~eQT99%;c(?0 z2@klnc`6_S(j&}VkaU&BCn^KuYpdf>oGS{5(AtkJhr40GtoALW^?i3#S=xc+ zPmC_oc=0TSH@Lza278Z$iywEAt@q<=^?kz;D$4>k+*7sV0kPJ~)$mU`z9aNt{=hyWk*?@MAM6bT|ia<-k3l~qnDjtH%?%mw*v>_8;^-PcwFD*LAP z?1?|wHZ)arqJI;gfAFCERK=|?R9Uz~M>_2%Oo^C@06sikOn%{Hz*|>Hv*sE+dZ%PW zzsYV`rL?pt5L&FBe34iXpg6UPCn(}!)iH)4sD*!8Viqx5nx|-ADf9K>ZJ&wrq$gde7}KE29%Q{6I$0d` zOV#x{+~Ld1!z%Sf#6UdD@xZxim~(hGzRU9m3n;x`TGYSk(h60-FR(!Gj6uO|lbFYp zDsW*WG^pvYQ|XGYJ$PUWXGi$#qnUlw+>>)RL`<-6WE^6Uakx@fsKXXW-!UzJ^e9?B z1a_+G4{^%Mm7ToO=%s)pK2pYC%GyUpo_~8Q z-Wl`8?~Odq)(fYl(zS#U=?2BbP6UmF$hAHC38L%7aa7<(nDu)7U*UPi?am znViPv{IUp^I=eN^jL?^fL}qd zf%Xem2ks#p1wSP?3ZKZO`2`xpAy35k;GZLnL79au6*yD_!X{wzGxIC zCIm19kk<*E4+Tsl{)ook(`VHn9f_%QTVXz5XI^HVT;iw+PY@cMVd;fnn>=> zI4uUM3;bf82#fmPwrlh})G0a1@1VEzL*X=iYSOb~n6lUsSYJO9p%r=g1gZun^Y*?Z zzG>gH8}t>@93a;riH~V6cy)Uj*TD!3^S9C?eW1C|uq3K#)GyJ8`FKw;?Lda6(T2XS zuV==<6`XCPRl$B}z zgX474|Hz$^F>iCR1h_oV?WdvUD0W=W_l!0m0J^Ky?HJekRC@cbbDu+j zd0ct&hxBp7<7^DrE|8h7Ur#wM_!=6OdJgGvk8AzEo+Fobc;S;BN?LJ8h;v*jod`JR za6>Ki&|e%tY~u)@#g^0D+{i}urpkgydF+gV2vf5(MvYIyO(o6#o{&>FB*{=uAT(7t z%G4Aq%|+eI_+zG!jZ2jpMA##k1S@mq?&;Yi$-i#8BF*W)3&2@kH+um486~~m)D?OP zb>@?CUEplqxr4m1lZvMtg4Hagu&Sp!*-UC5JXszXdhv(Vit2V5<#m4P?jGb@z8Ul? zW4SehZXzjYA&C}*-i(c_Mv4J9@wq(+(Q32$#m>dHGPE5uyT#zL`VF zp@j(q8P`EaBU3Q36$N#XSRbOwhU|6vFeDeiAqbgRIT&QSD6RrcdVf#x4Hq4i24c3; zPBcA)RtXvwu2^u)HC5|093}?$-(f-lLG1`Us&@ii?2b%P#J2RQn zhTD^6tr#A-;5~$mF>eOh6vr8ir2Zw3n&ExPWknD>A0Ms1sR|S_7kvow zsheoiWwb#cF5NfTrn|J~ZvAi88NnSJZb-Vc>E1NTivx`7G@q~oXn^)2ccz?ih-d3T zz0++Hp*~yCf^tNOd7qmW&RE^H5+z{h>sQqsdkc6&D5iJMGlc|0Hw8vUKLDITVZz=| z)9)xjDM&{w9;EoNxF$X{GP_WL&&E1Cs`SR{D{V>z_wIDk=YteBJGBYwxk5I!Y8&c!Gw&=zp{@3Apy-q?le`lX|&Xqt}a%Uq^QGFDjr=83G& zm3>QYcYt(G(BOzv^WTDlL`|;7D>RrDpdn{nGNYzh-5XlJhVU22TUEl|l7b4#^^Ek7fBp zWG1Kp)f>q<4N?n^g6)pn&FIyoHt|uWA}8vz&lN}(A$tU1p7U>n4H@%kMQrv;u4Xqi z?r?!B<;>-Twu}XFEauK;^{VetjMw7zJT} zJ?lK;btr%s1D=?057_rAckQuwQd9~R1sfkeZc<2I{j6a`pay;+(nkqGccyt3S4aQQ zpF^bge?xQ7>aDqk=BS}XSLZ$!#z_t8&MPv=Iw(nue*~Qy6b`ATG8gm)Dei9%{)PgG z2awSR<-ni>7$zi{OQo*AF9^9Jz5bUPvNL4qvD#lSJrIYrrHuoj&aiAm8f3JMvC+L} z40*|dKB@V-AeT1HP@mmcY)5YTt``yZE`GvEIwTp)OTgDQF@c1Eeg>u!@UjqTbMSH~ z3g9g8QlwbGS=6A_{5~#@`uC;y&WFdQyFQIL`^hBDD(y#6$TAX$62!vc$RP?CV|hDZ zH#B?z*}Cy7?(WC1on%umHsARDEzw%FMpDd^>XB~C3mCLm)>57A|$YL5bB0U zNJF}uyP%JB%a*wu+8KkE1})_=b>Q{mrP3dhoaE%xyx4;px1O1{)J(paMoUhum)rmZ zAj|=@7dUZ~kD9VUgazjIRHpw8eBz=^I83x}lWe7E-=9lX+T18Zz@4q?g z?fpNe@P}s4XQ2Yfl-O2blkyRR&bXLD1Z_}iab#_aDwMyj;k6G9QunLMwnS%Mw0hFz zT8=j~pe!Pv0jm*nb;G_>ni`hW16}q)XhxJX=fO`n(PD#UDCYoMg^s~_H+Oh?tzAO1 z{Tp}1ju;&solQwH&C{swOOhg(QK9_~&0`{0R+w7NW`i+ihGI<3MjnW3>MZ@w9b?p2 z5Ul|pq6LGk$b3v5oirn8-#dqWna}u06dq#%rH#eVatG8c&c{vytv@o>C+Zy^Z5IC7~@M2dLRr#18(u44v>V=TFFf27Sd0Lvv_8}Rj3+>Y(CWGj?pY$ z-V+!@8!Dkx-6syswozxyrMUa$-)BdN+G5h^C(8wW+3O1%W~&My&jWK&E`N0HhCTyx zZQclDSGyx&1psg(`<7^rhw`IRNP=4XktiIt>V0mA;qYsErefRwlJ8IaW;IAf{~ay| zQwa*n015;Az+yr$?oy!*=ujoED2Y04O_B_VA}$)_9SRW$^Y1kGfocU84q{Z9iw=L(6)F=WZk=@sdE{?%PTi1zk3bnjZ$#Zg8HD2y!he^IPhPB2x) z-#jt!4Ji(P<#XeQ&A?EuU89#*P&kv+uf-olHMlP`#h<*xe=)Vs(VsmScY$9P?TYK}tFANj-$p$)_w=ic^GH`JEi`EL@ zc>wT$m|JvD#lcHJgV?CRUNL9fP##$N$Hs(*42Ji1g3r<_e4EN4FyhYKZB(+yzhD5 zQ0ABXkWnt4q4m<-uKr`jA(or)FF-b+<(*rd!ax$O+tlw7sQYYNgx-%>90vP-rnrGg zQO!}r0n%Fr$}LOyWrB~qWL~B>peqaBH&IVlSh31=Itpg?F_FOw^-TvZhpE{F9F%>9 z&@9wxJev_WjYv0Vo$2kC z+4=)&WUi-1=d8$Pcw-G`G|K1s%8ueH?z4YPo4n;7>SCE`(T!}=JbL2r0>&rg{06Ev zd>^Mh^u!jpE zxs=g?I*PA=U|DIol~`Qo*>^NbaG{#*3R#qK+bgU7x!_Yb`ZjG1Ufbpq)=kdQGMT4cMxbDuAu=B?z$i*gJ#$$iXaiyFJ^k;p^d8 z7;0l_^@RW1re6BoSL4O0^mi;a{OG^!K;zr*5iWz!dr;F2yem#W&Ib83-5p8Q^~P(ax6)u0HIf*WMy%ZK64+l`gj8VA4mRSxnzReACZK+WTWMV0poEork(G zqnz9JV3>q?oscmx4cU7lDeFVZ_vGK~={GmHXAH$S?>JA#yMtC?($883l=UP9d-n+2~7x0 zkj05?Zg|NT#F4AjF$I+0W4|Y?8vEtwZ9bUshznT~HA4NP$5Jd(dxA~}sKrsy$H`dO%9kH6wwIH=~F|hB4 zfZ?8rWBBeAI+*we_xSA9Uv6u0ER~kbLTl>s(SqPO#}O`;tAFpG$yUsA{IYE0_0?3@avi`AjO(`Aq3wCDJ*)T(6bd8=<`3csi>zZBM#hU~ zNyhDu7?;_J(T=M--7!J1e0!)_hBxe)C}CRHAI9#6(snW!9TM z5E=?fJh0S>wvJo(Pg%0y6=XRi_?5AN^{1#WCpb|^?wl3$(x+FdpEj-ls*1f_~?Z2$e?)k<^^04&)Qt82yAXfF@xQt{s+Eu^Rdg&+6& zX=J8qdO7#?KZ*qd6w5w-@wxBS;*P<4#m5K7ic?owj}NKA=>vYlkgGW7^G=HY%=ZZ0 z?9+FZk}$MA;SVBOw=(Kh$l5@qVjW9u1=DK&y|XM0D#iUrSL|(;VOfUGB-9#rS>CDb zv1+Tjv+{dKtn)52>$mktP>~Up14yA{SD~ZAS{t#sb@^BF2Ajlhe2H3hZiBor?m-OE zBiSupSN6Tyb@ZsPRnj}Wn8P}D)h=XZz%G6M5=UrXDw4BC`#>xZ)cbfbG*cAF$;I#D zz|Lxi2z!5m%e&Q%_1Y>H)?2THIB#;*W>7qGRQ*(z&tAs2j?#8IdqikcOWkEd531z3 zAk4JdQFWtfUz++w6;@Yv`Dxsjmm@oCRwxSl%{8BRRjj!hI@I=yXsr1{;{L-D#pAgX z7N<2IHrAx8!KWOPNX|v3G11|DTuNh!7tQe6y_Px7?!8 zUTinf-&}vqV&gz)q4NHcj;XRzS>i*x1pA@p;9b`?&4n2pj`5c`QDiQhM8wPm_!(fd z&HOH5#`@%JC!)GV>CUQxLZSft{NXrxvz-%#vPzL=2OW3#Z6ylHZ0SFc7`FX&bgZQI z{6_cap@8m<6HAh-wX*{qQREUa>#IBwGz_jz_C|P9GQN#@_0xZUwjFaly1;{NE6jn# zz@$l)Fy7@x^sKI6BYSGjr^qDcZ(JkHhYn2*7ven>iz(HcPWG?0PGvr1^jSau|5b6O zVNITC6b=d)kg;W?o z7Olh*6vHBG6up8&F-SzPARx<720JJsRG5=6b9MTQKfKA8FL}TBInQ&>O`K_ed~lGB z3FqRp8EFGGzb!jq-DQmD{mEJ_bo9<3j$lNHF~Lx=YTG{6g|uT)+@yTNird8tTJpco zX~@N%phfi$Jak+tvTa>p$o0G%2=gmUlYOla^#Ohdqa2LVG0z~gk)?w2?68`*vG_GT z)M#kx<9op*wA+bV9L*x*beSOSVftGJkJ=*sbwH^nk9fC6WGhQ(Txg8tz3Y?Ii2@_e zUA2ITZ)rzWRLyn0DO2g?O$%YJL@1*JO4uP$D&TPl$N~(0SGS0qq_dA=sUHYaRBq}5 zL*z92L!?WAMxVyK&WxG7yHFYrgW;C!7kxd>E0&btsm^UDp33jn7BqS5!PJfk5Inu8 z;|X{{$b_9l3)%sy$hD!(B>vIANo|f=^Nx)lg4d;g^le+a5c^4~4(+ZI9|Cbp>7^dK*7OxafuIl|ZxXD|G z#r9JZJXFjIC}ori@Tv%(xa?23kdZp^Y;@#iV=js$-R3`0KWL(mQ53JZv2U_utj31| zpFA}y#k?>qOHpb2b2qh0BPKxPiiAS$Qwbm#;7CHWndqUq12D!zst?*Lu#1CthYuOU!9 z9K%cE-lGq!JRPBb-!vrK`Sxkoypi%hK5RXnzfX4Vf55o(_u)S+Z`tj;!TyU~5huL4 zDKX2NF=2olLsU6><+a}^ac{1@w;(e(s_rJjUfdnIem9?&jWH+JYHzybu`I|%|8d*k zBFA*G>_l_AH3sSjCy<7viddO?bdN@0i|L*5UO#eSq(LpR+$J__b%|nkql3yd1z;3z zS&c_%sL@KzCMKcSgcY&}Trs7OCUy82Wol<8jKvjh+l6Mf`NB+d=EZY^HA+g5cm;=} z3O&cBz><4MiLzAgWE4}5dvSE@l8De0hKbGfr$ z{#21H736O^S(J3C*iYa1eBmYc(&{@rujWh5pXN;RuXl`}U^v{hiaQ{39e>XR3lEYO z`v$00bOT}|^^I|z71o*Nl&Yug!S%IstqBPLOj2@WlBluBx1Zf+CM_x&oHKyAG`x8C zLz0xFTC>+}!%Q^v*q>W2A@_>r9gue(ZS~@T^e;KcF_(tWRIM|(t~WV;yZ|qCg$f|~ z|7ga#gD-oAHn)CHPO1?X@zz2P!|HSTHs)bFc2LY{Y51D;5l06B42}%4R{Ip@keF~* z(CfB1m8pBr!1rMQnraS73IDN2o4-JMM6w6(f+Ad38$~!8wHPWx!$gSgg-i!rF}{DM zjJMX03{jwrCV?`9dKEq_GfTcMzGGwVz0XU=nai=ke2R({paN77TRdwGj|JE^qrHGG z)~UX)44d!l!X)0?!j=^?h)8w4VSs08_p9!L{pBlz4TK*}dZvQfMk*4L%Pe(j#6pi^ z*pKQyP4}QMTj%iCB=E4TtE3fSu9kc|$nUu8Ugk~w3b$Jaxt$Y-k27^w3;LH_^|U(X zitEG{LTOmO_iOm3CQhK81?i1TwL`u%XrAq6q}_cguNEZK?({u5y5)RB29Y*o^(0&i zAwQKbBDNaAN3_i_Z3NeXpp&RsKx#nK;F(oKN>1Fh;VuJ-8a->Pdc&SF&@nQa5`lPai{bb$lqx zZ3FB8z|n|v$gES=_+a%HZ~1@8k&M|roQV3-?mNT3T=k&{l{0ro43lse!I#0jPDwS# zgX7|$8$st6Gy?_k!8JZKVZm(S`me}rFYTqXuW0|+`W?+7)6`2H!NMdXwGb05bj*W9 z8|APSZ0N@Ig==Ya#d-A41&P>|9sSeuyK-F4b{&y*O8Qr(4FG_M?y+l8QXg< zQ8+3xuaK0fZFoaA#sm>Xi3L0t#b$fGPjS~y*M9OpGtc2BVG$yO;&D8}aM;1`03y|= zOT?IMPtpO}4ZB7WMG4(Yc`o`r7c@J^hwMIkJ{A9RGJjl&?S&Q!ItR#@t<6AE1&^LL zBvzd^?#V&tyFv6y>czyo@htxR>ie~xr+2kJvzrwze|?n3`KL-ny_uc>EwH_#14*EP zlX*Wc{Vx&t*bPga?!eT;loouzBA?{M!9)8E()x~kcz4{hNKJ!4`vGt!=zB>*pVDB6J;C51$Z+12QB~nGYUhgc_+v zp%W*tTuPAGZINjqqSh68eq;{iZ)FIjz><2F&@Q1nWS%6Ka}!nMlt(_L3J5^_4EiR4 zelFp85OrdlurFjI2Ui{QI;=3^9OPG26`I*N!Z;`U$-v`GNP&7|-&mvX`WV&@! z?w(DXh9tqzD-&nrj&s}vT~$bWemHvmJS?wdHhe#_jk65|-nZKOW|#T*0m8j8jvW*i z78)1M{5m!qe+V{oYnyHKo!e{}f%KhBJ8LF=`&POQlTJTJ5(WKkK~!`YFXH5H3$_PZ b+cRw$_}9e+&b*U`SU_-R`?!c%htB>7-Eha} literal 11283 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�Ha9uX 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�(<0Dy;=) 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 diff --git a/doc/_static/transfo_scale.png b/doc/_static/transfo_scale.png index 0c0182d69c384cb3148e0fae2020801afb3f7da1..673664fe123a1a13dda3ed85e122705f064d035b 100644 GIT binary patch literal 26958 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 literal 14410 zcmaJ|c{r4B_kTvp7>vOXnwYVKkfqcpSq5b*Tge)esB9S`vQ5kwvQ4r^NF-TO_9bLw z2~mlPvZu&i+4gb@$~ap~*nm_g7k zDg?3g!1sVBQsW;@AP5WT>u8QD-DzDcGCm8I-*b`VJ+f^nLR6%{zv}LZa@n?R+<%puBJ${ zl3#y1j?moF!9kEF<6nQ}nzWrE>9GG!_-ERGCV#HZM3KEB2oOXLkNmgaltfx5WFlY+ zhoBzCfBh|8pbJ57#1SwE5^Yzj*PY zm>30jnXyTM%5tOnxBu+2s2G^}7Uro)8S$+>L(qKblX`@+s1O`qMb!)#K5*xh?kL6O5M#3P=`_h!ebQ}IU9SjRpa>NuaTO|c=ZN?S8 z?lXnHh$D!^xIH5&cvi^4L*&RVjv6$@yLoiP6BVu~D@%pST1Wnr&{Z$MyFYtWlJJ;s z7r>GZ2f;QlSJsinByfF2a0ue5N)grPtR#5c3m-K3Xe1$}{eD4Ma)dSnJ)X}JN_o|b zwLOe|jT?MpfP>r@vxNLi4#`p`-6{u`+1^7?u)Awdnpk`_N~rC&7Lzu zAqTI+!P{9G$_X`Iit6heJmq#G0s7*Ui#nj^KijGR&}n(sOT{x35`H*vWj zo0Ld;X>R*>XSrvnBQBKjQXFHS19hdbbv5qxW+O)4zV?y6W+lU#}SX=Op_TrUkX-Majx&ecA#EZFuG@zg-r#!6W55!L! zZwJfhSjyyR6|q?(EC62@B@x%c55qt3(I9A*hkE4Il*7dqk~F721BgnnDvv&ui)`v` z2%aqzjt>WB3Gm|SfwsjfhBA<*bvE6Fz3ByDIr)eV?mRDLf|n-O&78+aJ$D+_rvyPTcW|b znCGum!LgpaDG6Lsg?8f(gQ?=J;!u7YB+{qU3WSbcZsMgO7UI5cL8m95jDdTEZ}t zp8MbqqkenM{Zn!2g*;?MEK8$mHvJcz(Dz#v3B%?OMMVsqT$l^8kJ|nDp^k!jzDN`CC`-OG{LDIg4}Zdwlv^ zJ2dxbx@P&|9zd6n&?QgNp|JUF3RXhKR8JsWQErncIx8i2Z|E2#aIAUwS?jVOCUkx% zuU0N%{c`2j6>V>Z|aC%7OS#`8=G{Go&h^MpKKRCy%@4vV)|&V3Qk zYP$&>E^~V8Yck@w?7-Eu)!Nc}$vC*N} ztyRC#){QsR?GP=!Tpe5&A8jIasg0dzCC;4+Q&&x2T~2$q-s-0YXPXtzQOrhti(n{6 z;GqMmdnuXjVxtY2tJf>{JY0v%^j7xn)wD72(`xwYp`ljvJDyiP4N%l)Zn3;D3!xarYj6P?hB6pO>OPuSNoWV zZU51s%pLy7BuP{DMKEq8aT1=hH|l0G=6kiB_JAc7P1{^t{D2Jl&olZtp+r1Cb0c|QjtvwSQoHc~ZoKC_#I zqf5zB=_ZCY2D@=k!M^&C6W{ED=aw&lLtL^z5JNYEMU9P(NowkAGc9oy1MVMXX`yr{ z5dPtbD+MD<_T0;X+vVTpJ`;56wv_zcxG}b-hA7T~Q*7FTho0A5`0$44(Xd@@$L)=x zHcC})lzUDuJ9KPkUaB%czj$JOksN|-((3n#+GG2ZlrlCK65HSWNC&6r)osr{$@08& zdzIQgXb!)?$@9+VYkQXEVtu38oT^dKI4cxWvmBt~w9zdqcM9FK+uS0t?+#;-(PMyt z^gkVeZt_t*TV9e%Z(zRHxugW3z6S>lG72=Y8|R_JKVqyd`PSMkx~8munOjXk(imd> zet3+)dbR83=AjYcuHK)AtM)h=y%5?`_~RpJz5@K>UBl(3lP|n1*Ehp0h9OHkQ42QW z0ig79LPu3JqEDe%N{(y6OL?iNY3dnwk~CbuqkwQVUSm!1gsI+=8Rg7RlI7@KJ{Ey2 zmQa+yy^WSr=0gdKnsGMIynn`BX{WVxZZ0J)2H14?q#2Ik4!0ap5s`N6ytE{rWvW_) zajzWU=FUl7pH#;nOE(5pgWf_{^+YY;M6HUr_c^v>2PUNwzptt8%DS{UV50?(;-wzR zr38$4)eV*W#>#E3slI*zJJ&7hZ5bn-Ba}!e8a zV_Wr%T+vhBc+8r)S;%01$o83H^Va^yO5dCPvZ9p=;(%+u&|%OoEK7UF1&1Pk6R9X( z6!lzD5*A}f(mM&sokbCpLEK=ivS;K|e5++|&fjNYNBt+@9~WAM<6oGy6?*x@GCF(; ziTRFlkOPTf#}SH(=cS%=niZEai0r7YNbt40(AmnVIZ}uu9M!>nL>-;m&_mogZ(dgPT1fzsz`=2@76_SmY+y7X!ICO2l?BhHXLkmT>vX7JmkA0EE}mMN z+Q+8yq8HL#I4y98xGr64IktOc-qr7+#xtVfHJwiuh(W3N7G<&-VqSbJxRe*Tp|haJPv;jE(mf!hfov~m4Vax1XN#lk{Q_mPI!_beffNB zdRvDusooj0=Byo4CrrJJQH6D(sDtiP9G(iF2An5QS=f5fU1xZxh1vf^OjsmLSqlCT zL@BQ$<v0U>M zR#6O*O2x_nBz4SQT2#cuhD6#8aB^91&+hvP`-;UJ59hPTIW*wiu$eIv@*~aCz{S|n8KV7AgbHb6&k%Gw6*R^H7GzA-~h%?3`c9)*n4C$BB;3Iwr?ESm zX|jOp8o~JK#s0jySUfq7rs~hn$ukniLXXai^D-?~Xx#5;nq=D$3%vkSDIgS2yA@5v zTV-~uGFhtE`PcN$6~k*8BC1|2S?satkTMRDACBKR`0?O_k6IpAA}Oa<-?J$La}$d< za&5<=(=_>6adaWmHmlqQXd6T8?(WtNQInM3blu}X3PrWi*}6<#j_BtCb;+=(!2-&;+!XnR|iqq`C;nFY`;iI^=xC2PGXLO+nGj;RLcQE6zj^q;aG3%KvPI7}q-N z+2jdU=6+-)_RVb1Ll7lgczdobS;a)!v~6$sODJS~?AnBWZh!Az6`0})EjZc;ZB|r2 z_Xs5MbH*wcRos-2yLS{$Iz0d+o<(1;|M(9z=Ll%Cm(^qP%lLFhCxyI^uhNUD)s_|y zS?Z&2--#eRtr(gco0yP{Z5{iiadVdBr@*s^dHjRoh}EpeSiw+5u}h_&b()o77tAqz zzt_1-fcl-&Lz_KVc?D*=*HO%-%K*myeYCvB1uyAxLK4?$BL$ne{Y$D-XVx9HxALR<= zHOWhx;Xue$*&zY0RMZm?F#CDG{`KC*AbG8N&UEn@1X;YJ39{bDA!NSrlFS1zh#eO9 z2%73WPl`=@KRTb(O~XpaKP!_VE0|{i#U3pTQW&%*RsDWSyryOO4@wcv1%Z^`if-HVfdy zZ$Ad=O}F`!;Mwp{TnZ}wG4u`4@Vg`Nz~*?}d4);Wea`LLQ`c9kH9}$yR?-u<0z4ka z7Ckyp`rNKp(D55s@^evB47g>EAW}$LRNbZbn7beh5(if>QSg{+%ZPKS|MqnN!~pZR z8Eii|$?0%D6gA9Ys^{xcwbvsC|7(4#BSd!9drt`-XjHtkgsfyS^5To{sua4yv*vcP zf;PFdKDQnc>=mFmGL!@uZ$<_Is3WlIZ~kO;8q(7N(z~2nLaMHVx+jh&m5l@Mbym># zGY5ejRfvwa<*^GJ;$1(NeQIo9MA30 z4!ov%%JOU@pTtR)1Cu2caWwd|w^k1nRLSi+xPpR_wn#}!RaQSbmbEHM+RgILc_CS? ze$^J1VI(*bzUHVltSak$aH$1wh}6W7uY3Zx)K0X7ZutFq+Zm`2lWX~F>MRcbAp1v@utQk0>sU@PJj0qP=`w9u@MMbR?DH0srHHB?-(ZO-^P*(Y9nj~QOpX%Ul@=>l0 zuKRbZAcOXQY?HkuGTg!D;FDdV#=Crw6^d#r2_Jawi&^^;8os&( z(>$s})SmT+&FTiE0rV*fSaB;JYPuwxht~Lu6{qQ|gR{qbg?0l#qmzJQxvY;~y#4W2 z;KY2u;YlR{)j+k*F4^Ei^Aj+-ylLABh4nqRo@sCo<2y67|qHvq>T#G>2pznlF$iUPe}OIl;GJTspR-IRJ;d1U*lX! z8|>#mE^sbCYOXT!gCHrTAzoD3e6jp6)!=IQkPF$RI8c>;ipH`&$p}D1M$FmhxywxOgrW|PauUeS03^HDOuUu5+u~Y(2SyHezT>*QrgC2vx*<47BGA<{ywt(V7+Mn@4&uc9;I$kG!g!4jN)k{6A8?Kj zYFEQ+KbzI0r$3UNbagy)Fk3iS7Iyy%2*A7>hykoP*PrXphMxU8KA|iN)D^^Bi;ARA zd$i#E&yT|!Bcv}M9WA*SN(jLrChxYa$xQIQzi;%n*{t;7eALVYXM&MD!edo`1m&J&dym%ra-s~(@9#1GKkG4sHd6e=)sPe%l!=G^v5CT3Rw4vmPe~Xm}0);m`gvb>Q*zK$&%A|XsV#UM=w1BKmE=#CcAyOQ2*UkyjC%$}$asUOg0RU>VOl7PtOKI3 zgZ_s3SP6bDzb_0x6--ZVH72HITv0~kly^6S2o7C%Vn|fEbbObEfqz?P(bC4opoWIV za$ex-g2+Lj69*Om9&k*u5MzzIEdOkV_npt!vb@t*7fYE9pzy(4Y=5p_53+{o{bC}| zgUotB0FtKJc^gadnps|t+s=;b7X+crxsos4{z?WVCYuU%JH z7r4Dw8^xk|ipiwMl+^W%Jeygr!5QCK+!1|ew<-;feEWimb@o>8srshg{>wlpfg-Y0 z&qw8P&r6Q$9a10KJNffbrBFui+V9`LZylX-2Eh;6O;W+!(I8DVeXv%?x>N%NI^Rbd}2VP2xpre5(vluhxp4(rM z@I~3+jP-!U+Qil?^+64|CP@b;cQr8jwe!;E!~OpaYZT!5W*kguKG9#CFmSX^dF4^* z9Z}vM_?`v1$((z0AH4_<^ptjqf`V>KU^Zf1m3;N6Z zzLg%AM!=*&Dp(RFDQQpS5l!nYDoBWw&r#GW6RRAyzsqY=;O+`Ux*^al#lyx5(2VcikOwjiTfl~HZ)~V_ln1T) zuLWwv0aK8At6`@$jY+cZN6|;Kq z{3prcQbnd0FPJ(PQ!$KyOUZ2LKR>4y_s>|H_+9p$qLnj0`Q>R zB!3gP`hHcVU@R9X2>~K(%m3cx;}-g=fsg%E3vMwJiO;&6jUq?gvDzP9wWgUG#r+6I zJ_RbkZ=cFA3!+e<6apsf&Z#wZep0lpzNJCOK(c2mXOrxR=|U93x(FhIv-mKcB9_i^Kr|sV+OQG_r&GZx6kA z`fTyAlh3cFu!1l{^)o&j-X|C+vNb3>pB1U4>pULN6;Fye1L^6bS>_L2V|p#Urjt~N ztJF^sk5q{IG9QZxpDDaiH_BaR zX6T!972&E6ikt-Y@KAQed^v=GJ~K~~;@UA*j;~vr24$_bJK$y?x>>~Bunlx(4C6A# z<_oD|^LL-5EpAVPa(i#fT{P5r3Ewg*0bD&@9@vb|Sw_-(qpIl1u`I)SEvQA z_^egp)lRvIKbuLiV1o^x0F*G+w*K_I8e3S|3hwurQ^Kzc(K3x9L3ITZ1sWo7Y+8uM z?RNxz60|D_g9jG(l#$?uG+qPsWs~Z1i%MWwbm}~CFP;6&evW|4mGGJq6f4rNber+f_yX8NFkv5f)$b#_7jZfYUTlpcPN<(+~ zK=~%i0*JVFkk`(97MH#htPS!2PbRUK%^$gTF;jlU7-`lgpTulL)+0n~*Rx&UoTMx> zBPB9ZC657a-vsGlLIC`F46v2Z@^p++ORp+0Eftxrl>_p=G3Lcfp7`HkUp7DCrHLZt-2iS!}7n3<*PdXXg zsXxVi*KaKUw7bJFm!;;t)lXltW|fA@Ux0=7GNy*(?#{lF_s+0c0eFVy3^O~17UKuZ z)hY*OXnBdJ>WUGw%j-XCW`iK|I?#Y`6Cicg7K|N3L4N7rcs(a=M7)trukz1pL&Hjd zA!4DPZh;LCHCf56em$I;V+I^e5p(@&w##PRkC=Tj*5JwtTUXEI2G2BB2mU88-t>wEIkOIE)l|^ z^CAFMCwG9$xyzah^cBFNyhsB1PWqQcX}AV2jah$Y1t77SF<3;_6mIg+IxgK(%&V1D z_1R5KY}8M!#kmyJl0f~}D&!>81_UN;3zDrl(YVt%?>qoNj(D>}MJpf)gRsX!wkAU| z)_5TY70@Sg&|6K!+@A29saiU~ZAsMgLYAN(=1H5UaXKx}2=K2N3!Rw~YvMvfyHEIt z4tg4oJyD|)@4Dpv)X0-!62bzV#-$Fx@k22ns0Cw{CyOY5sC zHuRM2IRx~%%PUTsS>O%21vKz`2GiAUZPb4CxGU-!-F{^cjWM#h2_iQmR}gKHYq?r2 zIp^{&)k-J0Hw?9QbQtd7#w;L@gVZGcB$;W!o%a0)Ow*~i>3zt&L{>Qfl7&wQ5ACWO znls+A5}=hJ!N!GscbJcB{&ZiTdI0Z|hjSooer3hJz=(r*E!lJi}P-Kl1pO>hhJ9 zZyE#3vjoMK!2Q4)6;5T${jLo`y{TxF%mTZO2(rFhyc%^~5Ga$myThEh3_L`n@e?o?bo&tMG!y>0f*dq6QjySLGI? zOq&baNrUVTAA3>;CT$>1XHbWv@DrrX4lP66%L?4Gv_^lsx;`8vam-C9sNV<2^$=qo z=2=88%S9jZHpW4#Q|mv5EI41|#^sawo6JE6PBJifFGxQhDl>$$@sy2m48?I2b+$AJ zP0o(cZtHldm7=Y8N81lH<&d*ELC+Dcs2tpZ&_r!NNf7JB<0&`1EGN=F;E`0EJP;E4 z45q2Z1-N;T6^#U4r3N5iPYgtxP)W)cP)VqyQF@Xk=*&4dHs^asJH?nCcT8$|-+N%Z zHGSMUwyWc9&!Tpz8agTy>hlw%{ef7cfu6NJs|SAni8iyeuI7-KZ6^L{Ukj_ z!G=rWifCHdFF&=%^_01l*AQwFVj;(&TC z;t!GPYvG?}Y7T*`d&6$B-ssM#)?vsql=iOY&W?Lk^%^-k)@|1%`>^*6nx%2~DBVIe zZtggbo;jB83m3J?g5wp_t+3lnG&lqJVfc5?S z43tXaLpHpF)%(_Lg-d$_IUolgyTBofFH-damIP+yeKUDkyk68%sSxwnnM&{btd4-# zKU)|Sc&WCGzQdvudNt83ntPgYMFv8&P~=6Rm2DA@a!=a-fu}$q0}4)uwmy}QnV_0( zj^$n61qnTOX*27CXM-44K|x_|J5WtTeDv=pn}f(nbuWUgS=6|3tr9bCU;PQv->$mS z-yf7|ncIW+PUoow-FPdN_;!;NF!dzg$xU=OxwCqRZZ`M=am**}$9&Fvo8VvNuBF** zz#Tx+6uiV0;FJw8>bDvmVky(i)DCdKdF?mRCO=i((9K`%kN4S4pT};p4;CGh2S=~1 zgH;Q`c^<0eCty0u5yvia)j1jdoOh&!%mR=(4wSzv;3Inge-X!m6RPl+<LOqw8I zi(}(!+(tt3<^LnwB z2?(8(77!Tr;FtF;TFJ-)JY0pl|7GuHxMZ-$urQ!Ohk_sf3yRtFHR2HyaKWKKEOOx7 zG$I90nFfmM8ILb)Egw#kg?l3nN$^Sk9!|*fuA|&kl6RZ@Da5l(eR6qAmz9f8Z z6(6pc&Pyu~tRFrMG6izlXEST=+m41ZoM0)%RJ>dob_3jm<6xV?Gnnt!F=Rs#Ra5P& zceJg6l_Jw385k&c8ysYsGl1e5)BO> zu#(B)2LeiYAeG3H!1!wlIq*~@d>`2XL&w&Swn_HZsHlwk3|!T*yq4<%Mp`C-I#~n= zGX-gkS4nN`zO@eobJ#(S2^9zqUB7DcbM0tammOQhq+2`xn~}-c|5%V^b(4L7?m`1h z@tAEV6D7fqm));qG|4ch>VLAh--qXPm)SgvdM^gXNvOnX6Y-fgqt3C6FRpi<+*cP! z0qGiKC75|#8riRM8dK~(OXj1LF}s03m*gHP;vJhe-RT;2L*3D3#!uv55sWhHNbOf_ z&j9=A@}Rs{eJSrdh&kth9e`d)AwLMWj^H^BxeCml?Mng?0{Ie{!Mv$E@wlwWH7Xc) zXG}2a251$Km$|Pak`6kT$(K}H#2(D}?gP6;B{FQ_1iUdILbo*c_oMRBD=R+X_Oku> zI^S_tCJ_eAB|!(yN3E(Z&=>_lig}0XuglIn+pv5*y$&R?y}0F2`!(1P+coIH_40I> ziOG9j;59W9feA@m)Xxn?J_d@Z`LTIq1DIlfc)nini|%sv{@a@S$?PDU$kc`-52=oF zz(#=Po&Va128_%0XKRp|j|9JDng=7p4-IFgrc(lZYrl?aY|HSx6GhUtJn@6SmyA}Q zR|W@q2mdk*5s7Jc2R9n(dY*fuhR6>LeMm)1!R>wvmPuRH8{@2MXPGZ~X_cujn~thxe$qj$o9MN7Y}-7$5xVcGT6D_lQ2) zdE(ji6{R781_U%*mp(RsQATu7c`}t6w+QV6m!{O~(8|`@n-Dgr&q5pX{l@%yHU3x4 z*}_*%I>e(}ieg)zsoRI(Fzo5v7Gm+k#1C(9WrS;&M~uZr=N^E5H)cPq+4Shx2ZMeu zV zcr3W=tH)5L1p*|Sim46!OVKNbQ2~9aGuXlR$gdD@gGUG0Ln= z@HmPiM9N+bATSwHPYoE*zOjra$czSRdqSQ}e zLuVd2txw}K|0HkigG}o3^749pZ`|9pt zDRV8Yqa{y;9?g4yu>rg}$hFKH>tlD}>phj^I%BWO0bPoFrK0ot)t~jRTj3zHH7W8o zZoOf-?yi==c9xG?UgCs??n@!N`6!+l(ngoQYfsZYHjM;9S=UDA#kJtc)p?4MCmwlL z#ceDD89#_vVYUw9fDI`H-SJ99{LMyo0?0;)GA-N!>t8D?L(n`ScZaPZayBrh2QF~! z#toiAC;iH7o(51#BY%-Q$YwyUZCRsX06-T_eHUhi(s(1=(}!E_vh&j4zkZ_))ycs2 zXSLwVj>DH1vQj^O6`}^E$G%$J-r55x)3q_`ygs3**(O|ygciJG5s;lOqXEEybHjJfGYsEJ!HNDAagQayItFsj zL5-&AxDN4PC<=PgV+#x-@np8AdxjzcIx_qX4{TbYF}irv-HMqQ_N2&=0E+W|J}dS7 zZ=N72u)=p>)|grFrGN4?9i1Bw_8QVd6PwCcP9UM-pxlzVB16qX>E=~;4y~0)a6t2) zh1rI7C4W}0QSMHKK_Ko}sc`R|76;!p92iYK3~6?p^$_K!(J9hKZBK!mE?g9URii`P zv+zfC+SaFaEFZh;$k4jBlSE%piS-AizLgd8=?W!T* zh8mC91uCqnx@`3VRnffmJvfF{{<)cDm1@20(O9hlASEtPbM{z{%2yz_a)x~VtPF$Z zzxquurp2o|4Tw&&s~vMo6{ZEiF`a3~*?!MxdK10;A#-W&)Lg(9X~^URNDZAV5VF2g zwU@SMW@bcBH#gi07y{syrePtb>2!7pjB$N_8+37Bxqf{cFSgYcDXPE;BMU?@6Rv&A z&EM?nUv8FGVZxcN}E9whdfvL1jly`6W_T&qKm zmP1x&W{iivZEZ%ZC`?~OLYfvBN3DWD^BkU#m7kd*OEWVlT8I!&i1*757}RzjpCg%F zV!Hi%W=118U_EU?IHDp3@K*|X?KbfIWZ7n%3iERyPjQl73~*(Tkpwaypz{#<#2*}| z4D-7hGMlAJ&J92$!c+f@z z@b!Z@aNLkAA8lL*Jkb;zrDK?b^^7p_@yun6BDBpwZUfPUNNx9-n_qsTBv7cu9NSVT z`~rLg13|k{G&x=76Rl>PHS7#UonumQ(D5T( zhB@Y(0mch}x)7AeN3#Xt50u3-N;hY|IdTdETGPP;(@{E{IikxuT6ci?#^Gbh&KFvK zQpf@3A;}8O#1qUHo=Nz^oezzQd1-%`-!nCKspXfcGdE0WeoD048MBvU$;MnxO$U<% zl12zBMbVsg1{XFHt(Zef;3UgE%pr2%wEoN^HI5bvf8Y7?tAK|Fz9<1trkaWB%)#_% zyb&|>g4!b)H+CL?%c{+SN7g3D_cf(c1ZRJ*@SGek|@ba_72$;*<@w!P5$?JzQ6x- zU0u(W>YVfWeD3#szt(-Cv^11%W0PYeAtBvXQI^+1LPBnbU-p>j@RQEm%K`Wwnw`u; z86>2N1e~iUx8V249y&_0NS_BO*Wov`R?0dLk&t|uk&uGJkdQ9mN5OxQke>4(A#GS7 zA&I6VA(6Oc*K3QzAD~;RDaphC;lFdah9LMKmYcGX2NDv_UBoYBq|9tm#1FmPWbFR` z2SJjvdYOrYWb{!*UPjk@YJ1klb7sxw_vP-c&}FpE7w%3)!pAZ?s|9gM%6-O5Oz~D- z@!O1Ft=8Vo2tVAM`{wN8>h3x%a2%J+ETNJx`>tfOr=*-oDRD(1Nu{^aIx&frYXQZQ z?!?(PxUJvfWaZyJ1Fd!^A8NmaZSa~09-fMQ>We^>)r`}C+*2PS+PI$lC20chhGEn@ zmNwYKSd_?b(N}RKXz8%!IFFD7b9M7EXyt7;fSa-h_!mA@ z(zqXPnIScXQ@xi+ldLnc zwO>ofCJF`N8IDxSF=1jSK5~!eVbQHV_-C6}I~;l^D+>FH&A4oMOuBj)mC*7qQ9Avu zXf<2+v*jGs+!0Aq@2^ax zWqw}D+uQk^5!iImZ#m*VPs^(2{XW={%esD8$kc^Nr}`3cqvI`Id`?ly?4__#dlJG3 zn4nr@KTTLki|k3zYC)yYRU&S{_|il$)qh7&J}QZ9vHpIK&CE;O;9F(7nG|Jdc?1QF zDrF%-MC>)|_fu7EGWC4}Mq*l0D`I?ta#!byonEV;hc2Gkx6o>5c zOZc?OSjVY(NDaY5NP!D{?pkJ%4`l^wRo|4BZvC!6Z894=I}@&|stTtbU9~})!?>c~ z3(9}~Cau(0)`^^t;c;zyKc=%F#gODB2Y1sEVS>~@?|km|RU0`m@_nO)gkez^6#^p5 zM~TwkxJ0X8^v01SbdPM-U}D&hFiK0^FOHrPMxl9lczAkw>FDb#YHDicbN^T!#@s^voW~iCO()2S6}DOMW#qY{ zn5d||lT+vB@xiDX_x^ISW|BH{Nm-fA&A)41eSJP2p4OjlmXFIPo3qSGLa?mw>qb7* zNL5q|>$U!~&=&f0eEeWF%hi2-ltb>k+~VV`_J)y_?XzzO%zjid!(Yu3YT;@Fx};O19XG__;YVacX>; z>%U5q4KG~tBg{lKQ1DT?3pk^G>|@e>MKdDjL{=Q)Z$Js+(*!1y34{eiHP`E`L z6K=tiu1(-y`|n?1qZxOxX6|>(ioGK40IZL{q6=8Vn>@STp`YDaC~locYC`l@%R&{} z$NUn*A>;mBr==f1p6^9SslzLUNC)d~oW#bRa>a4kIXT7d?>}ok%-Q|&V%O|sYch1i zUcPwj-rmK%5QhbZR--%`QtqSRFoJMeh1!XJtSg#UnxxIx=*&#=cuJA>^|9h8#X_|~ zwA<*Y%*j#b=jXAg^ufOzY$iUN3J3{#EPcQ2>*t3R(Q&IO>DEZ_SIUcoR@NjkwoYPZ z{`Tj++jf{a8cL3i>@1pZmszCFvGTR-Cs(u-w3Qhv@muq?A`jPw4re@u@=Mw9rLK6m z(i|NJ@Wg`WQU6hs%D_A@fg?$uKeqm5dfR`Qfo8F8?JWag)be(nP6<(z{7W1XE*?I< z_UqGmO%D(LhYugd{BjU1VzUr3PDwA%KPGr{OhETl+=$$ipJngTUN3#3R=`0ptHQVp z4F&nnzPI8jFL~UDQdI%+0f(oaA~`uZTT?YLlaoes-b--x&t7Z`)SfM@B|u3=BwYt3)P9%6LSB zl|}~9|FtL+5XsKSqAX@IAq#D0XbA}lR$6uA$>tLTwn%+k&^IusUCzHazL-00j+o!= zUU9F0N9DCWl~TM}D?=W_&^k2ii-}Fw>8DKlIIYIKd3;>|WP7^%cynTXdwalJ#j`Ey zF3T4~4j&)Aj*gCO$pG@)AtfIl5jfDo_wL>E@%h}ifkusHro^7X97dq_TKZd?rzn+D z0`T!}|Pdj1eF+{Yq z=t*XcI~v z(>TR67HWejTJaNAd10g@N;ky`FVBdB7_L;o+?*z)^&;6xaB6Fd16o%9&`@D1+l$%f zB&evUaDr~*{P@U*`j2z3)*g#j$5;$Cl{sB|1{v zRco{oUADC-zKrzDOiN44m(9(R&=$V4NbX~?v9sftwCEx`wYH!&hollQ$Y^0E(oq@5 z@g&~6yEhcf67n~?)>D|0QYtW;#LOGHb~-0{!KTJorAP-CAKxy=I+=aZjkI?9VNj5i zQaq*6r-=GRWMdh)KQXN@h87+47%H4!NFNsSrI=Pmb-%UX>DuE zY&T@~=#d-`DI+BwiM77>^sg_5-e-#u`{(|+czAz~eT7`kYq7j>ou%A}&Yu#?T0exs z`9z6Xrq6zSd^{6$bA7ddA!Xt2&R2|hp^lju$`O0dYy4D((o##l3}LS=Qm(X^3G<+w zii(OW$){v{feV}#q~|KcvY(>R+8EkBf2d**%tQX(w)40u7p`a)we2F4DWSpHj0|Elh{F{%ZyczaXs%?f@5(n?dMm|p_ zTg?1BGQO;VY+R{oWJDH$PxF0g-)*ryyiwB6#)hfQ;E%&e12B za*#Rhx0`>Lb^hn>W_CGsPz8b-IilfxEA%O+ik3uc{S?p!j$2G`$kX&jsGq-V=xZ+=lFGl-K(X&i2-&+W+zL3 zW4^D>d>3Eb?WF}z&-vjR87b-SFLnvtOI?o!m{2cIce@>G4tD>|wk#d3kNK~wng3{< z&&Sp+yf;7%7jQ?`NfA&LQ)pZ3{PnER{<)X?&WzC6x~AsJQS5?k0V_5fSEdxzXV(|c zb@f&fZq5?cH#beL2YnZYLT+MHN%_tH8Zd^y|ydFefV7E`PRD4a#8rH+^Lo%d8pZJIShA(*RJmANV zZ1JnTjw@)}bmVcizn%n^5h>g^%o$N%_Y|F)n!RTn~|CSv+`%$0PwSJ{37X{uTmD48D)w4O>ncbSHORk;s zjgh8(T^rB=m9ez%?bZ^{rc4f)o<_O^4+0k^{Vck!u=mMBLSBu z&(8Lq`1<;K?{|@;^*fY({Mcc^GjlP3y+B~RK!I+HxPQO3pa47D-P3j^?Q&O&rLOP8 zJgKg(cH3KMo1VWC$~bM>4cMBjilBkx%Z|Q|LE}$QJa#@PwAHFKT-p_8$U4dpMnIto zhuxpVu&!+=8B$G;|`Z&>oW9!CqzT)@qy;n2re%E=h_?_-B5y$Wf2!u^+njThB;G*l+ z?B$x{qN6sv*k#U8KY%H0G1J0I^f}7n!+r1qCQolaGfDT=_EoZfw9u9GRZZGEK>1u9j$}1J*$o4NzIA z2f7TBo}M11m{)8<;8CGC{A;6AB7v-dTN0f?%RP6H5Thg`qxW;DJkylff*zxR5vH~P zBY~}o-WX{dZ-KU<+QIworNtBjv;4}+r0dJmvEkv?p`d?-h4gRcy@dz<`iSCIgr9Ze^>cEh4P%$SS)G!<0Wx2TDO|!Npbt7_pea)EM zYs1goa<#&Jc(#aI;|!7t%miZm6dRsHp?W;%p=#@QrDxDb-%gu+F&bg=gk| z{xibf&R4M}m~?z}eqlzVn^FlHc5>R|Qv5jRp@0P623|b<(bsprV*bzOG1o*=Hz#1j zrTqmrVIERk*62#QZoYn7es}`k?FA0Ds)lT-(Vhq2_9jY4Thfg4W@#cs3nx%e!nk^p zkD;yVwSD1?5|Vp2VePZKx&XNiAY2%1J58r%8=IS0=%H}1N7n^>o8C@M8Q0g>e}Hjd zZH^~Q!(kM>W47wQe-}ReEt!Db^Ev^B5A5cB?{S;5pxB^y~{|l#= z@Da|g|7FJ&R#e={(TEtZEi5i(Ic!q7Wv}p2WH{!lZ*~}!m=_N(uM7`q|JJiG0?W{z zQTx2xCb93G9TI{p zDke7B5+vo-Ai-kwyT*}(=DbJAtzi~1g$`-$Z_Oom)h}Zk7o{(^KWE>GhmlpLhVmq_ z^uq@W7ngXc%PJ`=FRxTM)Qj$Q0GeuNxQJt(0aKatKYY05C3gGvZGi_5%Fcbn#Kh`g zbeyjWwPg5^_zVXo?VxF(q@@N*C>B->r|DtRxiECIRN6A;^2-LNrVnN_&}N4C$GWGEwsu=QmDt%y zZA(r-RxyKpU*3)H`b}fNr57^`OGZx4z-G-|*+?fi)%rh1=CX7tPU_=c90PaIkc6*hsbM^AsKU`IE?{cANzOK;n-ds~4pbb5Q zo-m3>T)fdqM@4|#G<(vt$@iXuHfFeNw(zr;b#)?ULD$D7E-hN)oH-iMiq2p_^-BF) zlHwXX10>l6H&Zy^LSWHN_|WAbuSP=^xjb3r`Wamqt1&29s$?a)VVW>#l$MmhnB$^OhDtiS4x~@SgsNAf_6hS?8=Uo$DxYZZ=Hg9J-QQ0L%9f^W z4LF_cb}VmtHN8E^Rd{$h%qOpjOh(Q5hAbb5f(k9X&$?&WW6#%mMB(q>GsC>4PKbaZ zw80yGir#)Ju!Sa}J9K(`6;R67bZr8_jOmwI6Prwl$`*oI=j|lTa6*M(T*~PE>PN{( z@hosoXqNrX-YMp_)w=D)FDRHg`{@xTonSCpJBJ|$@#s2c$CU0|PjCR^Hyi zOFww}ZpjXx+zODSfj5WGd^vv;2;Ii4oCHp%MsbIepvQ#ii#wQTXKna_t-pVhb|=tu zuY2-INHqEL=pyqQ6L=PIM%X5@R})}Xm1?uWbdo>8tU90xE=RQ+zrrjn)p_(N6yD9k zf_8~)RMzhFm#xd;;bE98-HeM+cRbZnMK^U}NeS>*RSx2%_2OJxz~bKG@dd2FQ8G_X zyznT6TjMB%(sOfLYH%~7^|`hS?Yle!(X7u!EGpQW2xN)qu)>VK9S%xznd9+2sQG%i z=_v~1kCmHy4N#_0jV_#O>Ebb7sg?^}4k!n_2p>SMT14S#X1-ApekVZx&l_4U8@l?3 z!x=LjCq9qN%=C{GDv?o8EWt1{=FtsqYUNtc97(czXZw}FG8q)N@CmbN8Sx#%v4FlG zKak+9iW?flHr=fN=rSg&aG5ox?*|auW*L;5Dd_3>OU@_teJRn6&d;ZN6%hf{k`xzx zgM7oy^~GHm{Ei^2CaU5vf&zOe30VOL+MK~=Hd8q{Q~>CGY1|&`qeY)~Tg+Mx#aiUV zsm-603Fc_E6I^L=8;{yQ!Er9+- zYH8S0rjl7?_659ckLH7-qg@TYc&usQMkDL#0RS~TJnWPFuOdgbV~s*&DofZNnV7_k zt-ot%Xjte*=fjrA7$INRM_u9(YduG z!b7_Jrz_^?#DrCivCq+nQl0lceQ0RtIaxA+tP=rN7}>$)K=9M9X#uzmrlteS%gfHQ z4C8%khh-uJ@5k0xb}#Q(NEzFHusiO~OiwrTSJ%@!KkJqnL?90){Bs;S`TMUW+HoHU z^#AeXn*Z<>F8S3fbaV`ieQ$9QbHT@d87qjPejA$nnyB57C0gfE?oLXqwzeWMFfcTp zOgX}llRT{(dcv3CGL5fGbSp=LerKM~R4i0}oS|W@h z^8HZzOf={3@$QAWv)o7GyD~Uoj_S5?-AmBM3nn&w{++Lh_#7|-F3&43PtavkU`zQk z=eKJU82Glgw^!C2oi5BUsUMSn*-f68+;w($Y~2%qbYXlz6&#SGO;kyF_l?>=Fy=R9 z8CKH3`@uqprKqS#%s!bd?vn&^1wcK)tlN1DMpd$y6_gowY?ZZl6gSnS0uSf0K_xIO z8}B01YBns>cM_bwI9UXxqe=?9(d&@Cdu8-x8?A(d#L>ygA5YP`(>cGorFgN(?j@LF zyn@UahvEO}{P1uk)~mk`>1k`rh*Ni4^YID`r=Nx%08P&S`Zaaee@)D>zNLVT^#$9W z%mTag>w68o<=yQ`e*vC=o`|5xTeA&m>;|8eX#un`!E<(SqKdp+U$_TIP=d>7=k52>YFI_%>13PB-yta)c2WB}u1; z%r=N&q6LQh_+ec7ap>?nh3g&caBPWBzv}Wn)yH}m4Bfdr{(V8iEvNr6WqZ2zZcLXq zJPx0OUKWv{fByO9uLxv0R8XFvOYTP{EV_xm8uJMT9HIF}k>C@`POv9i9A7=J5($w) z+oBty9zntY9j4Q=BGy<5i%vdYdE6eIGM??NcYD`dlj6o^7Eo&n$yc8S7q^kAk>7_n zwxX+}lf1Oh)4K<%$>QP@=|0w!SZz9a-ej^T=*`DvlJyNOKRP@69=FV?0XsG;f6-B| z!blip((t`}nbeK&jLul;oUhV3y@FY>@J_?*;L(vln}wU)=NJOeiSf=lWbq4rXQu=%aGXk5tmzf66Ci)bA9 zL8P#_)3Ez}_jKv>($z$ei<_H;Iw9@5dnJLTT2j#nu6GlcEZxMPme4lZwV_;i`FQBP zd912)s*ylFXJ%%87^Uei7z`V;Uf(l51<5@#6EKhu#q{ip`2iR_A<}uQA2%@RIvuQ^ z3ZPEii8|uEd7GXtt*3_)f&>S#W8Kqz<7Y{ihi6^2D1gbhU#HXYb(9?j%@#S(oOV{}b~{&<(xJ?F604 zR+JJCU;vN}c61q}CbNVBR*FkrmBhrcOXqDAHbHf`1rD z(140TV|(loY6d#+*g7akt2wS;ky|jX?(_6VuZ+6aym-o&0SYPL{~4DTiq7x#w?bK= z-^$vCk&%*@+B%eS6i#z(-I2UL8bd&K3~KM-g9CSf(Gy2Az&%!h2~EUnehWrzwF_xM zdu7OrnK@wlvTdQ>kAXZ+(Q9X>7jzT%18-SOZFSHWLMkf>qU6Jz61tfPv7kC#pHvv0 zg`1z<0w4(bZbhHp`-H?;mYSkru@Lly&DNfcQ((+iZf*p*L$#|DpC>k-K7C4;sO-?&> zfu(L~fl8PX&vWB@c5l`6HlPO}xf7IVGA85$$7G6hVLcDR8*A)mDIFXF$%c6)uJJ{J zoQlU(;E1D#hV1X}o74*!suNGmPiPcK%GgyW_Ze_kA&3Dp^EdB(OT~ow@$pwfYd~iN zmv|?g1VI#EJf+TjjG8roPCLs2CGb%4b9up6FJgreUWuH`ZnFbg*H^T-`z``iLrWVw_pX2ncxV08^PZ?F zc9Uca7R`wL8+(BtYEph!O9pYC)En|XdUa(zCvc?s`S}}<$4y|INFJAHKB=8fdl(7b z=3}bxBcfY+dWZ@j#Raj`gYYp4;qzrmKqdMN0zVT~-UBX%(r=?_-;E zd8mz}UoOeQOKslRHuJ#I6RWrVm+(jQI%I zqGdsChernF^ktic2I}~~>&vH3PRj=?;z7X#pm!!oe~Y%@>6)3rEzw=YVwvPgrFi<( zkhD91m#SUk3t2iI=QeT)$Y;gwUGBf2*^+?4e>>&2 z_pI5fzlYi!GeFD-4-kSoNHF*?_}`5^Eg1RxhtC#TPl_t9ghX7Mg~fbxK>xr1Fy!=% zjJhJtyaLv5kGWzMt<18pYrlTAteON19Gp?OkKZ0MbEFC%9y)TcSD}6EQZ+IqD^+14 z!d%2Z#-q4tSCf7yYS&Lp^65(BQG@>AugV4PPdmYJX9bm6o=zdww?lW!nU* zqMI-!XmM-DKA;XXAudFZJ*xY-)6!!zh^N(BaAbVs)yPxpb_p2{g1(J^AQMA_gzE!r zp03U;n?KCiSCsd>Y|pm|IQ$a<@{$i9kgDZ&aIl2Wm)+}>83{pQU%jq_7ncB$p6y2; zg*H*jE1RB0(`oZ^wM1UOlS9Ewmvi*DZg_FaGfvVz4>HQB$|5s~rs zEi-xC>Pr3ku`e9&wi^BWB(jmW8Ts4qd3x=D5|)yCb7f<(ZPN~~vvKF1T5Wip^gml= za1+0N6$HGZX;EWbG3j*GA$5gX-gxlC(h~7_!M&5Gzk~2ZN*)!v2M!Kd@K^|t7gcA1 z8Lb>ub5B=SSI2zUT0%xkn+RIrKjfhC%aBRq^z$xDUdfyDp(Xdavqk(M?>@S7a6bWn z!n1@I+^OH>g3lp!y{;*=Q3+OvHh9M`-@X-n_3CT+_MoV+`!Z%BL!tM3iFa#)wtu!y zFUiQsjXAt?lo?YSXF=Hq_6XJ-2Qdz4r{3b!F#0^)KWmltg5e$xET0@b+kaLmmTlB#HHXPm#Xk`~C88z6qoD4*IyqMn~I$1j7gU>sjBJ zW(WFG9Ak*vEp$1;ChF9_^WpoVrJ^7As1Mqwi5?Ps`t+&OwhB%`N^&;^Ik~01eIzOd zo<;5SeRg&$AoP=yD`M`}RU9xP!x?w=KN_A81>;e6Q>IJU5}Iogs4btyS_o!lWdZvU z8JcQzTSRefK4%upiUZlcD(EH<7rleC*5^f?5J)t)k{;BfC}@K)Q%e=3Rr_(vdAiTZ zJ$3zK9eY|T`-2A$Sfi8DEZ(RylhM#%wAu?)I!|Q%Ww&2U)$r`}L#U;RtnAleb zl*S83FcuE#+|9q!dHsYjYrZF#WP5&B{Vg@mhkD~;W8HwNe(&xEAT7S%c^4)XQo#tT zS$XZS9Fc5fEO@PoFo=Q3*6P~wW(`1_BwWIJg%P2mP3iYC+!MMrO!GRp93b;8XE7}c z6!T~3H&?kghqCw&K@g@7aU<)sKFDFxz7^!W&<^+sWx+Dfz`^&ib-2;41^yE)AS~_(CHGuMI(KXX@|o-@Di>N1f6R28P8iARtdmz#3KcY~9n>bmbSHHYiD@rQYIiO~`Mc zZn0pqzzXM?WScPWmqQoSp^#8oEiZs+aKM#OK&ks8!dHeAUAkgQ-(UQWfzOH( z(pp-U1{x6&SmG?@6ClGh_fEUE41}O!oV8*|0)d%)j~NZ;1%cb4BTYvq;Lvs2(mAKQ z(rAB$;TeJ+?Id{E zs~MPNmm833%?CZFciIDn8E}OXU9Tp>hs<|@`@`pNUvwKkh1sUV6yk=er?2l0rVvC4 zYQ3qs)5gg$+1c3a?d>g`oN#l84F2{3aY9&S=#PlPKY!+e@C!oJUUW;Br%$ZvHqhg| zBRnQ;&qMmV$_^hmA54AXiv!@7uacz=X(74*Y7g9mMCGu=#Kh+;KY>_)O9P^GuYJO> zH6P6KcsL=t26S2|2)>VzdXVPVg|1h!Q^ zrU~orbwCd$N@cXb1pE0@9(2A$WqEKhjn3lc&u;(QDE}9YA9U8CVB%qD4Y^3~IglVDxK7zLHZvVt_az@ox1vda>v8K5f&PJzDwDDVG}F;peiD<+`P zOw!s!aB?y5sXGBoEVkbgryk;bE)8wMt04z?!RY#tWnFb;B_A9ZM9`9{Y7!*Jd+^zy z9=r0!fB#knd6#dP^Xl^ssG{G$D}sz1IkB12zeUdy@+AzslLA&m0mR0|@rsG{9W68N zTf6fT4EFbfAMn)GwR`Q5S48A~u4;IX4rFVPpr&iVY6C+ACG+*&$$%a_ zJ|Y8x<;F_i;|8y?VY#~n%Rm@l>O-*3>_oW}w5IjlUGry(-`;@pHUiddR}9HBVM>q` zi7!^7vk))#KOf0|bu4#PEa-Yd{MlAIc=eUKMn-ktiko!^9w+SVxS09xE5OkOeCRaa zOx0v&{x^*a>Ad9&7MM0b#J_p(Q0}Xxo$w;@gZi&toLWA-soH~y{ z;fG}fbVf+&)LK8`R?;Sdi-X^Q=%pA5T<8?@ZVTh-qTY~2(jjX*-3E~bo*u8HOW6e1oXhS|<}}4bn!OJ=mTF+cf`(yixb)q%bWH!6JZA1P{!A z`b0wyX_z_x1@LBH8)d>xY;4RH+igrn_>5*vY?DPkw0>bGT9oPNfv>(=Uyv?fv`c&8 zD994EL`P#o(gwRLO=&Us*1B*@-a2L_t)sZXe&b9z9am&{$phAOmR~;9)T3;bd|}D;7eI0rIHOg}3IKvJ5#=_40$uG~zWQ zW8Wa}DzVR=;46odYd=Of9e@Ak!Q6mQPTCp|dEA?n6kaJQ^J*nh=$%wlRDhtNN4vIM zd*w&y5;77*$37^e>YR^Hb!IzOQ{V;AudAn*s9FS*b#VF+@VHKi?jWJ-K`$IUH(~py zPZw(gH*1M0P;Pd1|8Y%}tC?q>CJCz3TQLZ=d>=_wzac;4ZhcT)NGj{ZsGzN-cMon` z_tNBRE3~e!O5d`fEQBdxWEX zjbgA4WW}kA!BCB;9Q=yb@QB%o4= zs6m3n(3oq&j!oz;Rv0}?f&DdJ5Y2C7fAq31FXZ4#1aHGF=vbsBz_gx~yiWp;=mVgo zBOAk%0#=Z>!M^PPT(j;;uAr@I8&pNWXr#ETPG07AIwo{;eLwHc8L}JI{lA>!Yggxo z@b|%W0ca1}DcJp0PiAM-=+Zf=qrhQXfFxJU{KUGag4Bs@60A5FoT4_2#2b@_Oe6-g zj(`3yffWf+?NFL4+VZ9oa^e^pxp*{6VYgsiwl0K=89 z0d1t_zHg%gAL|!^8`k#KqDCG%skCH3)RqV(9uyNGIM5$g`qG}&J%%{4Rn;VrKxoO0 z5<#Y>RO_Dgtf4B93Z(Y zXfOG_TZz)s?Adbc3)e=F=W#9Eruji#VED13f){Dk4&niE9BZcUW4lMo< z8Ne5zOu-9=F6i47*hL+hAbG($|L>&s z96|3`iT=#gc~G2WLQweEuV0{BA`0t4(+TL+?TcT~+VAy@eqc4ms=n@+M-HS)M<2|m zYWmB0v>@NBTBPIMWCp$YboK=eh=_@acOdEmX$td$6Zow>y$p;Gjbi?Cj8hWm+gLypcGiiOmD>6E*A7?=(*g4-){3!>}0`@7iIima-Gq;M#htD7T!wX#knmHf^I zR0szNuCo@m$6i1c1a5dM5JCT^3C?_bhMLwF4jRI?7c^<;Fd!EKHU#I!3Zm33R*3Br zhZ+dKrEjk5CJ!v&0uzE$C3iezk^C`LKvcWooCIOPh@^u|N)#T*l z82)xZMx6R@j97PxvBM!m1j(XDW@dxXIG|D-@r2>Cfe8=!8{k|bIFD_s$nt2fDb%9i z^+($q@8a6Q)S;0d&6tQgnTY5i}Mx_obKl)j#>0- z0G|^^YCMgU2IT2V$3kaax-BaR{$r+QyrBB?LbRN)g@y;oFObCcT!Ys}1lttW zO@wjQz%)3a1U;=br#7a03Cg}JV+s{tJb1*u(S{NR0=Vbj%724o1i8n*5Hvm(>FetQ zi3i{bdds|~_}l4O7p$-h2yqF<2~5o`iW}2(Vhj^H)+c`YqBAiw1Np=OHCl*9r1dF4 zRMEv{=c|M=aM#jOaBU!9IoT3)!`WAjQ>)3G4E?$*&uh2o6yQrL=TB4U5Ky-udik(l zejQE%n*Rg9!b6sjua8CD4|j7h`h{*d)!qXeF1f$PFZ-Wd2;he>p?m-GT8;V7Zzn;} ztN~8L;R7ulKr85#fUerMwzfEx04o2sbk_X%>jy-lK{|mm-epAwJPuCi_wU~iGJ8g+ zrlJRIlRJ(+!iu9{8LRO@ztIBE7gT2&-Y8;Pg{N9XHv1oBKi7W({t8V;?8S~X80wG^ za}q2aum!1&YjEq&zA#{hkr8cOy&~w=P>3T0}+mQ%d*PvBE4LsTJn%HsT70;1}MK6*HD`)xLrO79vf{5^zgK z%-YP{JYmHCU2$;)tmWKGu!aPO2@0KkUp|gnK2TZwfWLC!;p9(jx{929acclT!o$zs zv6LXC0W1WBV+!}yfP8}BeoO;qC=;yv)kPx)BjhMIj@7>JUGfC74xB&+qE^s$*XdQz zCIYw(f^Q-C9fkZ+%*j}xZC{+^77RJQ!}tcUH}kBU3L3wTk&y~5fnj4D9Od`#p;U$- zk>R}%f&o|tX6DLqUISWtzcOCP?zGG(CdHF+jKut`3I|vs%ux z#E*YILi|!gKY+r4c@q~G2Z9Vd9}iJH$js6w_DnW!*fP(ubf$VOtxixcaOK_Oth0qx z&ATzh5#2OW&cGpOk#i-U0lZ$>#$-Zqo)V% zFDXR3_P-+9&aoP#;nl>c5eRMbg1~}@6v;hMIfy^WnvBi`8!5oPSAcGzcH{)_(4bG= zx&T~45C%It<@Haef%ZoiAcB^k$x?ybI0@QGWF4LRgC)gfTK`7-={ITGU|6R~Q3XhT zHXI=-uc#VGN>U9seU zQUObF_vqDda7^cK1>QOnp3;sH9uDP5TOE}x8!UPm1=Jhf2a>8_OVwnfx8919w;aIO zJLILd;Qe?6N*|KN&|3-UCJ0ju)Pw0m7u!k!wodY*5Z6MR6n!Kbv_Pyf|EwPFs>xV5 z`hX;1A&8a;yG&%VYu(eb#`w_dHiXjwJwUum3)XnrLNQ!RG++|Di&D(?zZ?HRAaWGZ znt+7khQ2LcU?>Jur`Ni^2tOaD+PWvu_`^B3ace$^^^X7i{ukoMp!dK=hTyU>&?@k0 z0OHR)pD+bAbIx~@6S2T|+vlGS;2b*lzxX4SDz(Tg!xyyCGe8tTyCA?tKb-4xZ94M3 z{v)}l2wEcau1eTKX+Ehb-v=|~Qhcu!HM|*@39-d3;)Qp{Y^;#E-Req*aWJ8(_p8gI z64(l8#vl|xHl<)5hrRO*R5rVzw<|%{ee!6W%ZG9N(K$10zYL?YBO`LQ`2QC05lbF`e{-+5>?p|5w!OqK@F+o>b$dAA z0eP!P#lqSx*VPzUkNNrYOVG`~uAO_p;zlEQP@5<-u^_eZ?$HD&-Gh(0^}aIF|*qbGvr_eO+A! z#0xBWNI}2x86vMS6fWdCU*|qy*xafcbi5)*SpLWP_5GU^(k^T3| zv~l{Moe90s&lruRXF|P%&F!mltoeGO`-4Udy#2+^_2BSD_^;Xq{=zMUj#=;ku?Yo-QtPp?l;>x5xl3RGE<&^^Y9B zL>ORNfGwMEgEFAC0P>MFe`NwmdT2<$Yh7vJk$~EQallGMVb?pYB`zv=;!j?osdW z$U{nudIS3afT#NA-~>S`!se-fToMO^eB!xMwdMyJC6mfY)NDny4|i%0F0Ub_IiFus zlLA5k#2-K!g?RihXGrYEv0l=Y-T;)GKhCX!Q9f^im$fL`Fi0doM!^;Xs$*a3oNUl?7RfgDX{njnY(iz`HO9k31|E^GmI51O;t>1Y+fxr<`z>B<$6|M`iNbi-L*{e5 zH}C=&tQ!BhcZ`MC(x7c4EWZR7CuTy-a8~5yu2WZ8ZU`0Vz7b1Q25ZjE7j0wt&#oIRFz1vw&kg z#9k&z%URcLijM`Xh?N20Pmnja@$m=+{7@iY=NkAhug2$sZBL^5RqMVi{^uT8#f85C zJO!~V2bKf4Jl}hIdYt`yM04U1Dk}h~!CVNNBUEI&#-H}J(^%oM-c6HK{@QveO@60; z4$omoI+{&!EUSOj?G=%wQ+FNFU3i1=88>^IObN?K7=CT-bY$7MRTA zZ*C#LB>{k2R=C0V?3ykbdx}^U`sz#p&M-JAWxw&@g|Q)~+0&z}xC9$m08Aj4gh*GO z{(Eay-t8pV_vC^DZm4Cl_He4Nr!>pdCpXHyd%hM%piTnENK!3wcNY#6DJ_N5g-{U@ z1|tG|q``nLqX(}V&hk#nP2lR<8blQAKymA>@|{GJg;EC{3IYJIl9SC?2fkg`PE6EVSD8X~0&+YcpTT_^S~C$JZfS*S z3~vox(%znxdt$($rV{Z?OdH?}4LFpe9?*SF*RDQ%WiXtoafA6=`>#xsQuAPY#(*un zG$Ic80Q04O$||fcfXM^A?+1jqAktS~7WfoUI;`KKh06RdgIYVI2v5q~Ja>W?bE?LwTT8H``6=M7LFI_Iyh8QX=yH)BAe0Q^grS}|^9JJ^1(b9X0H&^|+K za)Fu(!Gz+sz7EgudH>r{%79F#t?jG3EE?eMX5{7$J++K6D+f#QeR1*OiLVd?a4T7k z`)y(v2d1sXBNsHQeq_)N5ZITp5o9h{CT9V;=yYpDFp#uQ`U%oze5p<8&!mKC_@66z`Aov|OzD-X<_a6GT z-)>XdZqUu8(fovMRRvfT2(LT5N(do!KvLszz32VH0BI;IsuwdA!jB%?w^b8^jn0<= z!>dv}lL_(JKRGONUZWWAc0gC+s>##)(7WzYmfukiE!MV58+@+mZ7xF`dIfD_$Je&) z@SQL1INXpwMC`u+?1JwEnb%*_T~32$)SLfjK?-T;e0?B;fY)`n;iFpS|_Cw~7nY%}ZA2YnW^f|(@5Y(b_PcTBK4b}a6b zc_}M4Obj?UV8cwz{E{&Evwv1UDAm0Go#KB#VG_>Rhe}&7Ij>_oXsZkN)UUYVQI_gy3KQ zXMN^(uf4Vi-Rn>T*8M+ADZRcHUAGTzC`yb&%FCE{=oH1nxRu3v3qk z2&*p$+KbI#I)YMR2V(QG%rhWpO)_~9mrDOTzXS^)?p&FJqCc(I!ck6SI??D-*4uL! zLb;$a5cxss6d*5Q(1wJCSrW;-=;VyFQf6yT7}%1w>7SAaoglu$7OPyFpUgqrxr?E>Fl$oeR}!VkvTNLeE2oB z{oWg^$iY0aN>lR#1gBuU0uxRKPv{=dOW&?zY7B@s<7ML}g7EcesVB##PV8~Pm^GYu z{cQ&Dks6Gxa3;A1a^pJHd=s#J0|f+oOLD>IlC|!Npd;)THnpiU_MWliI2pc1yy#8> z)uS2{h71yN>YWh!Jd7UzM76ZF0YpvD%)D~y$3j7X`Z%68*9f7LCpVlosGI%xYLL-? zG+Iy>`)d(LGGWu-v@AlBo!j1P7W8#oa;=a2>}1azeYhLon?&Y#vM@N_PX1|KAW4?e zemPhy-3(iS!hVT*?AX1}f|`E@&^d^Q>=s}_M{Vdur0QF@vOzfjp1G+B;^Xfm^DA8t zNvbnZI5;!2dA5H)=)q;)QI(m+#o(6TM{Wc*3`pA8*gEyE-O|ymYcfm}fUNIHoBb1z z7$8WXpE#`j0f!l2Z~W)> z6(GF$=e{abRnD+y9i1AFHfU*Ip#;uh@83S4e|uLGzz6hOgrbLAxq|frNL3hdATU+- z*c~MG&`@m<-`&*4a5bu7TD7uyQan;Ct{Dg0#pDgYAE|sCY@j0e^r{f@qA-uN%yt7R z0DtlDU%fSUDUZS501ktVV(vTvbT6xi9LdP#h)Qr^j0NSg9g@X2WO93Z z8RPxnO;0q1)J8_BXn^kVKdwbCj?1ZC0%i_WJJvxZ< z=hJg{PHTrOUJsS49}R{^k#x-W`mN;dvJb^nzF3j5wk3|yaJB;{o|fjz-l>}?&8E}d zeFNaCshZbxI;8~j7HPQ$SG5@eE35L~l8l`6E9R1K zg+5bTP+~P>E zC+pV61ZW&xLcn%?pz=d)t&#fRlcmYc5>pTnosMm3LUNw2zYh?yBzFD{sj5{-DGw)^Xy~?OME8j9zK7z5WM)~ z*z~~ctI`;&P3eJotujSdF{UB0LxFCJMfNmwZR&Zw+T0i7;l2a}9N|!HP-IeKf%$Uk zI+Z|r7itb2_OU!aTC#q`3nnWW0vi>!j>|hIOJpMMifPr>QlxxsnoM%IKCC!hQz|c6QPa19V&hfjPSsp?^RjZo24mza#3z^PZ=tIw&PO-bg9YFm>6(L8-5>&)1xEr34Cm$lAYG_*p4VcE9?( zj+3{epOncicx%Qy(=8yV^|fH#Nn4;riTOL$-8z|-JPw@dLlP@f2IX&<<{~8 zB0nIWido)_+mr>4Qw6S4x9#-&$edVVep`%rNA-}%lZNRc%XH$`*H>}Y^u1L)`OMMB zwrFj7iILI65Qu!N+@=^~gjhQa;dxc^l~raB*rxBs+<87@TOEp;X$nMlO;@kf1|zSV z6u$_v%5a-)q4%3VPAb(-U%0??CdwPOxo@xR`s*a3>lfxyGh&;w^3x&qp`u4@RMnS} z#ixkXOTKH(ZY#>Pj7gE|;m#8a0v}X9N~}vvApB(ud*oX1zJKp$?Ps-6#lI2+o4DHJ z%LQRlVzf|>VUk-w1uMc*hEK#gPKhaVP;~rA@q(@^)nnr(-sY?%)K&$KoMC*lI%Z-K z&Al?*glOJa$vD+!!QBBn2%j3;?Dgo8RRo$j2+Ec%JBT*7oCUUr#}$){DB_t13D?J<4Gke%Pez5MGsi61#? z`W+7&HyU=nzXfnTz_0*`Iz=dX(4|6%s_v2E<4eGj9#O+BvU+-)cZMl5>BWMk@!`Hc z5QeQda~I4+0K*Xv`JT{@YUK=CdC&WNrsiTJPOO7YQxd5sFPq0sa04H#g3pNYjW0gf zxB6Tk>5c4eH?JajS~)L8cHWwynHB$Mt1GgC}pzARb*C?e&M`i6UA` zxG=QI84iI92SOp3o&P^CLh%yMrFvJy!bm&VBV-dIuk#{x8tUFbMzv literal 13820 zcmeHu`9IWO{O_BnF`^;K&XAfZSrf@J4Ka<*9_M}D^FHUbo!9fVoUYN#Oa!nJSOh@?4p5Bf z2(pHaAl%KEwJ@`7ppAwga>xOreMc`Rk9FyVUl>i?Jel42VGA}yc3p<}9X?|t)jJy_ z8Ly*mY!vUT5Ld;$uG;=ceT~K@=~|lVXpQq44WTo#Yc{GJ%zVw`v36I<-K%Tm>!OTs zp?4jdEBv00+Z?lzov@r}pYZV=>MmQHv2ClE7+;v1E^q2EsuiO>SCijeqQaeKvvQYr zsN+P53WB_&$ngxN&@f1aFop}0jzbo<;J7Cb5_p*17#8wjDPWwRIjwt%i*nX-=V0nF zN$I)a?PN5WKzlkv#&gK|8*(&&H+1MWrz_gMBbaL^`*5GbdR9!>sxaZfYfYA09pU0~_memR~r1jrtc!*SD4iG0}#0~|U4(a^+h zoJCFv0D&|DOvOLgiy^&^h~ln_;UOc~Z6e%NbQo-xgMlzQz=I^5x$(%RXXn=<^k?=W zOe`N;&)ekK(ai$5@M6y?nySUPG311p%>Rdtt)yo_h7BfC&8U4{g?o5g@7 z1`!xo3!E_cU|fH)cv!A7Tm`NapG&gQM(zzd2vqcAoU|_evveQ?O5Q$XMh$n0S#2+tB& zI{Idwa7OiJ|K`f#Z2Q}&sr|Q26+aPPZ+$|z#aAoOEe@w4m;7ZSC zBr(Grvtwaq*xV>U@Jfwpty}S8Um%a+^=&wAl7=Vt{gc#l@$NO<&q&%qJs2B9Y+KW+ zD_0u74mm};|* zfyA44-6LC6(eG9GsBl4Sgr zn9-H1(+q-`hZfjG+FqEUk>xIRN0-4NCMB@Q>dyV*=lOyer!!-dil%~0klwXqeCNY~ zUPUR7O(37rts>O|)Dgjy{&M^Tx~PBBeED(Y`0>HQPa<3{VxeEhyszaAsh5V9pH5$o zOdia}<)K9sV<3I+ zxC8tTqNS=&ZRe>TEvd9m2Q%q42G&vqkH@ZxU&teAuQ&YVUDmeRsW>DdS_N9_HG69^ z93yBiVNBI%SS{Ryq;Zk)T|$`88wE8`7K~WrQhdHr)3U$`d03o}kL|gSaO_xPwzb_%~vmVn`Nw zL@{jGW_0;YVzP=MKT?Jzjywsu)xwXmNM(@|)Aw4)awd5|W)`2e>Q6imiOURnYh@}Y z6^i#Rvl(w79N%eI_Xd^OnKX0CZ0QDJf#HRfP%twRIEZ5#G2cJ`pyZG+$eAr7^sGE? z!|YPNFqGQ6G>Vt!x<&O3VIKp#c*#f_GHy;embiYcb!N$;B$kDc@SfP5P!eUMLKZk| zge`>4xk`FxUBscmxgiTEj$2{zeeO@h&m(8v==j?eIrIUf?59(KiCb%Aq@IPtNcoE4MlA8U*neqX_OrwA?% zp}0HuRAIZ_i=Imeo+u0Ut8wFF`2=-)t>a<}e$}TQ(Z8}JCTnmdfG-SZUqe8uVj`mG znZBwQa$Vm2K)<(0p;4YCYyC<>HwE&DDU7eO{Ei6nML~of>8mZW{(IcWsDE3GILeHJ z=ttVU;qr9HU1QH^YmrldI_#tGDNa`4G?8~Egfof_x{IQMqvybINw#lIoUSfPenF-A z?r?VWgO`=|dgzvf5E|tYRgzfY%zt(p`XwQZMk%E7hv@<`A@%YiExL1BN+A$OAdbS= z;n3;OzZQfw2u(RXI!}yfWA{Zc7Zg9KT%37oQ_bX^MPb{!J=N8&O7XYHmU`#M{kafT zjqODNk-XM5!>HH&9koY1l=EY@Gpg`U({P!leg#eR?|}Spq#3G}-j%O%cz&w@pXr9n;p85)=|bksvC{@m`Mg zRg_dOVJwH`KkojrXQH3O;rwX-KK7^WyH8f}p{KE~*1O0c1&Z9_YvVTWqWqcu&)J7J ztC)S8n48dFu@_66FF%-?1WsgX>ATh6&h1&TbZYL=Zz?2ByRi#h0V-0q!kDMN{=>&k z%U$41KZ3W!qO*WeJCgVQ+wZ%3WyMJUn0J{N%BLkNt!BY=oZIA|a?Z|RhC2JTWpz5L zU{@h5N6=t-_^@5++2YXZ0|Fcx&~-kFhS5qa4KWuxs7c?mAxx3i5EVy9-14am=ZcP# zyENLqv(={)RWeF^I0uMUR8t$mrIAbVi_<8f#AD{eBGqx-dkwS=+~;dH7m=>DKP#bg7JcREsPqHtUyT_T zSn@;0pFQ zlt6oTKa`{9Y{gSzESKEi+nxUfT{BZbq~Kwfo1~CeX0?@8#DjuAzJ}<@2*+XZ@?Rzd zQ>FoU_Zw3OD__7_U|xe&oW*2!5^-kny6*F{?RJuzd6C{X5aKgm=tV}wKduF$;gf_$ zjtFjI3Vu+x!C+~!Wsmin>%o)pihB{H;xjSRDr;SJiGP!%%&7K*@=DGD9XR@LHeyd6 z&FRn3U*Ir$@hu-KEoEDVLm7&C$L&Q9ighElur;OLl|SsXqVY+R?C+c;2!> zy4w83ch6$3Z)4t1-%_I_48w5XCEuEyJlHt(NmR5xc3{BQ5HKjskBqY%dr><%ezB=-G0;RZ!d-_lg>Nk>5)$qvGT zglBXF`Td!AMkwd4iL02+dulMlO=i6paPwOTON<}y^>SMX=z3|$ zPZ^x!=3v!5*BurTgkMU;QSJIau8v))ROwxCe`+sQuvBs)u>0*&YIbaDjdkj!e<~2I zzb}6MzTwNOYS)KxDSa!z�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 Make Grid**. +To create a **Grid** in the **Main Menu** select **Model -> Construction -> Make Grid**. Three kinds of grid can be created: @@ -65,8 +65,8 @@ The following data are required: - Cylinder - center: coordinates of the cylinder base center (select a vertex). + - axis: direction vector of the cylinder (select a vector). - base: base vector of the cylinder (select a vector). - - height: vertical vector of the cylinder (select a vector). - Grid - radius: size and number of elements from the center. @@ -82,26 +82,7 @@ Elements size of the grid can be irregular (differents sizes). Select the adequa .. centered:: Dialogue Box for a Cylindrical grid (irregular size) - - -The result is an array of hexahedra which are arranged along the -radial axis first, then the angular axis, then according to the layers -and then possibly hexahedra filling the central part. - -The filling of the central part of the cylinder is made​ according to the two following cases: - -.. image:: _static/cyl_grid2.PNG - :align: center - -.. centered:: - Filling of the central part of the cylinder in the case the number of angular elements is odd na = 5. - -.. image:: _static/cyl_grid1.PNG - :align: center - -.. centered:: - Filling of the central part of the cylinder in the case the number of angular elements is even na = 4. - + The result: @@ -146,7 +127,7 @@ To create a spherical grid, select radio button **Spherical**: The following data are required: - the center (vertex) of the central hexahedron, -- the vector corresponding to the diametrically opposite vertex to the initial vertex, +- the radius of the internal hexahedron - the number of embedded hexahedra (nb), - the coefficient of growth (k). diff --git a/doc/full_example_bridle.rst b/doc/full_example_bridle.rst index 705a3c6..670cc9d 100644 --- a/doc/full_example_bridle.rst +++ b/doc/full_example_bridle.rst @@ -7,108 +7,15 @@ Example generated from HexaBlock ################################# -.. image:: _static/bride.PNG +.. image:: _static/bride.png :align: center .. centered:: Bridle -:: - - - # -*- coding: latin-1 -*- - - import os - import GEOM - import geompy - import smesh - import hexablock - import math - import SALOMEDS - - STEP_PATH = os.path.expandvars("$HEXA_ROOT_DIR/bin/salome/crank.stp") - - - doc = hexablock.addDocument() - OPT_QUAD_IK = 1 - OPT_FIRST = 2 - - # ======================================================== merge_quads - def merge_quads (doc, quart, demi, ni1, nj1, ni2, nj2, option=0): - - prems = option == OPT_QUAD_IK - quad_ik = option == OPT_FIRST - - if quad_ik: - orig = quart.getQuadIK (ni1, nj1, k1) - else: - orig = quart.getQuadJK (ni1, nj1, k1) - - dest = demi .getQuadJK (ni2, nj2, k1) - - v1 = dest.getVertex (quad_ik); - v3 = dest.getVertex (1-quad_ik); - - v2 = orig.getVertex (0); - v4 = orig.getVertex (1); - - doc.mergeQuads (dest, orig, v1, v2, v3, v4) - - #================================================================================= Begin - orig1 = doc.addVertex (0,0,0) - orig2 = doc.addVertex (6,0,0) - - dz = doc.addVector (0,0,1) - dx = doc.addVector (1,0,0) - - dim_z = 5 - drd = 0.5 - drq = 2*drd - dl = 1 - nrq = 8 - nrd = 3 - naq = 4 - nad = 8 - k0 = 0 - k1 = 1 - - quart = doc.makeCylindrical (orig1,dx,dz,drq, 45, dl, nrq, naq, dim_z, True) - for nk in range(dim_z-2): - ## Elagage du quart (de brie) - for nj in range(naq): - ideb = 2 - if nk == dim_z-1: - ideb = 1 - for nj in range(naq): - for ni in range(nrq-ideb): - doc.removeHexa(quart.getHexaIJK(ni+ideb, nj, nk+2)) - - ## La semelle - for nj in range(naq): - for ni in range(nrq-2): - doc.removeHexa(quart.getHexaIJK(ni+2, nj, k0)) - - ## Le demi - demi = doc.makeCylindrical(orig2, dx, dz, drd, 180, dl, nrd, nad, dim_z, True) - - for nk in range(dim_z-2): - for nj in range(nad): - ni0 = max(nrd-nk, 0) - for ni in range(nrd-ni0): - doc.removeHexa(demi.getHexaIJK(ni+ni0, nj, nk+2)) - - jmax = nrq-1 - for nj in range(2): - for ni in range(jmax-3): - doc.removeHexa(quart.getHexaIJK (ni+3, nj, k1)) - - ###merge_quads (doc, quart, demi, 7, 0, nrd, 0, OPT_FIRST); - ###rge_quads (doc, quart, demi, 7, 1, nrd, 1); - - #______________________________________________________________ - - ### mesh = smesh.HexaBlocks(doc) - mesh = hexablock.mesh("bride:hexas", doc) +.. literalinclude:: cas_test_python/bride.py + :linenos: + diff --git a/doc/general.rst b/doc/general.rst index 6f00cc0..bf80298 100644 --- a/doc/general.rst +++ b/doc/general.rst @@ -6,77 +6,42 @@ Introduction to HEXABLOCK ######################### -.. Within the SALOME framework, a CAD module (GEOM) and a meshing - module (SMESH) are developed. This tools enable the construction - of hexahedrical meshes by means of a CAD cutting in blocks (the - method of blocks) topologically equivalent to hexahedra. Once this - cutting performed, the mesh construction is easy, but the method of - blocks can be touchy if the piece to mesh is complex. +With SALOME framework, a CAD component (GEOM) and a meshing component (SMESH) are developed. +These tools enable to construct hexahedral meshes: -Goals -===== +- by means of a CAD cutting in blocks topologically equivalent to hexahedra with GEOM component, -The HexaBlock module is designed to help users to build hexahedrical meshes -via the method by blocks. The two fundamental choices are: +- and generate a hexahedral mesh with SMESH component. -- To execute the method by blocks where the user has to determine the needed blocks. -- To simplify all other tasks to obtain the mesh (in particular by - using directly the geometry to mesh). +The HEXABLOCK component of SALOME is designed to help users to build hexahedral meshes: -Solution -======== +- with also the block method, -Finding a compound of blocks is in charge of users. - -HexaBlock enables to define a mesh with hexahedra in five stages: +- but without modify the geometry. -- Load and create a geometry without constraint. -- Search a compound of blocks (mental working). -- Create a model of blocks: +Like other SALOME components, HEXABLOCK can also be used in two ways: - - Logic realization of this division with operations on blocks. - - Regardless of the geometry to be meshed in terms of shape and placement. +- by using Graphic User Interface, -- Associate this model of blocks to the geometry: +- by writing Python Script. - - Associate all the vertices of the model to the geometry. - - If necessary, associate edges of the model to the geometry. - - If necessary, associate quads of the model to the geometry. - -- Generate the mesh: - - - Create discretization laws. - - Discretize the edges. - - Define mesh groups. - - Setting the mesh generation. - -Two ways of working are possible: - -- *Graphic User Interface* -- *Python Scripting* - - -Presentation of the stages -========================== - -- The construction of the real CAD (see :ref:`cad`). - -- The creation of a model of blocks (see :ref:`blockmethod`). - -- The association of this model of blocks to the geometry (see :ref:`assomodelgeo`). - -- The mesh generation (see :ref:`generatemesh`). +Stages to obtain hexahedral mesh +================================ +HEXABLOCK component enables to define a mesh with hexahedra in 5 stages: .. toctree:: - :maxdepth: 3 + :maxdepth: 1 cad.rst block_method.rst intro_association.rst intro_groups.rst intro_mesh.rst + +.. toctree:: + :maxdepth: 1 + intro_python.rst annexe.rst - diff --git a/doc/gui_asso_quad_to_geom.rst b/doc/gui_asso_quad_to_geom.rst index dab7886..105bc00 100644 --- a/doc/gui_asso_quad_to_geom.rst +++ b/doc/gui_asso_quad_to_geom.rst @@ -24,11 +24,11 @@ proceeds in three stages: .. _guiassovertex: -Associate to a vertex of the geometry -===================================== +Vertex Association +================== To associate a vertex of the model of blocks to a vertex of the geometry in -the **Main Menu** select **Model -> Make Vertex association** +the **Main Menu** select **Association -> Make Vertex association** **Arguments:** @@ -37,32 +37,66 @@ the **Main Menu** select **Model -> Make Vertex association** The dialogue box to associate to a vertex of the geometry is: -.. image:: _static/gui_ass_vertex.png +.. image:: _static/gui_vertex_assoc_coordinates.png :align: center .. centered:: Associate to a Vertex of the Geometry + +see: :ref:`guiassovertex2` + +see: :ref:`tuiassovertex2` .. _guiassoedge: -Associate to edge or lines of the geometry -========================================== +Edge(s) Association +=================== To associate edge(s) of the model of blocks to line(s) of the geometry in -the **Main Menu** select **Model -> Make Edge Association** +the **Main Menu** select **Association -> Make Edge Association** + +.. _guiassooneedge: + +One edge +-------- + +Only one edge of the model is associated. + +**Arguments:** + +- one edge of the model of blocks, +- one line of the geometry, +- Start: starting point on the line, +- End: ending point on the line. + +The dialogue box to associate one edge or wire of the geometry is: + +.. image:: _static/gui_ass_edge.png + :align: center + +.. centered:: + Associate an Edge or Wire of the Geometry +.. _guiassoedges: + +Line +---- + +One or several edges and vertices of the model are associated. + **Arguments:** - starting vertex (only if "closed line" is selected), - one or several edges of the model of blocks, - one or several lines of the geometry, - choose to associate a closed line or an opened line, +- choose to associte a closed line with inversion (only if "closed line" is selected), - Start: starting point on the line, - End: ending point on the line. The dialogue box to associate to edges or wires of the geometry is: -.. image:: _static/gui_ass_edge.png +.. image:: _static/gui_ass_edges.png :align: center .. centered:: @@ -70,11 +104,11 @@ The dialogue box to associate to edges or wires of the geometry is: .. _guiassoface: -Associate to a face of the geometry -=================================== +Quadrangle Association +====================== To associate a quadrangle of the model of blocks to a face of the geometry in -the **Main Menu** select **Model -> Make Quadrangle association** +the **Main Menu** select **Association -> Make Quadrangle association** **Arguments:** @@ -90,4 +124,18 @@ The dialogue box to associate to a face or a shell of the geometry is: Associate to a Face or a Shell of the Geometry +Note +---- + +Face association (implicite or explicite) is not necessary for: + +- planar faces, +- cylindrical faces, +- conical faces. + +Only edges association (implicite) on segments or arcs of cirle is necessary. + +This case is illustrated by an example :ref:`here `. + + TUI command: :ref:`tuiassoquadtogeom` diff --git a/doc/gui_asso_vertex_to_geom.rst b/doc/gui_asso_vertex_to_geom.rst new file mode 100644 index 0000000..9957a2c --- /dev/null +++ b/doc/gui_asso_vertex_to_geom.rst @@ -0,0 +1,207 @@ +:tocdepth: 3 + +.. _guiassovertex2: + +======================================== +GUI: Definition of point of the geometry +======================================== + +To make a vertex association you need to define the Geom Point you want to associate +your vertex to. + +There are five algorithms to create a Point in the 3D space in Geom. +Each time the Result of the operation will be a GEOM_Object (vertex). + + +.. _guiassovertexcoords: + +By coordinates +============== + +Firstly, we can define a point by setting its X, Y and Z Coordinates. + +**Arguments:** + +- Name of the vertex of the model +- Name of the resulting point +- X, Y and Z coordinates of the point + +The dialogue box to associate a vertex to a point defined by its coordinates is: + +.. image:: _static/gui_vertex_assoc_coordinates.png + :align: center + +.. centered:: + Point defined by its coordinates + + +.. _guiassovertexref: + +By a reference +============== + +Secondly, we can define a point by a Reference to another point and the shift of the coordinates of the new point regarding the coordinates of the old one. + +**Arguments:** + +- Name of the vertex of the model +- Name of the resulting point +- 1 reference point +- 3 coordinates defining the position of this point regarding the reference one + +The dialogue box to associate a vertex to a point defined by a reference is: + +.. image:: _static/gui_vertex_assoc_on_geom_point.png + :align: center + +.. centered:: + Point defined by reference to a point of the geometry and a translation + + +.. _guiassovertexedgeparam: + +By an Edge and a Parameter +========================== + +Thirdly, we can define a point by an Edge and a Parameter indicating its position on the Edge, ranging from 0.0 to 1.0. For example, 0.5 means that the point is located in the middle of the edge. + +**Arguments:** + +- Name of the vertex of the model +- Name of the resulting point +- 1 edge +- 1 Parameter defining the position of the point on the given edge + + +The dialogue box to associate a vertex to a point of the geometry defined by an edge and parameter: + +.. image:: _static/gui_vertex_assoc_on_edge_byParam.png + :align: center + +.. centered:: + Point defined by an edge and a parameter + + +.. _guiassovertexedgelength: + +By an Edge and a Length +======================= + +Alternatively, it is possible to define a point by an Edge and a Length. +The Length defines the position of the point on the given edge. +It can exceed the length of the edge or be negative. +In this case the edge is extrapolated along its curve (except for bezier and b-spline curves). +The Start Point defines the direction for the length calculation (if not defined, the first vertex of Edge is used, else the vertex of Edge closest to StartPoint is used). + +**Arguments:** + +- Name of the vertex of the model +- Name of the resulting point +- 1 edge +- 1 Point +- 1 Length + +The dialogue box to associate a vertex to a point of the geometry defined by an edge and a length: + +.. image:: _static/gui_vertex_assoc_on_edge_byLength.png + :align: center + +.. centered:: + Point defined by an edge and a length + + +.. _guiassovertexedgecoords: + +By an Edge and Coordinates +========================== + +It is also possible to define 3D coordinates of the point projected on the given edge to produce the resulting point. + +**Arguments:** + +- Name of the vertex of the model +- Name of the resulting point +- 3 coordinate values of the projected point +- 1 edge + +The dialogue box to associate a vertex to a point of the geometry defined by an edge and coordinates: + +.. image:: _static/gui_vertex_assoc_on_edge_byCoords.png + :align: center + +.. centered:: + Point defined by an edge and 3 coordinates + + +.. _guiassovertexlineintersect: + +By intersection of two Lines or Wires +===================================== + +Fourthly, we can define a point(s) by intersection of two Lines or Wires (or a Wire and a Line). +If they intersect only once, a point will be created. If there are several intersections, a compound of points will be created. +The type of the selected object (Line or Wire) can be changed in the popup menu, after clicking the corresponding selection button. (see the picture below) + +**Arguments:** + +- Name ot he vertex of the model +- Name of the resulting point +- 2 1D objects (Line or Wire) + +The dialogue box to associate a vertex to a point of the geometry defined by the intersection of two lines or wires is: + +.. image:: _static/gui_vertex_assoc_on_lines_intersection.png + :align: center + +.. centered:: + Point defined by the intersection of two lines or wires + + +.. _guiassovertexpointonfaceparams: + +By a face and two parameters +============================ + +Finally, we can define a point by a Face and Two Parameters: U and V indicating its position on the Face, ranging from 0.0 to 1.0. +For example, (0.5; 0.5) means that the point is located in the middle of the face. + +**Arguments:** + +- Name of the vertex of the model +- Name of the resulting point +- 1 face +- 2 Parameters defining the position of the point on the given face + +The dialogue box to associate a vertex to a point on a face using U and V parameters is: + +.. image:: _static/gui_vertex_assoc_on_face_byParam.png + :align: center + +.. centered:: + Point defined by a face and two parameters + + +.. _guiassovertexpointonfacecoords: + +By a face and coordinates +========================= + +Alternatively, it is possible to define 3D coordinates of the point projected on the given face. + +**Arguments:** + +- Name of the vertex of the model +- Name of the resulting point +- 3 coordinate values to project point on the given face +- 1 face + +The dialogue box to associate a vertex to a point on a face using coordinates is: + +.. image:: _static/gui_vertex_assoc_on_face_byCoords.png + :align: center + +.. centered:: + Point defined by a face and 3 coordinates + + +GUI: :ref:`guiassovertex` diff --git a/doc/gui_association.rst b/doc/gui_association.rst new file mode 100644 index 0000000..bb61403 --- /dev/null +++ b/doc/gui_association.rst @@ -0,0 +1,53 @@ +:tocdepth: 3 + +.. _guiassocs: + +============ +Associations +============ + + +.. _guishowassocs: + +Show associations +================= + +To show all associations of a given type (only vertex, edge and hexahedron can be associated), +right click on the tree of the type in the data tree and click on the menu "Show associations". + +The contextual menu shown when you right-click looks like this: + +.. image:: _static/show_assocs.png + :align: center + +.. centered:: + Show associations + +.. _guiremoveassocs: + +Remove all associations +======================= + +Just like "Show associations" but select the menu "Remove all associations". + +.. image:: _static/remove_assocs.png + :align: center + +.. centered:: + Remove all associations + +.. _guiremoveassoc: + +Remove an element's association(s) +================================== + +Right-click on the element in the data tree and select the menu "Remove association(s)". + +.. image:: _static/remove_assoc.png + :align: center + +.. centered:: + Remove an element's associations + + +TUI command: :ref:`tuiassocs` \ No newline at end of file diff --git a/doc/gui_blocks_for_cyl_pipe.rst b/doc/gui_blocks_for_cyl_pipe.rst index 0c767c5..a4d3f6e 100644 --- a/doc/gui_blocks_for_cyl_pipe.rst +++ b/doc/gui_blocks_for_cyl_pipe.rst @@ -12,15 +12,15 @@ Make blocks for a cylinder and a pipe Make Cylinder ============= -To make a **Cylinder** in the **Main Menu** select **Model -> Make Cylinder**. +To make a **Cylinder** in the **Main Menu** select **Model -> Construction -> Make Cylinder**. To make a cylinder, the following data are required: - Cylinder: a cylinder. - Vector: a vector on the base of the cylinder to start hexahedra. -- nr: the number of blocks on radial. -- na: the number of angular section. -- nl: the number of blocks along the axis of the cylinder. +- n (radial) : the number of blocks on radial. +- n (angular): the number of angular section. +- n (length) : the number of blocks along the axis of the cylinder. The dialogue box to make a cylinder is: @@ -42,12 +42,15 @@ The result of this action is: .. centered:: Cylinder +TUI command: :ref:`tuimakecylinder` + + .. _makecylinders: Make Cylinders ============== -To make **two cylinders in T shape** in the **Main Menu** select **Model -> Make Cylinders** +To make **two cylinders in T shape** in the **Main Menu** select **Model -> Construction -> Make Cylinders** You can make **Cylinders** through **Cylinder1** and **Cylinder2**. @@ -63,20 +66,23 @@ The dialogue box to make cylinders is: The result is an array of hexahedral. +TUI command: :ref:`tuimakecylinders` + + .. _makepipe: Make Pipe ========= -To make a **Pipe** in the **Main Menu** select **Model -> Make Pipe**. +To make a **Pipe** in the **Main Menu** select **Model -> Construction -> Make Pipe**. To make a pipe, the following data are required: - Pipe: a pipe. - Vector: a vector on the base of the pipe to start hexahedra. -- nr: the number of blocks on radial. -- na: the number of angular section. -- nl: the number of blocks along the axis of the pipe. +- n (radial) : the number of blocks on radial. +- n (angular): the number of angular section. +- n (length) : the number of blocks along the axis of the pipe. The dialogue box to make a pipe is: @@ -97,13 +103,15 @@ The result of this action is: .. centered:: Pipe +TUI command: :ref:`tuimakepipe` + .. _makepipes: Make Pipes ========== -To make **two intersect pipes** in the **Main Menu** select **Model -> Make Pipes**. +To make **two intersect pipes** in the **Main Menu** select **Model -> Construction -> Make Pipes**. You can make **Pipes** through **Pipe1** and **Pipe2**. @@ -121,4 +129,5 @@ The result is an array of hexahedra where we first find hexahedra of the first pipe and the second pipe. Each pipe range hexahedra following first radial layers and angular layers, and finally the axial layers. -TUI command: :ref:`tuiblockscylinderpipe` +TUI command: :ref:`tuimakepipes` + diff --git a/doc/gui_cut_hexa.rst b/doc/gui_cut_hexa.rst index d717ce4..faaa04f 100644 --- a/doc/gui_cut_hexa.rst +++ b/doc/gui_cut_hexa.rst @@ -10,7 +10,7 @@ Cut hexahedra This method allows to cut in two (or more) a series of hexahedra using a series of edges propagation. -To cut an hexahedra in the **Main Menu** select **Model -> Cut Hexahedra**. +To cut an hexahedra in the **Main Menu** select **Model -> Operation -> Cut Hexahedra**. **Arguments:** an edge and the number of cuts (nb). diff --git a/doc/gui_cyl.rst b/doc/gui_cyl.rst index 777af35..65bfdcd 100644 --- a/doc/gui_cyl.rst +++ b/doc/gui_cyl.rst @@ -7,7 +7,10 @@ Cylinder ======== -To create a **Cylinder** in the **Main Menu** select **Model -> Add Cylinder**. +To create a **Cylinder** in the **Main Menu** select **Model -> Construction -> Add Cylinder**. + +There is no construction of blocks. +Cylinder is an intermediate object built in order to make the dialog boxes of blocks construction more concise. **Arguments:** a vertex, a vector, a radius and a height. diff --git a/doc/gui_disc_elmts.rst b/doc/gui_disc_elmts.rst index 6b01583..f3d8d3a 100644 --- a/doc/gui_disc_elmts.rst +++ b/doc/gui_disc_elmts.rst @@ -6,7 +6,7 @@ Disconnect elements =================== -To disconnect elements in the **Main Menu** select **Model -> Disconnect**. +To disconnect elements in the **Main Menu** select **Model -> Operation -> Disconnect**. .. _guidiscoquad: @@ -15,7 +15,7 @@ Disconnect a quadrangle **Arguments:** -- q: the quadrangle to disconnect. +- quad: the quadrangle to disconnect. - from hexa: the hexahedron to disconnect the quadrangle from. The dialogue box to disconnect a quadrangle is: @@ -35,6 +35,25 @@ Example: .. centered:: Disconnect a Quadrangle +.. _guidiscoedges: + +Disconnect edges +================== + +**Arguments:** + +- edges: the edges to disconnect. +- hexas: the hexahedrons to disconnect the edges from. + + +The dialogue box to disconnect edges is: + + +.. image:: _static/gui_disco_edges.png + :align: center + +.. centered:: + Disconnect Edges .. _guidiscoedge: @@ -43,7 +62,7 @@ Disconnect an edge **Arguments:** -- e: the edge to disconnect. +- edge: the edge to disconnect. - from hexa: the hexahedron to disconnect the edge from. @@ -63,7 +82,7 @@ Disconnect a vertex **Arguments:** -- v: the vertex to disconnect. +- vertex: the vertex to disconnect. - from hexa: the hexahedron to disconnect the vertex from. diff --git a/doc/gui_discret_law.rst b/doc/gui_discret_law.rst index a708358..2132eb5 100644 --- a/doc/gui_discret_law.rst +++ b/doc/gui_discret_law.rst @@ -35,15 +35,7 @@ The dialogue box to create a law is: Remove law ========== -To remove a discretization law in the **Main Menu** select **Mesh -> Remove Law**. - - -.. image:: _static/gui_remove_law.png - :align: center - -.. centered:: - Remove law - +To remove a group from the model, in the **Mesh Tab's Tree View** select the Law you want to remove then click on **Mesh -> Remove Law** in the main menu. TUI command: :ref:`tuidiscretelaw` diff --git a/doc/gui_edge.rst b/doc/gui_edge.rst index fd2d4f8..ea9c211 100644 --- a/doc/gui_edge.rst +++ b/doc/gui_edge.rst @@ -7,7 +7,7 @@ Edge ==== -To create an **Edge** in the **Main Menu** select **Model -> Add Edge**. +To create an **Edge** in the **Main Menu** select **Model -> Construction -> Add Edge**. There are two algorithms to create an **Edge**. @@ -34,7 +34,7 @@ The dialogue box to create an edge from a vertex and a vector is: :align: center .. centered:: - Add Edge from vertices + Add Edge from a vertex and a vector TUI command: :ref:`tuiedge` diff --git a/doc/gui_groups.rst b/doc/gui_groups.rst index f132723..f8115b0 100644 --- a/doc/gui_groups.rst +++ b/doc/gui_groups.rst @@ -35,14 +35,7 @@ To define groups on the model in the **Main Menu** select **Groups -> Add Group* Remove group ============ -To remove a group from the model in the **Main Menu** select **Groups -> Remove Group**. - - -.. image:: _static/gui_remove_group.png - :align: center - -.. centered:: - Remove group +To remove a group from the model, in the **Groups Tab's Tree View** select the group you want to remove then click on **Groups -> Remove Group** in the main menu. TUI command: :ref:`tuigroups` diff --git a/doc/gui_hemisphere.rst b/doc/gui_hemisphere.rst index 373b994..0cedecd 100644 --- a/doc/gui_hemisphere.rst +++ b/doc/gui_hemisphere.rst @@ -7,7 +7,7 @@ Create HemiSpherical Grid ========================= -To create an **HemiSpherical Grid** in the **Main Menu** select **Model -> Make Hemisphere**. +To create an **HemiSpherical Grid** in the **Main Menu** select **Model -> Construction -> Make Hemisphere**. .. image:: _static/gui_hemispherical.png :align: center @@ -18,9 +18,6 @@ To create an **HemiSpherical Grid** in the **Main Menu** select **Model -> Make The following data are required: -- Result Name - - name: name of the grid created (**optional**). - - Sphere - center: center coordinates of the sphere (select a vertex). - external radius: radius size of the sphere. @@ -28,22 +25,20 @@ The following data are required: - Hole - axis(z): axes of the hole (select a vector). - Note: This parameter also defines the *vector* parameter on *Cross section* and therefore is automatically filled. - radius: radius size of the hole. - Cross section - point: coordinates of a point on the surface of the cross section (select a vertex). - vector: normal vector to the surface of the cross section (select a vector). - Note: This parameter also defines the *axis(z)* parameter on *Hole* and therefore is automatically filled. - Radial section - start : a vector defining the start of the radial section (select a vector). - angle : fill this field to customize the section (value in degree, **optional**). - Grid - - radius: number of hexahedra from the center of the sphere. - - angle: number of hexahedra along the perimeter of the sphere. - - height: number of hexahedra on the height of the sphere. + - n (radial) : number of hexahedra from the center of the sphere. + - n (anglular): number of hexahedra along the perimeter of the sphere. + - n (height) : number of hexahedra on the height of the sphere. From this dialog box, four kinds of grid can be created: @@ -74,16 +69,9 @@ TUI command: :ref:`tuihemisphericalgrid` Partial HemiSpherical Grid ========================== -To create a partial hemispherical grid: On *Radial section* check the *partial* check box and fill in the *angle* parameter. - -.. image:: _static/gui_parthemispherical.png - :align: center - -.. centered:: - Make a partial hemispherical grid +To create a partial hemispherical grid: On *Radial section* check the *partial* check box and fill in the *angle* parameter. -The result: .. image:: _static/parthemisphericalgrid.png :align: center @@ -99,16 +87,9 @@ TUI command: :ref:`tuiparthemisphericalgrid` Rind Grid ========== -To create a rind grid: On *Sphere* check the *rind* check box and fill in the *internal radius* parameter. - -.. image:: _static/gui_rind.png - :align: center - -.. centered:: - Make a rind grid +To create a rind grid: On *Sphere* check the *rind* check box and fill in the *internal radius* parameter. -The result: .. image:: _static/rindgrid.png :align: center @@ -120,23 +101,15 @@ TUI command: :ref:`tuirindgrid` - .. _guipartrindgrid: Partial Rind Grid ================= + To create a partial rind grid: in addition to the *internal radius* parameter (see :ref:`guirindgrid`), on *Radial section* check the *partial* check box and fill in the *angle* parameter. -.. image:: _static/gui_partrind.png - :align: center - -.. centered:: - Make a partial rind grid - - -The result: .. image:: _static/partrindgrid.png :align: center diff --git a/doc/gui_hexahedron.rst b/doc/gui_hexahedron.rst index 381cccf..a3fc03f 100644 --- a/doc/gui_hexahedron.rst +++ b/doc/gui_hexahedron.rst @@ -6,7 +6,7 @@ Hexahedron ========== -To create an **Hexahedron** in the **Main Menu** select **Model -> Add Hexahedron**. +To create an **Hexahedron** in the **Main Menu** select **Model -> Construction -> Add Hexahedron**. There are two methods to create an **Hexahedron**. diff --git a/doc/gui_make_elmts.rst b/doc/gui_make_elmts.rst index 4626559..d114f1e 100644 --- a/doc/gui_make_elmts.rst +++ b/doc/gui_make_elmts.rst @@ -7,7 +7,7 @@ Make elements by transforming elements ====================================== To make elements by transforming elements in the **Main Menu** select -**Model -> Make transformation**. +**Model -> Operation -> Make transformation**. .. _guimaketranslation: @@ -81,8 +81,8 @@ Make elements by rotation **Arguments:** - elements, -- vector direction, - vertex, +- vector direction, - angle. diff --git a/doc/gui_make_symmetry.rst b/doc/gui_make_symmetry.rst index cc36b99..c803c7d 100644 --- a/doc/gui_make_symmetry.rst +++ b/doc/gui_make_symmetry.rst @@ -7,7 +7,7 @@ Make elements by symmetry ========================= To make elements by symmetry elements in the **Main Menu** select -**Model -> Make symmetry**. +**Model -> Operation -> Make symmetry**. .. _guimakepoint: @@ -28,7 +28,25 @@ The dialogue box to make elements by point symmetry is: .. centered:: Make Elements by point symmetry + +Example +------- +.. image:: _static/sph_grid_for_make_sym_examle.png + :align: center + +.. centered:: + Spherical grid + +A point symmetry on the *Spherical grid* gives the following result: + +.. image:: _static/make_point_symmetry.png + :align: center + +.. centered:: + Point symmetry on *Spherical grid* + + .. _guimakeline: Make elements by line symmetry @@ -48,10 +66,22 @@ The dialogue box to make elements by line symmetry is: .. centered:: Make Elements by Line Symmetry +Example +------- + +A line symmetry on the *Spherical grid* gives the following result: + +.. image:: _static/make_line_symmetry.png + :align: center + +.. centered:: + Line symmetry on *Spherical grid* + + .. _guimakeplan: -Make elements by plan symmetry -============================== +Make elements by plane symmetry +=============================== **Arguments:** @@ -59,11 +89,25 @@ Make elements by plan symmetry - vertex, - vector. -The dialogue box to make elements by plan symmetry is: +The dialogue box to make elements by plane symmetry is: .. image:: _static/gui_make_plan_symmetry.png :align: center .. centered:: - Make Elements by Plan Symmetry + Make Elements by Plane Symmetry + + +Example +------- + +A plane symmetry on the *Spherical grid* gives the following result: + +.. image:: _static/make_plan_symmetry.png + :align: center +.. centered:: + Plane symmetry on *Spherical grid* + + +TUI command: :ref:`tuimakesymmetry` diff --git a/doc/gui_merge_elmts.rst b/doc/gui_merge_elmts.rst index b3660cc..fbf752f 100644 --- a/doc/gui_merge_elmts.rst +++ b/doc/gui_merge_elmts.rst @@ -6,7 +6,7 @@ Merge elements ============== -To merge elements in the **Main Menu** select **Model -> Merge**. +To merge elements in the **Main Menu** select **Model -> Operation -> Merge**. .. _guimergequads: @@ -15,11 +15,12 @@ Merge two quadrangles **Arguments:** -- 2 quadrangles (q1 and q2), -- 4 vertices (v1, v2, v3, v4). +- 2 quadrangles (quad 1 and quad 2), +- 4 vertices (vertex 1a, vertex 2a, vertex 1b, vertex 2b). -v1: vertex of the quadrangle *q1* to merge with the vertex *v2* of the quadrangle *q2*. -v3: vertex of the quadrangle *q1* to merge with the vertex *v4* of the quadrangle *q2*. +vertex 1a: vertex of the quadrangle *quad 1* to merge with the vertex *vertex 2a* of the quadrangle *quad 2*. + +vertex 1b: vertex of the quadrangle *quad 1* to merge with the vertex *vertex 2b* of the quadrangle *quad 2*. The dialogue box to merge two quadrangles is: @@ -38,10 +39,10 @@ Merge two edges **Arguments:** -- 2 edges (e1 and e2), -- 2 vertices (v1 and v2). +- 2 edges (edge 1 and edge 2), +- 2 vertices (vertex 1 and vertex 2). -v1: vertex of the edge *e1* to merge with the vertex *v2* of the edge *e2*. +vertex 1: vertex of the edge *edge 1* to merge with the vertex *vertex 2* of the edge *edge 2*. The dialogue box to merge two edges is: @@ -56,7 +57,7 @@ The dialogue box to merge two edges is: Merge two vertices ================== -**Arguments:** 2 vertices (v1 and v2). +**Arguments:** 2 vertices (vertex 1 and vertex 2). The dialogue box to merge two vertices is: diff --git a/doc/gui_modify_elmts.rst b/doc/gui_modify_elmts.rst index 74b645f..0c56a81 100644 --- a/doc/gui_modify_elmts.rst +++ b/doc/gui_modify_elmts.rst @@ -8,7 +8,7 @@ Modify elements by transforming elements ======================================== To modify elements by transforming elements in the **Main Menu** select -**Model -> Perform transformation**. +**Model -> Operation -> Perform transformation**. .. _guimodifytranslation: @@ -56,8 +56,8 @@ Modify elements by rotation **Arguments:** - elements, -- vector direction, - vertex, +- vector direction, - angle. diff --git a/doc/gui_modify_symmetry.rst b/doc/gui_modify_symmetry.rst index 08eb543..f88b0f6 100644 --- a/doc/gui_modify_symmetry.rst +++ b/doc/gui_modify_symmetry.rst @@ -7,7 +7,7 @@ Modify elements by symmetry =========================== -To modify elements by symmetry elements in the **Main Menu** select **Model -> Perform Symmetry**. +To modify elements by symmetry elements in the **Main Menu** select **Model -> Operation -> Perform Symmetry**. .. _guimodifypoint: @@ -48,8 +48,8 @@ The dialogue box to modify elements by line symmetry is: .. _guimodifyplan: -Modify elements by plan symmetry -================================ +Modify elements by plane symmetry +================================= **Arguments:** @@ -57,12 +57,13 @@ Modify elements by plan symmetry - vertex, - vector. -The dialogue box to modify elements by plan symmetry is: +The dialogue box to modify elements by plane symmetry is: .. image:: _static/gui_modify_plan_symmetry.png :align: center .. centered:: - Modify Elements by Plan Symmetry + Modify Elements by Plane Symmetry +TUI command: :ref:`tuimodifysymmetry` diff --git a/doc/gui_pipe.rst b/doc/gui_pipe.rst index 117dde0..77bf538 100644 --- a/doc/gui_pipe.rst +++ b/doc/gui_pipe.rst @@ -7,9 +7,12 @@ Pipe ==== -To create a **Pipe** in the **Main Menu** select **Model -> Add Pipe**. +To create a **Pipe** in the **Main Menu** select **Model -> Construction -> Add Pipe**. -**Arguments:** a vertex (base), a vector (direction), internal and external radius, and a height (h). +There is no construction of blocks. +Pipe is an intermediate object built in order to make the dialog boxes of blocks construction more concise. + +**Arguments:** a vertex (base), a vector (direction), internal and external radius, and a height. The dialogue box for the creation of a pipe is: diff --git a/doc/gui_prism_join_quad.rst b/doc/gui_prism_join_quad.rst index cbd8112..e03f7bd 100644 --- a/doc/gui_prism_join_quad.rst +++ b/doc/gui_prism_join_quad.rst @@ -13,11 +13,18 @@ Prism and join quadrangles Prism Quadrangles ================= -To prism from quadrangles in the **Main Menu** select **Model -> Prism Quadrangles**. +To prism from quadrangles in the **Main Menu** select **Model -> Operation -> Prism Quadrangles**. From a list of quadrangles, a set of hexahedra is created. -**Arguments:** list of quadrangles, a vector (direction) and the number of layers. +Regular +------- + +**Arguments:** + +- a list of quadrangles +- a vector (direction) +- the number of layers The dialogue box to prism from quadrangles is: @@ -37,7 +44,37 @@ Example: .. centered:: Prism Quads + + +Irregular +--------- + +**Arguments:** + +- a list of quadrangles +- a vector (direction) +- a list of heights (a height for each layer - ascending) +The dialogue box to prism from quadrangles irregular mode is: + + +.. image:: _static/gui_prism_quads_irregular.png + :align: center + +.. centered:: + Prism From Quadrangles (Irregular mode) + + + +Example: + +.. image:: _static/prisme_gui2.png + :align: center + +.. centered:: + Irregular Prism Quads + +TUI command: :ref:`tuiprismquad` .. _joinquad: @@ -45,7 +82,7 @@ Example: Join Quadrangles ================ -To join quadrangles in the **Main Menu** select **Model -> Join Quadrangles**. +To join quadrangles in the **Main Menu** select **Model -> Operation -> Join Quadrangles**. .. image:: _static/gui_join_quads.png :align: center @@ -58,8 +95,8 @@ The following data are required: - From - Quadrangles: the set of quadrangles to be joined and from which hexahedra will be created. - - Point a: a vertex belonging to the set of quadrangles. - - Point b: a vertex belonging to the set of quadrangles. + - Point a: a vertex belonging to the first quadrangle of the set of quadrangles. + - Point b: a vertex, consecutive to previous Point a, belonging to the first quadrangle. - To - Quadrangle: a quadrangle from the set of targeted quadrangles. @@ -70,4 +107,5 @@ The following data are required: - size: number of layers of hexahedra issued from the operation. -TUI command: :ref:`tuiprismjoinquad` +TUI command: :ref:`tuijoinquad` + diff --git a/doc/gui_propag.rst b/doc/gui_propag.rst index e09a01f..059101d 100644 --- a/doc/gui_propag.rst +++ b/doc/gui_propag.rst @@ -6,16 +6,20 @@ Discretize on the propagation edges =================================== -To define a propagation in the **Main Menu** select **Mesh -> Set Propagation**. +To define a law for a propagation or a list of propagations in the **Main Menu** select **Mesh -> Set Propagation**. -**Arguments:** a law and a direction. +**Arguments:** -The dialogue box for creating a propagation is: + - a List of propagations + - a Law + - direction (way) + +The dialogue box for setting a law for a propagation or a list of propagations is: .. image:: _static/gui_propagation.png :align: center .. centered:: - Propagation + Setting propagations' law TUI command: :ref:`tuipropag` diff --git a/doc/gui_quad_revolution.rst b/doc/gui_quad_revolution.rst index a762107..f227b38 100644 --- a/doc/gui_quad_revolution.rst +++ b/doc/gui_quad_revolution.rst @@ -7,7 +7,7 @@ Quad revolution =============== -To make a **Quad revolution** in the **Main Menu** select **Model -> Quad Revolution**. +To make a **Quad revolution** in the **Main Menu** select **Model -> Operation -> Quad Revolution**. .. image:: _static/gui_quadrevolution.png :align: center @@ -19,14 +19,10 @@ To make a **Quad revolution** in the **Main Menu** select **Model -> Quad Revolu The following data are required: -- Result Name - - name: name of the elements created (**optional**). - -- Arguments - - Quads: a set of quadrangles from which hexahedrons will be created (select quads). - - Center: center of rotation (select a vertex). - - Axis: axis of rotation (select a vector). - - Angles: a set of angle (in degrees). Specify the rotation's angle at each step of it. + - Quads: a set of quadrangles from which hexahedrons will be created (select quads). + - Center: center of rotation (select a vertex). + - Axis: axis of rotation (select a vector). + - Angles: a set of angle (in degrees). Specify the rotation's angle at each step of it. Here is an example where the selected quadrangles are highlighted: @@ -36,7 +32,7 @@ Here is an example where the selected quadrangles are highlighted: .. centered:: Quad selection - + The result: diff --git a/doc/gui_quadrangle.rst b/doc/gui_quadrangle.rst index db2c6b7..dde5eec 100644 --- a/doc/gui_quadrangle.rst +++ b/doc/gui_quadrangle.rst @@ -7,7 +7,7 @@ Quadrangle ========== -To create a **Quadrangle** in the **Main Menu** select **Model -> Add Quadrangle**. +To create a **Quadrangle** in the **Main Menu** select **Model -> Construction -> Add Quadrangle**. There are two algorithms to create a **Quadrangle**. diff --git a/doc/gui_remove.rst b/doc/gui_remove.rst index 07ad5a7..d8d7ffc 100644 --- a/doc/gui_remove.rst +++ b/doc/gui_remove.rst @@ -7,7 +7,7 @@ Remove hexahedra ================ -To remove an **Hexahedron** in the **Main Menu** select **Model -> Remove hexahedra**. +To remove an **Hexahedron** in the **Main Menu** select **Model -> Operation -> Remove hexahedra**. **Arguments:** 1 hexahedron and a flag to indicate if connected hexahedra should be removed or not. diff --git a/doc/gui_replace_hexa.rst b/doc/gui_replace_hexa.rst index b5e1c7f..c9a6fc9 100644 --- a/doc/gui_replace_hexa.rst +++ b/doc/gui_replace_hexa.rst @@ -6,7 +6,7 @@ Replace hexahedron ================== -To **Replace an hexahedron** in the **Main Menu** select **Model -> Replace Hexahedron**. +To **Replace an hexahedron** in the **Main Menu** select **Model -> Operation -> Replace Hexahedron**. .. image:: _static/gui_replacehexa.png :align: center @@ -17,9 +17,6 @@ To **Replace an hexahedron** in the **Main Menu** select **Model -> Replace Hexa The following data are required: -- Result Name - - name : name of the elements created (**optional**). - - Quad(s) source - Quad's source: the set of quads to be extruded (select quads). - s1, s2, s3: vertices from the set of quads. (select vertices). diff --git a/doc/gui_vector.rst b/doc/gui_vector.rst index d965362..e27336f 100644 --- a/doc/gui_vector.rst +++ b/doc/gui_vector.rst @@ -6,7 +6,10 @@ Vector ====== -To create a **Vector** in the **Main Menu** select **Model -> Add vector**. +To create a **Vector** in the **Main Menu** select **Model -> Construction -> Add vector**. + +There is no construction of blocks. +Vector is an intermediate object built in order to make the dialog boxes of blocks construction more concise. There are two methods to create a **Vector**. diff --git a/doc/gui_vertex.rst b/doc/gui_vertex.rst index 2f66ec4..30f8878 100644 --- a/doc/gui_vertex.rst +++ b/doc/gui_vertex.rst @@ -6,7 +6,7 @@ Vertex ======== -To create a **Vertex** in the **Main Menu** select **Model -> Add vertex**. +To create a **Vertex** in the **Main Menu** select **Model -> Construction -> Add vertex**. The vertex is defined by settings its x, y and z **Coordinates**. diff --git a/doc/interactive.rst b/doc/interactive.rst index a0fc1fa..7465d67 100644 --- a/doc/interactive.rst +++ b/doc/interactive.rst @@ -66,7 +66,9 @@ It provides the toolset allowing to: gui_make_symmetry.rst gui_modify_elmts.rst gui_modify_symmetry.rst + gui_association.rst gui_asso_quad_to_geom.rst + gui_asso_vertex_to_geom.rst gui_groups.rst gui_discret_law.rst gui_propag.rst diff --git a/doc/intro_association.rst b/doc/intro_association.rst index f37aecf..931bac3 100644 --- a/doc/intro_association.rst +++ b/doc/intro_association.rst @@ -2,9 +2,9 @@ .. _assomodelgeo: -========================================== -Associate a model of blocks to a geometry -========================================== +================================================ +Associate this model of blocks with the geometry +================================================ Associate the model to the geometry means that the geometry to mesh is "raw" for this application. In other words, there will be no @@ -28,7 +28,7 @@ of the model to the geometry, an alternative way exists: the first two steps above can be replaced by a new stage called association by lines (see :ref:`assolines`). -.. image:: _static/association2.PNG +.. image:: _static/association2.png :align: center .. centered:: @@ -66,8 +66,7 @@ For each vertex, the association is made in three steps: - Choose a vertex of the model to associate. - Choose the way of associating among the 4 possibilities described above. -- Specify the point on the geometry, the process depends on the - previous choice: +- Specify the point on the geometry, the process depends on the previous choice: - case of an existing vertex: selection and highlight on the vertices of the geometry solely - case of a point taken on an edge of the geometry: selection @@ -90,8 +89,7 @@ applies four different algorithms in the following order: - the first algorithm determines a wire between the two vertices by taking the shortest way. -- if that wire does not exist, then another wire is build in the - following manner: +- if that wire does not exist, then another wire is build in the following manner: - compute the normals to the two vertices, - compute the mean normal of the two previous normals, - build the plan passing through the two vertices and this @@ -115,10 +113,8 @@ Associate the quadrangles This step is optional. The model quadrangles association is automatic. The three cases are processed: -- all the geometric faces exist then the nodes are computed on these - faces, -- the faces do exist but some pieces are missing because of the new - edges or vertices, in that case two strategies are deployed: +- all the geometric faces exist then the nodes are computed on these faces, +- the faces do exist but some pieces are missing because of the new edges or vertices, in that case two strategies are deployed: - automatic construction of the missing faces from the contour lines, - or association of new faces build in the geometry, - there are no associated faces to the quadrangle of the model: diff --git a/doc/intro_groups.rst b/doc/intro_groups.rst index f523f2f..1171f3f 100644 --- a/doc/intro_groups.rst +++ b/doc/intro_groups.rst @@ -2,9 +2,9 @@ .. _intro_groups: -==================================== -Define groups on the model of blocks -==================================== +======================================== +Define the groups on the model of blocks +======================================== A group is characterized by the three following components: diff --git a/doc/intro_mesh.rst b/doc/intro_mesh.rst index 5c84a8b..0d4dc45 100644 --- a/doc/intro_mesh.rst +++ b/doc/intro_mesh.rst @@ -2,9 +2,9 @@ .. _mesh: -====================== -Meshing with Hexahedra -====================== +============================ +Generate the hexahedral mesh +============================ The main stages to mesh with HexaBlock are: @@ -79,7 +79,7 @@ The groups are defined on the model of blocks and the main types of groups are: - groups of edges - groups of nodes -.. image:: _static/EX2.PNG +.. image:: _static/ex2.png :align: center .. centered:: @@ -139,20 +139,20 @@ Examples Linear approximation of the discretization of faces ''''''''''''''''''''''''''''''''''''''''''''''''''''' -.. image:: _static/meshing1.PNG +.. image:: _static/meshing1.png :align: center Geometric face and meshing by approximation '''''''''''''''''''''''''''''''''''''''''''' -.. image:: _static/meshing2.PNG +.. image:: _static/meshing2.png :align: center Geometric face and meshing by approximation and projection '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' -.. image:: _static/meshing3.PNG +.. image:: _static/meshing3.png :align: center diff --git a/doc/intro_python.rst b/doc/intro_python.rst index 259d73d..ea39330 100644 --- a/doc/intro_python.rst +++ b/doc/intro_python.rst @@ -6,7 +6,7 @@ Example: Python script for a connecting rod =========================================== -.. image:: _static/cad_bielle.PNG +.. image:: _static/cad_bielle.png :align: center .. centered:: @@ -30,299 +30,167 @@ Model creation :: - import os - import geompy - import hexablock - import math + import math - STEP_PATH = os.path.expandvars("$HEXABLOCK_ROOT_DIR/bin/salome/crank.stp") + import geompy + import hexablock - #============================= - # CREATION DOCUMENT - #============================= - doc = hexablock.addDocument() + doc = hexablock.addDocument("bielle") - #============================= - # MODEL CREATION - #============================= + # ------------------------------------- Build 2 cylindrical grids - # For the connecting rod, two cylindrical grids have to be build and - # the quadrangles have to be prismed between these wo grids + centre_pb = doc.addVertex(0, 0, 0) + centre_gb = doc.addVertex(7, 0, 0) - #============================= - # PARAMETRES - #============================= + angle_px = math.pi / 3 + vecteur_px = doc.addVector(math.cos(angle_px), math.sin(angle_px), 0) + vecteur_gx = doc.addVector(1, 0, 0) - R = 0.095168291790720005 + vecteur_z = doc.addVector(0, 0, 1) - r_pte = R - r_pte_t = R/2.0 + grille_p = doc.makeCylindrical(centre_pb, vecteur_px, vecteur_z, 1, 360, 1, 1, 3, 1, False) + grille_g = doc.makeCylindrical(centre_gb, vecteur_gx, vecteur_z, 1, 360, 1, 1, 3, 1, False) - xpetit = 0.0 - xgrand = 1.35739 + 0.1595 - longueur = (xgrand - xpetit)/2.0 - hauteur = 0.019999999553*2 + # ------------------------------------- Join the grids - dr_pte = R - da_pte = 360 - dl_pte = hauteur + quad_p = grille_p.getQuadJK(1, 2, 0) + quad_g = grille_g.getQuadJK(1, 1, 0) + + point_p1 = grille_p.getVertexIJK(1, 0, 0) + point_p2 = grille_p.getVertexIJK(1, 2, 0) - nr_pte = 1 - na_pte = 6 - nl_pte = 1 + point_g1 = grille_g.getVertexIJK(1, 1, 0) + point_g2 = grille_g.getVertexIJK(1, 2, 0) - #============================= - # Vectors Creation - #============================= + prisme = doc.joinQuad(quad_p, quad_g, point_p1, point_g1, + point_p2, point_g2, 3) - dx = doc.addVector(longueur, 0, 0) - dy = doc.addVector(0, longueur, 0) - dz = doc.addVector(0, 0, longueur) - #================================================= - # Creation of cylindrical grid centers - #================================================= +Go back to :ref:`menu` + +.. _recover: - c_pte = doc.addVertex(xpetit, 0, 0) - c_grd = doc.addVertex(2*longueur, 0, 0) - dx_prime = doc.addVectorVertices(c_pte, c_grd) +Recovering edges and faces from geometry before the association +=============================================================== + +:: - #================================================= - # small cylindrical grid creation - #================================================= + bielle = geompy.ImportSTEP("bielle.stp") - grille_cyl_pte = doc.makeCylindrical(c_pte, dx, dz, dr_pte, da_pte, dl_pte, nr_pte, na_pte, nl_pte, False) - #================================= - # Small cylindrical grid creation - #================================= + sommets = geompy.SubShapeAllSortedCentres(bielle, geompy.ShapeType["VERTEX"]) - grille_cyl_grd = doc.makeTranslation(grille_cyl_pte, dx_prime) + sommets_petit = [ 6, 8, 7, 9 ] + sommets_grand = [ 10, 12, 11, 13 ] - #================================== - # Joining the two cylindrical grids - #================================== + aretes = geompy.SubShapeAllSortedCentres(bielle, geompy.ShapeType["EDGE"]) - mod_x1 = grille_cyl_pte.getVertexIJK(1, 0, 1) - mod_x2 = grille_cyl_pte.getVertexIJK(1, 1, 0) - mod_x3 = grille_cyl_pte.getVertexIJK(1, 5, 0) - mod_x4 = grille_cyl_pte.getVertexIJK(1, 0, 0) - quad_11 = doc.findQuad(mod_x1, mod_x2) - quad_12 = doc.findQuad(mod_x1, mod_x3) + aretes_petit = [ 7, 9, 8, 10 ] + aretes_grand = [ 19, 21, 20, 22 ] - mod_y1 = grille_cyl_grd.getVertexIJK(1, 3, 1) - mod_y2 = grille_cyl_grd.getVertexIJK(1, 2, 0) - mod_y3 = grille_cyl_grd.getVertexIJK(1, 4, 0) - mod_y4 = grille_cyl_grd.getVertexIJK(1, 3, 0) + ga_pbcd = aretes[ 0] + ga_pbe = aretes[ 2] - quad_21 = doc.findQuad(mod_y1, mod_y2) - quad_22 = doc.findQuad(mod_y1, mod_y3) + ga_phcd = aretes[ 1] + ga_phe = aretes[ 3] + + ga_gbcd = aretes[27] + ga_gbe = aretes[25] - model_biell_fin = doc.joinQuads([quad_11, quad_12], quad_21, mod_x1, mod_y1, mod_x4, mod_y4, 1) + ga_ghcd = aretes[28] + ga_ghe = aretes[26] Go back to :ref:`menu` -.. _recover: +.. _assoc: -Recovering edges and faces before the association -================================================= +Association of the model to the geometry +======================================== :: - bielle_geom = geompy.ImportFile(STEP_PATH, "STEP") - doc.setShape(bielle_geom) - geompy.addToStudy(bielle_geom, "bielle_geom") - all_edges_bielle = geompy.SubShapeAllSorted(bielle_geom, geompy.ShapeType["EDGE"]) + doc.setShape(bielle) + # ---------------------------- Clean implicit associations of the model + doc.clearAssociation() - # dictionnaire des edges de la géométrie : - # key = nom, value = indice dans all_edges_bielle - dic_edge_names = {"edge_ray_pte_b": 0, "edge_ray_pte_h": 1, - "edge_trou_pte_b": 2, "edge_trou_pte_h" :3, - "edge_arr_pte_g_b": 7, "edge_arr_pte_g_h": 8, - "edge_arr_pte_d_b": 9, "edge_arr_pte_d_h": 10, - "edge_arr_grd_g_b": 19, "edge_arr_grd_g_h": 20, - "edge_arr_grd_d_b": 21, "edge_arr_grd_d_h": 22, - "edge_trou_grd_b": 25, "edge_trou_grd_h": 26, - "edge_ray_grd_b": 27, "edge_ray_grd_h": 28, - "edge_long_g_b": 13, "edge_long_g_h": 14, - "edge_long_d_b": 15, "edge_long_d_h": 16 - } + # -------------------------- Procedure who associates external circles + def cercle(grille, k, ge, p): + ms = grille.getVertexIJK(0, 0, k) + ma1 = grille.getEdgeJ(0, 2, k) + ma2 = grille.getEdgeJ(0, 1, k) + ma3 = grille.getEdgeJ(0, 0, k) - all_faces_bielle = geompy.SubShapeAllSorted(bielle_geom, geompy.ShapeType["FACE"]) - # dictionnaire des faces de la geometrie : - # key = nom, value = indice dans all_faces_bielle - dic_face_names = {"face_ray_pte": 0, "face_trou_pte": 1, "face_pte_g": 2, - "face_pte_d": 3, "face_long_g": 4, "face_long_d": 5, - "face_bas": 6, "face_haut": 7, "face_grd_g": 8, - "face_grd_d": 9, "face_trou_grd": 10, - "face_ray_grd": 11 - } + doc.associateClosedLine(ms, ma1, [ ma2, ma3 ], ge, p, False, []) + cercle(grille_p, 0, ga_pbe, 5.0/6) + cercle(grille_p, 1, ga_phe, 5.0/6) + + cercle(grille_g, 0, ga_gbe, 0) + cercle(grille_g, 1, ga_ghe, 0) + # ------------------- Procedure who associates external decentered lines + def arc(grille, i1, i2, k, ge): + ma1 = grille.getEdgeJ(1, i1, k) + ma2 = grille.getEdgeJ(1, i2, k) + + doc.associateOpenedLine(ma1, [ ma2 ], ge, 0, [], 1) + arc(grille_p, 1, 0, 0, ga_pbcd) + arc(grille_p, 1, 0, 1, ga_phcd) -Go back to :ref:`menu` - -.. _assoc: + arc(grille_g, 0, 2, 0, ga_gbcd) + arc(grille_g, 0, 2, 1, ga_ghcd) -Association of the model to the geometry -======================================== -:: + # ---------------------- Associate archs vertices with connection circles - dico_haut_bas = {"h": 1, "b": 0} + hm = prisme.getHexa(1) + for i in xrange(0, 4): + vm = hm.getVertex(i) + ga = sommets[ sommets_petit[i] ] + vm.setAssociation(ga) - # 1. lignes internes (trou) haut/bas du petit cylindre - # ==================================================== - for z in dico_haut_bas.iteritems(): + hm = prisme.getHexa(2) + for i in xrange(0, 4): + vm = hm.getVertex(i) + ga = sommets[ sommets_grand[i] ] + vm.setAssociation(ga) - mod_line = [grille_cyl_pte.getEdgeJ(0, j, z[1]) for j in range(5)] - mod_start = grille_cyl_pte.getEdgeJ(0, 5, z[1]) - mod_first = mod_start.getVertex(1) + # ---------------------- Associate connection circles - # geometrie : 1 seule ligne - edge_hole_in = all_edges_bielle[dic_edge_names["edge_trou_pte_"+z[0]]] - geo_start = edge_hole_in - par_start = 0.0 - geo_line = [] + hm = prisme.getHexa(0) + for i in xrange(0, 4): + em = hm.getEdge(i+8) + ga = aretes[ aretes_petit[i] ] + em.addAssociation(ga, 0, 1) - # association : - ier = doc.associateClosedLine(mod_first, mod_start, mod_line, - geo_start, par_start, geo_line) - + hm = prisme.getHexa(2) + for i in xrange(0, 4): + em = hm.getEdge(i+8) + ga = aretes[ aretes_grand[i] ] + em.addAssociation(ga, 0, 1) - # 2. lignes internes (trou) haut/bas du grand cylindre - # ===================================================== - for z in dico_haut_bas.iteritems(): - - mod_start = grille_cyl_grd.getEdgeJ(0, 5, z[1]) - mod_first = mod_start.getVertex(1) - mod_line = [grille_cyl_grd.getEdgeJ(0, j, z[1]) for j in range (5)] - - # geometrie : 1 seule ligne - edge_hole_in = all_edges_bielle[dic_edge_names["edge_trou_grd_"+z[0]]] - geo_start = edge_hole_in - par_start = 0.0 - geo_line = [] - - # association : - ier = doc.associateClosedLine(mod_first, mod_start, mod_line, - geo_start, par_start, geo_line) - - - # 3. lignes externes haut/bas du petit cylindre - # ============================================= - for z in dico_haut_bas.iteritems(): - - # modele de blocs : - mod_start = grille_cyl_pte.getEdgeJ(1, 1, z[1]) - # table des edges : - mod_line = [grille_cyl_pte.getEdgeJ(1, j, z[1]) for j in [2, 3, 4]] - - # geometrie : - # les edges de la geometrie correspondant sont, dans l'ordre (par - # exemple pour le haut) : - # edge_arr_pte_d_h, edge_ray_pte_h, edge_arr_pte_g_h - geo_start = all_edges_bielle[dic_edge_names["edge_arr_pte_d_"+z[0]]] - - geo_line = [] - geo_line.append(all_edges_bielle[dic_edge_names["edge_ray_pte_"+z[0]]]) - geo_line.append(all_edges_bielle[dic_edge_names["edge_arr_pte_g_"+z[0]]]) - - # association : - # la première est la dernière ligne sont orientées "dans le - # mauvais sens" => on fournit cette info : - par_start = 0.0 - par_end = 1.0 - ier = doc.associateOpenedLine(mod_start, mod_line, - geo_start, par_start, geo_line, par_end) - - - ## # 4. lignes externes haut/bas du grand cylindre - ## # ============================================= - for z in dico_haut_bas.iteritems(): - - # modele de blocs : - mod_start = grille_cyl_grd.getEdgeJ(1, 4, z[1]) - # table des edges : - mod_line = [grille_cyl_grd.getEdgeJ(1, j, z[1]) for j in [5, 0, 1]] - - # geometrie : - # les edges de la geometrie correspondant sont, dans l'ordre (par - # exemple pour le haut) : - # edge_arr_grd_g_h, edge_ray_grd_h, edge_arr_grd_d_h - geo_start = all_edges_bielle[dic_edge_names["edge_arr_grd_g_"+z[0]]] - - geo_line = [] - geo_line.append(all_edges_bielle[dic_edge_names["edge_ray_grd_"+z[0]]]) - geo_line.append(all_edges_bielle[dic_edge_names["edge_arr_grd_d_"+z[0]]]) - - # association : - # la première est la dernière ligne sont orientées "dans le - # mauvais sens" => on fournit cette info : - par_start = 0.0 - par_end = 1.0 - ier = doc.associateOpenedLine(mod_start, mod_line, - geo_start, par_start, geo_line, par_end) - - # 6. association des 4 points restants (x1, x4, y1, y4) : - # ======================================================= - - # NB: - # h = top (haut) - # b = bottom (bas) - # g = big (grand) - # p = small (petit) - # t = hole (trou) - - face_haut = all_faces_bielle[dic_face_names["face_haut"]] - - edge_haut_droite = geompy.GetEdgesByLength(face_haut, 0.136, 0.137) - edge_haut_gauche = geompy.GetEdgesByLength(face_haut, 0.131, 0.132) - - # 1. grand cylindre : - y_h_g = geompy.MakeVertexOnSurface(face_haut, 1, 0.5) - u_h_g = geompy.MakeVertexOnCurve(edge_haut_droite, 1) - w_h_g = geompy.MakeVertexOnCurve(edge_haut_gauche, 0) - edge_v_grd = geompy.MakeLineTwoPnt(u_h_g, w_h_g) - - geo_y1 = geompy.MakeVertexOnCurve(edge_v_grd, 0.5) - geo_y4 = geompy.MakeVertexWithRef(geo_y1, 0.0, 0.0, -hauteur) - - # vertex cote grande grille cylindrique : - mod_y1.setAssociation(geo_y1) - mod_y4.setAssociation(geo_y4) - - # 2. petit cylindre : - # REM : le modele grand cylindre a ete cree par translation / au petit - # cylindre. - v_h_p = geompy.MakeVertexOnSurface(face_haut, 0, 0.5) - x_h_p = geompy.MakeVertexOnCurve(edge_haut_droite, 0) - z_h_p = geompy.MakeVertexOnCurve(edge_haut_gauche, 1) - edge_v_pte = geompy.MakeLineTwoPnt(x_h_p, z_h_p) - - geo_x1 = geompy.MakeVertexOnCurve(edge_v_pte, 0.5) - geo_x4 = geompy.MakeVertexWithRef(geo_x1, 0.0, 0.0, -hauteur) - - # vertex cote petite grille cylindrique : - mod_x1.setAssociation(geo_x1) - mod_x4.setAssociation(geo_x4) - - # 7. association des faces : - quad1 = grille_cyl_pte.getQuadJK(1, 1, 0) - quad1.addAssociation(all_faces_bielle[dic_face_names["face_pte_d"]]) - quad2 = grille_cyl_pte.getQuadJK(1, 4, 0) - quad2.addAssociation(all_faces_bielle[dic_face_names["face_pte_g"]]) - quad3 = grille_cyl_grd.getQuadJK(1, 1, 0) - quad3.addAssociation(all_faces_bielle[dic_face_names["face_grd_d"]]) - quad4 = grille_cyl_grd.getQuadJK(1, 4, 0) - quad4.addAssociation(all_faces_bielle[dic_face_names["face_grd_g"]]) + # --------------------- Round implicit cylindrical associations + for h, i, ech in [ [0, 0, 0.95], [0, 1, 0.95], [2, 2, 0.85], [2, 3, 0.85] ]: + hm = prisme.getHexa(h) + em = hm.getEdge(i) + va = em.getVertex(0).getAssociation() + vb = em.getVertex(1).getAssociation() + vax, vay, vaz = geompy.PointCoordinates(va) + vbx, vby, vbz = geompy.PointCoordinates(vb) + vmx = ( vax + vbx ) / 2.0 * ech + vmy = ( vay + vby ) / 2.0 + vmz = ( vaz + vbz ) / 2.0 + vm = geompy.MakeVertex(vmx, vmy, vmz) + eg = geompy.MakeArc(va, vm, vb) + em.clearAssociation() + em.addAssociation(eg, 0, 1) Go back to :ref:`menu` @@ -333,42 +201,74 @@ Definition of elements groups for the mesh :: - # We define 3 groups + # -------------------------- # Define 5 faces groups + + groupe_petit = doc.addQuadGroup("Petit") + groupe_grand = doc.addQuadGroup("Grand") + groupe_bas = doc.addQuadGroup("Bas") + groupe_haut = doc.addQuadGroup("Haut") + groupe_contour = doc.addQuadGroup("Contour") - # groupe d edges (arretes) - edge_grp = doc.addEdgeGroup("Edge_grp") - for i in range(doc.countEdge()): - edge_grp.addElement(doc.getEdge(i)) + # -------------------------- Define little and big cylinder groups - # groupe de quads (faces) - quad_grp = doc.addQuadGroup("Quad_grp") - for i in range(doc.countQuad()): - quad_grp.addElement(doc.getQuad(i)) + for i in xrange(3): + groupe_petit.addElement( grille_p.getQuadJK(0, i, 0) ) + groupe_grand.addElement( grille_g.getQuadJK(0, i, 0) ) - # groupe d hexas (solids) - hexa_grp = doc.addHexaGroup("Hexa_grp") - for i in range(doc.countHexa()): - hexa_grp.addElement(doc.getHexa(i)) + # -------------------------- Define bottum and up groups + + for i in xrange(3): + groupe_bas.addElement( grille_p.getQuadIJ(0, i, 0) ) + groupe_bas.addElement( grille_g.getQuadIJ(0, i, 0) ) + + groupe_haut.addElement( grille_p.getQuadIJ(0, i, 1) ) + groupe_haut.addElement( grille_g.getQuadIJ(0, i, 1) ) + + for i in xrange(3): + h = prisme.getHexa(i) + + groupe_bas.addElement( h.getQuad(2) ) + groupe_haut.addElement( h.getQuad(3) ) + + # -------------------------- Define border group + + for i in xrange(2): + groupe_contour.addElement( grille_p.getQuadJK(1, i, 0) ) + + for i in [0, 2]: + groupe_contour.addElement( grille_g.getQuadJK(1, i, 0) ) + + for i in xrange(3): + h = prisme.getHexa(i) + + groupe_contour.addElement( h.getQuad(4) ) + groupe_contour.addElement( h.getQuad(5) ) + + # -------------------------- Define 3 groups of volumes + + groupe_petit = doc.addHexaGroup("Petit") + groupe_grand = doc.addHexaGroup("Grand") + groupe_prisme = doc.addHexaGroup("Prisme") + + for i in xrange(3): + groupe_petit.addElement( grille_p.getHexa(i) ) + groupe_grand.addElement( grille_g.getHexa(i) ) + + for i in xrange(3): + groupe_prisme.addElement( prisme.getHexa(i) ) - # groupe de noeuds de vertex pour tout le modele - vertex_nod_grp = doc.addVertexNodeGroup("Vertex_Nod_Grp") - for i in range(doc.countVertex()): - vertex_nod_grp.addElement(doc.getVertex(i)) Go back to :ref:`menu` .. _lawdisc: -Definition of a law discretization -================================== +Definition of a law discretization laws : +======================================== :: - law = doc.addLaw("Uniform", 4) + hexablock.addLaws(doc, 0.003, True) - for j in range(doc.countPropagation()): - propa = doc.getPropagation(j) - propa.setLaw(law) # apply discretization law on the model and generate the mesh Go back to :ref:`menu` @@ -380,11 +280,6 @@ Mesh generation :: - print " --- HEXAHEDRICAL MESH --- " - mesh_hexas = hexablock.mesh("Bielle:hexas", doc) - - print "Number of hexahedra:", mesh_hexas.NbHexas() - print "Number of quadrangles:", mesh_hexas.NbQuadrangles() - print "Number of segments:", mesh_hexas.NbEdges() - print "Number of nodes:", mesh_hexas.NbNodes() - + blocs = hexablock.mesh(doc) + ## .. and show statistics + muv, mue, muq, muh = hexablock.dump(doc, blocs) diff --git a/doc/mesh.rst b/doc/mesh.rst index d6e18bf..93a81b2 100644 --- a/doc/mesh.rst +++ b/doc/mesh.rst @@ -117,20 +117,20 @@ Examples Linear approximation of the discretization of faces ''''''''''''''''''''''''''''''''''''''''''''''''''''' -.. image:: _static/meshing1.PNG +.. image:: _static/meshing1.png :align: center Geometric face and meshing by approximation '''''''''''''''''''''''''''''''''''''''''''' -.. image:: _static/meshing2.PNG +.. image:: _static/meshing2.png :align: center Geometric face and meshing by approximation and projection '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' -.. image:: _static/meshing3.PNG +.. image:: _static/meshing3.png :align: center diff --git a/doc/pyplots/test_cut.py b/doc/pyplots/test_cut.py index 412ab00..54643ea 100644 --- a/doc/pyplots/test_cut.py +++ b/doc/pyplots/test_cut.py @@ -41,13 +41,13 @@ arete = grid.getEdgeK(0, 0, 0) ## doc.dump() file_name = os.path.join(os.environ['TMP'], 'no_decoupe.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) doc.cut(arete, 1) # doc.dump() file_name = os.path.join(os.environ['TMP'], 'decoupe.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) print "...test cut hexaedra OK" diff --git a/doc/pyplots/test_disconnect.py b/doc/pyplots/test_disconnect.py index 172cd6a..38e89b6 100644 --- a/doc/pyplots/test_disconnect.py +++ b/doc/pyplots/test_disconnect.py @@ -68,12 +68,12 @@ edge.setScalar(5) vertex.setScalar(5) file_name = os.path.join(os.environ['TMP'], 'disconnect1.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) doc.disconnectQuad(hexa1, quad) file_name = os.path.join(os.environ['TMP'], 'disconnect2.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) print "...test disconnect elements OK" diff --git a/doc/pyplots/test_join_quads.py b/doc/pyplots/test_join_quads.py index 3e397f1..79bc1a3 100644 --- a/doc/pyplots/test_join_quads.py +++ b/doc/pyplots/test_join_quads.py @@ -74,6 +74,6 @@ for nh in range(height): file_name = os.path.join(os.environ['TMP'], 'joint.vtk') -elts.saveVtk(file_name) +#### elts.saveVtk(file_name) print "...test join OK" diff --git a/doc/pyplots/test_make_cart_grid.py b/doc/pyplots/test_make_cart_grid.py index b0bfb3f..daca858 100644 --- a/doc/pyplots/test_make_cart_grid.py +++ b/doc/pyplots/test_make_cart_grid.py @@ -45,6 +45,6 @@ nk = 8 grid = doc.makeCartesian(orig, dx, dy, dz, ni, nj, nk) file_name = os.path.join(os.environ['TMP'], 'grille_cartesienne.vtk') -grid.saveVtk(file_name) +#### grid.saveVtk(file_name) print "...test grille cartesienne OK" diff --git a/doc/pyplots/test_make_cyl_grid.py b/doc/pyplots/test_make_cyl_grid.py index 942efeb..fde7d71 100644 --- a/doc/pyplots/test_make_cyl_grid.py +++ b/doc/pyplots/test_make_cyl_grid.py @@ -57,7 +57,7 @@ for i in range(2): c2.getHexa(base2 + i).setScalar(5) file_name = os.path.join(os.environ['TMP'], 'grilles_cylindriques.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) print "...test grille cylindrique OK" diff --git a/doc/pyplots/test_make_cylinder.py b/doc/pyplots/test_make_cylinder.py index ed7e86b..aed65c6 100644 --- a/doc/pyplots/test_make_cylinder.py +++ b/doc/pyplots/test_make_cylinder.py @@ -45,6 +45,6 @@ nl = height elts = doc.makeCylinder(cyl, vb, nr, na, nl) file_name = os.path.join(os.environ['TMP'], 'cylindre.vtk') -elts.saveVtk(file_name) +#### elts.saveVtk(file_name) print "...test cylindre OK" diff --git a/doc/pyplots/test_make_elmts_transform.py b/doc/pyplots/test_make_elmts_transform.py index 3b18eff..f3f75d0 100644 --- a/doc/pyplots/test_make_elmts_transform.py +++ b/doc/pyplots/test_make_elmts_transform.py @@ -39,18 +39,18 @@ grid = doc.makeCartesian1(orig, dirVr, size_x, size_y, size_z, 0, 0, orig.setScalar(2) file_name = os.path.join(os.environ['TMP'], 'transfo0.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) devant = doc.addVector(5, 0, 0) grid2 = doc.makeTranslation(grid, devant) file_name = os.path.join(os.environ['TMP'], 'transfo_translation.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) grid4 = doc.makeRotation(grid2, orig, dirVr, 45) file_name = os.path.join(os.environ['TMP'], 'transfo_rotation.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) print "...test make elements by transforming elements OK" diff --git a/doc/pyplots/test_make_pipe.py b/doc/pyplots/test_make_pipe.py index 7679546..ed44ec8 100644 --- a/doc/pyplots/test_make_pipe.py +++ b/doc/pyplots/test_make_pipe.py @@ -46,6 +46,6 @@ nl = 5 elts = doc.makePipe(pi, vb, nr, na, nl) file_name = os.path.join(os.environ['TMP'], 'pipe.vtk') -elts.saveVtk(file_name) +#### elts.saveVtk(file_name) print "...test pipe OK" diff --git a/doc/pyplots/test_make_spher_grid.py b/doc/pyplots/test_make_spher_grid.py index da5f256..009af72 100644 --- a/doc/pyplots/test_make_spher_grid.py +++ b/doc/pyplots/test_make_spher_grid.py @@ -45,6 +45,6 @@ grid = doc.makeSpherical(orig, direction, n, k) file_name = os.path.join(os.environ['TMP'], 'grille_spherique.vtk') -grid.saveVtk(file_name) +#### grid.saveVtk(file_name) print "...test grille spherique OK" diff --git a/doc/pyplots/test_prism_quads.py b/doc/pyplots/test_prism_quads.py index 4366fea..6e23d85 100644 --- a/doc/pyplots/test_prism_quads.py +++ b/doc/pyplots/test_prism_quads.py @@ -51,6 +51,6 @@ vec = doc.addVector(1, 1, 1) elts = doc.prismQuads(liste, vec, 5) file_name = os.path.join(os.environ['TMP'], 'prisme.vtk') -elts.saveVtk(file_name) +#### elts.saveVtk(file_name) print "...test prism OK" diff --git a/doc/pyplots/test_propagation.py b/doc/pyplots/test_propagation.py index 0e6cb33..e5b6b00 100644 --- a/doc/pyplots/test_propagation.py +++ b/doc/pyplots/test_propagation.py @@ -54,7 +54,7 @@ for nro in range(doc.countPropagation()): file_name = os.path.join(os.environ['TMP'], 'propagation.vtk') -doc.saveVtk(file_name) +#### doc.saveVtk(file_name) print "...test propagation OK" diff --git a/doc/python.rst b/doc/python.rst index c7c6fd2..de7d99b 100644 --- a/doc/python.rst +++ b/doc/python.rst @@ -13,6 +13,7 @@ By the links below you can find sample scripts for all operations provided by He tui_component.rst tui_document.rst + tui_elements.rst tui_vertex.rst tui_edge.rst tui_quadrangle.rst @@ -24,14 +25,19 @@ By the links below you can find sample scripts for all operations provided by He tui_cartgrid.rst tui_cylgrid.rst tui_sphergrid.rst + tui_hemisphere_rind.rst tui_remove.rst tui_cut_hexa.rst tui_prism_join_quad.rst tui_merge_elmts.rst tui_disc_elmts.rst tui_make_elmts.rst + tui_make_symmetry.rst tui_modify_elmts.rst + tui_quad_revolution.rst + tui_association.rst tui_asso_quad_to_geom.rst + tui_asso_vertex_to_geom.rst tui_groups.rst tui_discret_law.rst tui_propag.rst diff --git a/doc/test_doc/cut_hexa/cut_hexa.py b/doc/test_doc/cut_hexa/cut_hexa.py new file mode 100644 index 0000000..bf69e94 --- /dev/null +++ b/doc/test_doc/cut_hexa/cut_hexa.py @@ -0,0 +1,21 @@ +####### Test for Cut Hexa ############### + +import hexablock + + +doc = hexablock.addDocument("default") + +size_x = 2 +size_y = 1 +size_z = 1 + +orig = doc.addVertex(0, 0, 0) +dirVr = doc.addVector(1, 1, 1) +grid = doc.makeCartesian1(orig, dirVr, size_x, size_y, size_z, 0, 0, 0) + +##### doc.saveVtk ("hexa.vtk") + +arete = grid.getEdgeK(0, 0, 0) +doc.cut(arete, 1) + +##### doc.saveVtk ("cut_hexa.vtk") diff --git a/doc/test_doc/cylinder_pipe/make_cylinder.py b/doc/test_doc/cylinder_pipe/make_cylinder.py new file mode 100644 index 0000000..ffe4cf3 --- /dev/null +++ b/doc/test_doc/cylinder_pipe/make_cylinder.py @@ -0,0 +1,22 @@ + +####### Make Cylinder Test ########## + +import hexablock + + +doc = hexablock.addDocument ("default") + +base = doc.addVertex(0, 0, 0) +direction = doc.addVector(0, 0, 1) +radius = 4 +height = 5 + +cyl = doc.addCylinder(base, direction, radius, height) + +vb = doc.addVector(1, 0, 0) +nr = radius +na = 9 +nl = height +elts = doc.makeCylinder(cyl, vb, nr, na, nl) + +##### doc.saveVtk ("make_cylinder.vtk") diff --git a/doc/test_doc/cylinder_pipe/make_cylinders.py b/doc/test_doc/cylinder_pipe/make_cylinders.py new file mode 100644 index 0000000..99b531b --- /dev/null +++ b/doc/test_doc/cylinder_pipe/make_cylinders.py @@ -0,0 +1,23 @@ + +####### Make Cylinders Test ########## + +import hexablock + + +doc = hexablock.addDocument ("default") + +ori1 = doc.addVertex ( 0, 0, 0) +ori2 = doc.addVertex (-5, 0, 5) +vz = doc.addVector ( 0, 0, 1) +vx = doc.addVector ( 1 ,0, 0) + +nr1 = 2 +nl1 = 10 +nr2 = 1 +nl2 = 10 + +cyl1 = doc.addCylinder (ori1, vz, nr1, nl1) +cyl2 = doc.addCylinder (ori2, vx, nr2, nl2) +elts = doc.makeCylinders (cyl1, cyl2) + +##### doc.saveVtk ("make_cylinders.vtk") diff --git a/doc/test_doc/cylinder_pipe/make_pipe.py b/doc/test_doc/cylinder_pipe/make_pipe.py new file mode 100644 index 0000000..fe6567e --- /dev/null +++ b/doc/test_doc/cylinder_pipe/make_pipe.py @@ -0,0 +1,23 @@ + +####### Make Pipe Test ########## + +import hexablock + +doc = hexablock.addDocument ("default") + +orig = doc.addVertex(50, 0, 0) +vz = doc.addVector(0, 0, 1) +int_radius = 3 +ext_radius = 4 +height = 5 + +pipe = doc.addPipe(orig, vz, int_radius, ext_radius, height) + +vb = doc.addVector(1, 0, 0) +nr = 4 +na = 9 +nl = 5 + +elts = doc.makePipe(pipe, vb, nr, na, nl) + +##### doc.saveVtk ("make_pipe.vtk") diff --git a/doc/test_doc/cylinder_pipe/make_pipes.py b/doc/test_doc/cylinder_pipe/make_pipes.py new file mode 100644 index 0000000..5a1b72b --- /dev/null +++ b/doc/test_doc/cylinder_pipe/make_pipes.py @@ -0,0 +1,25 @@ + +####### Make Pipes Test ########## + +import hexablock + + +doc = hexablock.addDocument ("default") + +ori1 = doc.addVertex ( 0, 0, 0) +ori2 = doc.addVertex (-5, 0, 5) +vz = doc.addVector ( 0, 0, 1) +vx = doc.addVector ( 1 ,0, 0) + +nr1 = 2 +ni1 = 1 +nl1 = 10 +nr2 = 1 +ni2 = 0.5 +nl2 = 10 + +pipe1 = doc.addPipe (ori1, vz, ni1, nr1, nl1) +pipe2 = doc.addPipe (ori2, vx, ni2, nr2, nl2) +elts = doc.makePipes (pipe1, pipe2) + +##### doc.saveVtk ("make_pipes.vtk") diff --git a/doc/test_doc/edge/edge.py b/doc/test_doc/edge/edge.py new file mode 100644 index 0000000..2271436 --- /dev/null +++ b/doc/test_doc/edge/edge.py @@ -0,0 +1,5 @@ +used_edges = [] + +for i in xrange( doc.countUsedEdge() ): + edge_i = doc.getUsedEdge(i) + used_edges.append(edge_i) diff --git a/doc/test_doc/grid/cartesian_grid.py b/doc/test_doc/grid/cartesian_grid.py new file mode 100644 index 0000000..3b1d829 --- /dev/null +++ b/doc/test_doc/grid/cartesian_grid.py @@ -0,0 +1,20 @@ +####### Test Cartesian Grid ################# + +import hexablock + + +doc = hexablock.addDocument ("default") + +orig = doc.addVertex(0, 0, 0) + +dx = doc.addVector(1, 0, 0) +dy = doc.addVector(0, 1, 0) +dz = doc.addVector(0, 0, 1) + +ni = 15 +nj = 12 +nk = 8 + +grid = doc.makeCartesian(orig, dx, dy, dz, ni, nj, nk) + +##### doc.saveVtk ("cartesian_grid.vtk") diff --git a/doc/test_doc/grid/cylindrical_grid.py b/doc/test_doc/grid/cylindrical_grid.py new file mode 100644 index 0000000..8dd9606 --- /dev/null +++ b/doc/test_doc/grid/cylindrical_grid.py @@ -0,0 +1,30 @@ +####### Test Regular Cylindrical Grid ################# + +import hexablock + + +doc = hexablock.addDocument ("default") + +orig1 = doc.addVertex(0, 0, 0) +orig2 = doc.addVertex(10, 0, 0) +orig3 = doc.addVertex(0, 10, 0) +orig4 = doc.addVertex(10, 10, 0) +orig5 = doc.addVertex(0, 20, 0) +orig6 = doc.addVertex(10, 20, 0) + +vz = doc.addVector(0, 0, 1) +vx = doc.addVector(1, 0, 0) + +dr = 1 +dl = 1 +nr = 2 +nl = 3 + +c1 = doc.makeCylindrical(orig1, vx, vz, dr, 360, dl, nr, 4, nl, True) +c2 = doc.makeCylindrical(orig2, vx, vz, dr, 360, dl, nr, 8, nl, True) +c3 = doc.makeCylindrical(orig3, vx, vz, dr, 270, dl, nr, 8, nl, True) +c4 = doc.makeCylindrical(orig4, vx, vz, dr, 270, dl, nr, 7, nl, True) +c5 = doc.makeCylindrical(orig5, vx, vz, dr, 360, dl, nr, 5, nl, True) +c6 = doc.makeCylindrical(orig6, vx, vz, dr, 360, dl, nr, 6, nl, True) + +##### doc.saveVtk ("cylindrical.vtk") diff --git a/doc/test_doc/grid/irregular_cylindrical.py b/doc/test_doc/grid/irregular_cylindrical.py new file mode 100644 index 0000000..f93302a --- /dev/null +++ b/doc/test_doc/grid/irregular_cylindrical.py @@ -0,0 +1,26 @@ + +####### Make Irregular Cylindrical Test ########## + +import hexablock + + +doc = hexablock.addDocument ("cyl:hexas") + +orig = doc.addVertex (0, 0, 0) +vz = doc.addVector (0, 0, 1) +vx = doc.addVector (1 ,0, 0) + + +tdr = [ 1, 1, 1, 1 ] +tda = [ 45, 45, 45, 45, 45, 45, 45, 45 ] +tdl = [ 1, 1, 1 ] + +tdr = [ 1, 2, 0.5 ] +tda = [ 30, 30, 30, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 30, 30, 30, 10, 10, 10, 10, 10, 10, 10, 10, 10 ] +tdl = [ 1, 2, 3 ] + + +c1 = doc.makeCylindricals (orig, vx,vz, tdr, tda, tdl, False) + +##### doc.saveVtk ("cylindricals.vtk") diff --git a/doc/test_doc/grid/spherical_grid.py b/doc/test_doc/grid/spherical_grid.py new file mode 100644 index 0000000..67aee3e --- /dev/null +++ b/doc/test_doc/grid/spherical_grid.py @@ -0,0 +1,15 @@ +####### Test for spherical grid ########### + +import hexablock + + +doc = hexablock.addDocument ("default") + +orig = doc.addVertex(0, 0, 0) +radius = 5 +n = 2 +k = 1 + +grid = doc.makeSpherical(orig, radius, n, k) + +##### doc.saveVtk ("spherical_grid.vtk") diff --git a/doc/test_doc/grid/spherical_grid2.py b/doc/test_doc/grid/spherical_grid2.py new file mode 100644 index 0000000..8434803 --- /dev/null +++ b/doc/test_doc/grid/spherical_grid2.py @@ -0,0 +1,20 @@ + + +import hexablock + +doc = hexablock.addDocument ("default") + +orig = doc.addVertex(0, 0, 0) + +direction = doc.addVector(1, 1, 1) + +dx = doc.addVector(1, 0, 0) +dy = doc.addVector(0, 1, 0) +dz = doc.addVector(0, 0, 1) + +n = 2 +k = 0.8 + +grid = doc.makeSpherical(orig, dx, dy, dz, n, k) + +##### doc.saveVtk ("spherical_grid2.vtk") diff --git a/doc/test_doc/hemispherical_rind/hemispherical_grid.py b/doc/test_doc/hemispherical_rind/hemispherical_grid.py new file mode 100644 index 0000000..c57e74b --- /dev/null +++ b/doc/test_doc/hemispherical_rind/hemispherical_grid.py @@ -0,0 +1,28 @@ + +####### Hemispherical Grid Test ########## + +import hexablock + + +# ======================================================= test_sphere +def test_sphere () : + + doc = hexablock.addDocument ("default") + + center = doc.addVertex (0,0,0) + radius = 8 + orig = doc.addVertex (0,0,0) + vz = doc.addVector (0,0,1) + vx = doc.addVector (1,0,0) + radhole = 1 + nrad = 3 + nang = 16 + nhaut = 8 + + doc.makeSphere (center, vx, vz, radius, radhole, orig, nrad, nang, nhaut) + doc.saveVtk ("hemispherical.vtk") + return doc + +# ================================================================= Test +doc = test_sphere () + diff --git a/doc/test_doc/hemispherical_rind/partial_hemispherical_grid.py b/doc/test_doc/hemispherical_rind/partial_hemispherical_grid.py new file mode 100644 index 0000000..14a9bce --- /dev/null +++ b/doc/test_doc/hemispherical_rind/partial_hemispherical_grid.py @@ -0,0 +1,30 @@ + +####### Partial Hemispherical Grid Test ########## + +import hexablock + + +# ======================================================= test_part_sphere +def test_part_sphere () : + + doc = hexablock.addDocument ("default") + + center = doc.addVertex (0,0,0) + radius = 8 + orig = doc.addVertex (0,0,-4) + vz = doc.addVector (0,0,1) + vx = doc.addVector (1,0,0) + angle = 90 + radhole = 1 + nrad = 3 + nang = 4 + nhaut = 8 + + doc.makePartSphere (center, vx, vz, radius, radhole, orig, angle, + nrad, nang, nhaut) + ##### doc.saveVtk ("partial_hemispherical.vtk") + return doc + +# ================================================================= Test +doc = test_part_sphere () + diff --git a/doc/test_doc/hemispherical_rind/partial_rind_grid.py b/doc/test_doc/hemispherical_rind/partial_rind_grid.py new file mode 100644 index 0000000..804564f --- /dev/null +++ b/doc/test_doc/hemispherical_rind/partial_rind_grid.py @@ -0,0 +1,30 @@ + +####### Partial Rind Grid Test ########## + +import hexablock + + +# ======================================================= test_part_rind +def test_part_rind () : + + doc = hexablock.addDocument ("default") + + center = doc.addVertex (0,0,0) + radius = 8 + radint = 7 + orig = doc.addVertex (0,0,0) + vz = doc.addVector (0,0,1) + vx = doc.addVector (1,0,0) + angle = 90 + radhole = 1 + nrad = 3 + nang = 14 + nhaut = 8 + + doc.makePartRind (center, vx, vz, radius, radint, radhole, orig, angle, + nrad, nang, nhaut) + ##### doc.saveVtk ("part_rind.vtk") + return doc + +# ================================================================= Begin +doc = test_part_rind () diff --git a/doc/test_doc/hemispherical_rind/rind_grid.py b/doc/test_doc/hemispherical_rind/rind_grid.py new file mode 100644 index 0000000..e01eaa9 --- /dev/null +++ b/doc/test_doc/hemispherical_rind/rind_grid.py @@ -0,0 +1,29 @@ + +####### Rind Grid Test ########## + +import hexablock + + +# ======================================================= test_rind +def test_rind () : + + doc = hexablock.addDocument ("default") + + center = doc.addVertex (0,0,0) + radius = 8 + radint = 7 + orig = doc.addVertex (0,0,0) + vz = doc.addVector (0,0,1) + vx = doc.addVector (1,0,0) + radhole = 1 + nrad = 3 + nang = 16 + nhaut = 8 + + doc.makeRind (center, vx, vz, radius, radint, radhole, orig, + nrad, nang, nhaut) + ##### doc.saveVtk ("rind.vtk") + return doc + +# ================================================================= Test +doc = test_rind () diff --git a/doc/test_doc/hexa/hexa.py b/doc/test_doc/hexa/hexa.py new file mode 100644 index 0000000..80e8dfd --- /dev/null +++ b/doc/test_doc/hexa/hexa.py @@ -0,0 +1,5 @@ +used_hexas = [] + +for i in xrange( doc.countUsedHexa() ): + hexa_i = doc.getUsedHexa(i) + used_hexas.append(hexa_i) diff --git a/doc/test_doc/make_symmetry/make_sym_line.py b/doc/test_doc/make_symmetry/make_sym_line.py new file mode 100644 index 0000000..249058b --- /dev/null +++ b/doc/test_doc/make_symmetry/make_sym_line.py @@ -0,0 +1,40 @@ +######## Make Symmetry Line ######## + +import hexablock + + +# ======================================================= make_grid +def make_grid (doc) : + + ori = doc.addVertex ( 0, 0, 0) + vz = doc.addVector ( 0, 0, 1) + vx = doc.addVector ( 1 ,0, 0) + + dr = 1 + da = 360 + dl = 1 + + nr = 1 + na = 6 + nl = 1 + grid = doc.makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, False) + ##### doc .saveVtk ("cyl_grid.vtk") + return grid + + +# ======================================================= test_sym_line +def test_sym_line () : + + doc = hexablock.addDocument ("default") + grid = make_grid (doc) + + orig = grid.getVertex(3) + dir = doc.addVector (0, 0, 1); + grid2 = doc.makeSymmetryLine (grid, orig, dir) + + ##### doc .saveVtk ("sym_line.vtk") + return doc + + +# ================================================================= Begin +doc = test_sym_line () diff --git a/doc/test_doc/make_symmetry/make_sym_plane.py b/doc/test_doc/make_symmetry/make_sym_plane.py new file mode 100644 index 0000000..a8a40a6 --- /dev/null +++ b/doc/test_doc/make_symmetry/make_sym_plane.py @@ -0,0 +1,39 @@ +######## Make Symmetry Plane ######## + +import hexablock + + +# ======================================================= make_grid +def make_grid (doc) : + + ori = doc.addVertex ( 0, 0, 0) + vz = doc.addVector ( 0, 0, 1) + vx = doc.addVector ( 1 ,0, 0) + + dr = 1 + da = 360 + dl = 1 + + nr = 1 + na = 6 + nl = 1 + grid = doc.makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, False) + ##### doc .saveVtk ("cyl_grid.vtk") + return grid + + +# ======================================================= test_sym_plane +def test_sym_plane () : + + doc = hexablock.addDocument ("default") + grid = make_grid (doc) + + orig = grid.getVertex(3) + dir = doc.addVector (0, 1, 0); + grid2 = doc.makeSymmetryPlane (grid, orig, dir) + + ##### doc .saveVtk ("sym_plane.vtk") + return doc + +# ================================================================= Begin +doc = test_sym_plane () diff --git a/doc/test_doc/make_symmetry/make_sym_point.py b/doc/test_doc/make_symmetry/make_sym_point.py new file mode 100644 index 0000000..54e6300 --- /dev/null +++ b/doc/test_doc/make_symmetry/make_sym_point.py @@ -0,0 +1,40 @@ +######## Make Symmetry Point ######## + +import hexablock + + +# ======================================================= make_grid +def make_grid (doc) : + + ori = doc.addVertex ( 0, 0, 0) + vz = doc.addVector ( 0, 0, 1) + vx = doc.addVector ( 1 ,0, 0) + + dr = 1 + da = 360 + dl = 1 + + nr = 1 + na = 6 + nl = 1 + grid = doc.makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, False) + ##### doc .saveVtk ("cyl_grid.vtk") + return grid + + +# ======================================================= test_sym_point +def test_sym_point () : + + doc = hexablock.addDocument ("default") + grid = make_grid (doc) + + orig = grid.getVertex(3) + grid2 = doc.makeSymmetryPoint (grid, orig) + + ##### doc .saveVtk ("sym_point.vtk") + return doc + + +# ================================================================= Begin +doc = test_sym_point () + diff --git a/doc/test_doc/make_transformation/make_rotation.py b/doc/test_doc/make_transformation/make_rotation.py new file mode 100644 index 0000000..b1454d2 --- /dev/null +++ b/doc/test_doc/make_transformation/make_rotation.py @@ -0,0 +1,20 @@ +####### Test make rotation ############### + +import hexablock + +doc = hexablock.addDocument("default") + +size_x = 1 +size_y = 1 +size_z = 2 + +orig = doc.addVertex(0, 0, 0) +dirVr = doc.addVector(1, 1, 1) + +grid = doc.makeCartesian1(orig, dirVr, size_x, size_y, size_z, 0, 0, 0) +##### grid.saveVtk ("initial.vtk") + +orig.setScalar(2) +grid1 = doc.makeRotation(grid, orig, dirVr, 60) + +##### grid1.saveVtk ("rotation.vtk") diff --git a/doc/test_doc/make_transformation/make_scale.py b/doc/test_doc/make_transformation/make_scale.py new file mode 100644 index 0000000..b359923 --- /dev/null +++ b/doc/test_doc/make_transformation/make_scale.py @@ -0,0 +1,24 @@ +####### Test make scale ############### + +import hexablock + + +doc = hexablock.addDocument ("default") +ori = doc.addVertex ( 0, 0, 0) +vz = doc.addVector ( 0, 0, 1) +vx = doc.addVector ( 1 ,0, 0) + +dr = 1 +da = 360 +dl = 1 + +nr = 1 +na = 6 +nl = 1 + +grid = doc.makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, False) + +dest = doc.addVertex (15, 0, 0) +grid2 = doc.makeScale (grid, dest, 0.5) + +##### doc .saveVtk ("make_scale.vtk") diff --git a/doc/test_doc/make_transformation/make_translation.py b/doc/test_doc/make_transformation/make_translation.py new file mode 100644 index 0000000..89edd7e --- /dev/null +++ b/doc/test_doc/make_transformation/make_translation.py @@ -0,0 +1,21 @@ +####### Test make translation ############### + +import hexablock + +doc = hexablock.addDocument("default") + +size_x = 1 +size_y = 1 +size_z = 2 + +orig = doc.addVertex(0, 0, 0) +dirVr = doc.addVector(1, 1, 1) + +grid = doc.makeCartesian1(orig, dirVr, size_x, size_y, size_z, 0, 0, 0) + +##### doc.saveVtk ("cartesian.vtk") + +devant = doc.addVector(5, 0, 0) +grid1 = doc.makeTranslation(grid, devant) + +##### doc.saveVtk ("translation.vtk") diff --git a/doc/test_doc/prism_quad_join/join_quads.py b/doc/test_doc/prism_quad_join/join_quads.py new file mode 100644 index 0000000..fff637a --- /dev/null +++ b/doc/test_doc/prism_quad_join/join_quads.py @@ -0,0 +1,39 @@ +####### Test for Join Quad ############### + +import hexablock + +doc = hexablock.addDocument("default") + +orig1 = doc.addVertex(0, 0, 0) +dx = doc.addVector(1, 0, 0) +dy = doc.addVector(0, 1, 0) +dz = doc.addVector(0, 0, 1) + +dimx = 11 +dimy = 11 +dimz = 2 +grid1 = doc.makeCartesian(orig1, dx, dy, dz, dimx, dimy, dimz) + +orig2 = doc.addVertex(dimx/2.0, 0, 8) +grid2 = doc.makeCylindrical(orig2, dx, dy, 1, 180, 1, dimz, dimy, + dimx, False) + +mx = dimx/2 +my = dimy/2 +prems = grid1.getQuadIJ(mx, my, dimz) +cible = grid2.getQuadJK(dimz, mx, my) + +v1 = prems.getVertex(0) +v3 = prems.getVertex(1) +v2 = cible.getVertex(1) +v4 = cible.getVertex(2) + +liste = [prems] +liste.extend([grid1.getQuadIJ(nx, my, dimz) for nx in range(dimx) if nx != mx]) +liste.extend([grid1.getQuadIJ(mx, ny, dimz) for ny in range(dimy) if ny != my]) + +height = 5 + +elts = doc.joinQuads(liste, cible, v1, v2, v3, v4, height) + +##### elts.saveVtk ("join_quads.vtk") diff --git a/doc/test_doc/prism_quad_join/prism_quads.py b/doc/test_doc/prism_quad_join/prism_quads.py new file mode 100644 index 0000000..0bbd9bf --- /dev/null +++ b/doc/test_doc/prism_quad_join/prism_quads.py @@ -0,0 +1,29 @@ +####### Test for Prism Quad ############### + +import hexablock + + +doc = hexablock.addDocument("default") + +orig = doc.addVertex(0, 0, 0) +dx = doc.addVector(1, 0, 0) +dy = doc.addVector(0, 1, 0) +dz = doc.addVector(0, 0, 1) + +dimx = 11 +dimy = 11 +dimz = 2 +grid = doc.makeCartesian(orig, dx, dy, dz, dimx, dimy, dimz) + +mx = dimx/2 +my = dimy/2 +prems = grid.getQuadIJ(mx, my, dimz) + +liste = [prems] +liste.extend([grid.getQuadIJ(nx, my, dimz) for nx in range(dimx) if nx != mx]) +liste.extend([grid.getQuadIJ(mx, ny, dimz) for ny in range(dimy) if ny != my]) + +vec = doc.addVector(1, 1, 1) +elts = doc.prismQuads(liste, vec, 5) + +##### elts.saveVtk ("prism_quad.vtk") diff --git a/doc/test_doc/prism_quad_join/prism_quads_vec.py b/doc/test_doc/prism_quad_join/prism_quads_vec.py new file mode 100644 index 0000000..361e8fd --- /dev/null +++ b/doc/test_doc/prism_quad_join/prism_quads_vec.py @@ -0,0 +1,32 @@ +####### Test prismQuadsVec ############### + +import hexablock + +doc = hexablock.addDocument("prism_vec") + +ori = doc.addVertex ( 0, 0, 0) +vx = doc.addVector ( 1 ,0, 0) +vz = doc.addVector ( 0, 0, 1) + +dr = 1 +da = 360 +dl = 1 + +nr = 1 +na = 6 +nl = 1 + +grid = doc.makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, False) + +liste = [ ] +for nx in range (nr) : + for ny in range (na) : + cell = grid.getQuadIJ (nx, ny, nl) + liste.append (cell); + +axis = doc.addVector (1, 1, 1); +hauteurs = [1, 3, 7, 15] + +elts = doc.prismQuadsVec (liste, axis, hauteurs, 0) + +##### elts.saveVtk("prism_quads_vec.vtk") diff --git a/doc/test_doc/quad/quad.py b/doc/test_doc/quad/quad.py new file mode 100644 index 0000000..5b715ea --- /dev/null +++ b/doc/test_doc/quad/quad.py @@ -0,0 +1,5 @@ +used_quads = [] + +for i in xrange( doc.countUsedQuad() ): + quad_i = doc.getUsedQuad(i) + used_quads.append(quad_i) diff --git a/doc/test_doc/quad_revolution/make_grid.py b/doc/test_doc/quad_revolution/make_grid.py new file mode 100644 index 0000000..23e5e91 --- /dev/null +++ b/doc/test_doc/quad_revolution/make_grid.py @@ -0,0 +1,25 @@ +#### Make a grid and get its quads ##### + +import hexablock + +doc = hexablock.addDocument ("default") + +ori = doc.addVertex ( 0, 0, 0) +vx = doc.addVector ( 1 ,0, 0) +vz = doc.addVector ( 0, 0, 1) + +dr = 1 +da = 360 +dl = 1 + +grid = doc.makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, False) + +nr = 1 +na = 6 +nl = 1 + +liste = [ ] +for nx in range (nr) : + for ny in range (na) : + cell = grid.getQuadIJ (nx, ny, nl) + liste.append (cell); diff --git a/doc/test_doc/quad_revolution/revolution.py b/doc/test_doc/quad_revolution/revolution.py new file mode 100644 index 0000000..df34386 --- /dev/null +++ b/doc/test_doc/quad_revolution/revolution.py @@ -0,0 +1,65 @@ + +#### Quad Revolution Test ##### + +import hexablock +import os + + +# ================================================================= save_schema +class FileVtk : + def __init__ (self, doc, radical): + self.document = doc + self.count = 0 + self.radical = radical + + def save (self) : + """ + Save the model in a vtk file + """ + self.count += 1 + file_name = os.path.join(self.radical + str(self.count) + '.vtk') + ##### self.document.saveVtk(file_name) + +# ======================================================= make_grid +def make_grid (doc, nr, na, nl) : + + ori = doc.addVertex ( 0, 0, 0) + vx = doc.addVector ( 1 ,0, 0) + vz = doc.addVector ( 0, 0, 1) + + dr = 1 + da = 360 + dl = 1 + + grid = doc.makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, False) + return grid + + +# ========================================================== test_revolution +def test_revolution () : + doc = hexablock.addDocument ("default") + vtk = FileVtk (doc, "Revolution"); + nr = 1 + na = 6 + nl = 1 + grid = make_grid (doc, nr, na, nl) + vtk.save () + + liste = [ ] + for nx in range (nr) : + for ny in range (na) : + cell = grid.getQuadIJ (nx, ny, nl) + liste.append (cell); + + center = doc.addVertex (0, -10, 0); + axis = doc.addVector (1, 0, 0); + angles = [5, 10, 15, 20, 30, 20, 15, 10, 5 ] + + vtk.save () + bloc = doc.revolutionQuads (liste, center, axis, angles); + vtk.save () + return doc + +# ================================================================= Test +doc = test_revolution () + diff --git a/doc/test_doc/replace_hexa/replace_hexa.py b/doc/test_doc/replace_hexa/replace_hexa.py new file mode 100644 index 0000000..3861196 --- /dev/null +++ b/doc/test_doc/replace_hexa/replace_hexa.py @@ -0,0 +1,66 @@ +####### Test replace hexa ############### + +import hexablock + +doc = hexablock.addDocument ("default") + + +# Hexa : Grid construction + +orig = doc.addVertex ( 0, 0, 0) +vx = doc.addVector ( 1 ,0, 0) +vy = doc.addVector ( 0, 1, 0) +vz = doc.addVector ( 0, 0, 1) + +size_x = 3 +size_y = 3 +size_z = 3 + +grid = doc.makeCartesian (orig, vx, vy, vz, size_x, size_y, size_z) + +c1 = grid.getVertexIJK (1, 2, size_z) +c2 = grid.getVertexIJK (1, 1, size_z) +c3 = grid.getVertexIJK (2, 1, size_z) + + +# Hexa : Hexa construction + +pa1 = doc.addVertex (-1, -1, 0) +pb1 = doc.addVertex ( 1, -1, 0) +pc1 = doc.addVertex ( 1, 1, 0) +pd1 = doc.addVertex (-1, 1, 0) + +pa2 = doc.addVertex (-2, -2, 0) +pb2 = doc.addVertex ( 2, -2, 0) +pc2 = doc.addVertex ( 2, 2, 0) +pd2 = doc.addVertex (-2, 2, 0) + +edab1 = doc.addEdge (pa1, pb1) +edbc1 = doc.addEdge (pb1, pc1) +edcd1 = doc.addEdge (pc1, pd1) +edda1 = doc.addEdge (pd1, pa1) + +edab2 = doc.addEdge (pa2, pb2) +edbc2 = doc.addEdge (pb2, pc2) +edcd2 = doc.addEdge (pc2, pd2) +edda2 = doc.addEdge (pd2, pa2) + +edaa = doc.addEdge (pa1, pa2) +edbb = doc.addEdge (pb1, pb2) +edcc = doc.addEdge (pc1, pc2) +eddd = doc.addEdge (pd1, pd2) + +qpattern = [] +qpattern.append (doc.addQuad (edab1, edbc1, edcd1, edda1)) +qpattern.append (doc.addQuad (edab1, edbb, edab2, edaa)) +qpattern.append (doc.addQuad (edbc1, edcc, edbc2, edbb)) +qpattern.append (doc.addQuad (edcd1, eddd, edcd2, edcc)) +qpattern.append (doc.addQuad (edda1, edaa, edda2, eddd)) + +##### doc.saveVtk ("replace0.vtk") + +# Hexa replacement (on the grid) +doc.replace (qpattern, pd2,c1, pa2,c2, pb2,c3) + +##### doc.saveVtk ("replace1.vtk") + diff --git a/doc/test_doc/test_cone/test_cone.py b/doc/test_doc/test_cone/test_cone.py new file mode 100644 index 0000000..1662a46 --- /dev/null +++ b/doc/test_doc/test_cone/test_cone.py @@ -0,0 +1,50 @@ + +import hexablock + + + +doc = hexablock.addDocument ("test_cone") + +orig = doc.addVertex (0, 0, 0) +ori2 = doc.addVertex (0, 0, 10) +vz = doc.addVector (0, 0, 1) +vx = doc.addVector (1 ,0, 0) + +rad1 = 2.0 +rad2 = 1.0 +height = 5.0 +angle = 270.0 +hollow = False + +nr = 2 +na = 8 +nl = 1 + +c1 = doc.makeCylindrical (orig, vx,vz, rad1, angle, height, nr,na,nl, hollow) +c2 = doc.makeCylindrical (ori2, vx,vz, rad2, angle, height, nr,na,nl, hollow) + +vh0 = c2.getVertexIJK (0, 0, 0) +vh1 = c2.getVertexIJK (1, 0, 0) + +vb0 = c1.getVertexIJK (0, 0, nl) +vb1 = c1.getVertexIJK (1, 0, nl) + +qcible = c2.getQuadIJ (0, 0, 0) +qliste = [] +for ni in range (nr) : + for nj in range (na) : + quad = c1.getQuadIJ (ni, nj, nl) + qliste.append (quad) + +## Join quads to make a cone between the 2 cylinders +doc.joinQuads (qliste, qcible, vb0, vh0, vb1, vh1, 1) + +### -------------------- Mesh +law = doc.addLaw ("Uniform", 4) + +for np in range(doc.countPropagation()): + propa = doc.getPropagation (np) + propa.setLaw (law) + +mesh_hexas = hexablock.mesh(doc) + diff --git a/doc/test_doc/update_tests.sh b/doc/test_doc/update_tests.sh new file mode 100755 index 0000000..b8906f3 --- /dev/null +++ b/doc/test_doc/update_tests.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# Comm : Update python procedures + +start=`dirname $0` +target=`cd $start/../../src/TEST_PY/documentation ; pwd` +start=`cd $start ; pwd` + +cd $start +for rep in * + do + if ( [ -d $start/$rep ] ) then + mkdir -p $target/$rep + for fic in $rep/*.py + do + if ( [ ! -f $target/$fic ] ) then + echo " ____________________________ Add File : $fic" + cp $fic $target/$rep/ + else + diff=`diff -q $fic $target/$rep/` + if ( [ "$diff" ] ) then + echo " ---------------------------- Update : $fic" + cp $fic $target/$rep/ + else + echo " . . . . . . . . . . . Identical files : $fic" + fi + fi + done + fi + done + diff --git a/doc/test_doc/vertex/vertex.py b/doc/test_doc/vertex/vertex.py new file mode 100644 index 0000000..80f3701 --- /dev/null +++ b/doc/test_doc/vertex/vertex.py @@ -0,0 +1,5 @@ +used_vertices = [] + +for i in xrange( doc.countUsedVertex() ): + vertex_i = doc.getUsedVertex(i) + used_vertices.append(vertex_i) diff --git a/doc/tui_asso_quad_to_geom.rst b/doc/tui_asso_quad_to_geom.rst index 1473ed9..0760d5a 100644 --- a/doc/tui_asso_quad_to_geom.rst +++ b/doc/tui_asso_quad_to_geom.rst @@ -74,4 +74,38 @@ Associate a closed line:: l = doc.associateClosedLine(mfirst, mstart, mline, gstart, pstart, gline) +.. _tuiassocfacenote: + +Note for face association +========================= + +Face association (implicite or explicite) is not necessary for: + +- planar faces, +- cylindrical faces, +- conical faces. + +Only edges association (implicite) on segments or arcs of cirle is necessary. + +The following example show a model of block on which there isn't faces association but only +implicite edges association on arcs of circle. + + +Example +------- + +.. literalinclude:: test_doc/test_cone/test_cone.py + :linenos: + + +Result +------ + +.. image:: _static/cone_mesh.png + :align: center + +.. centered:: + Cone mesh + + GUI command: :ref:`guiassoquadtogeom` diff --git a/doc/tui_asso_vertex_to_geom.rst b/doc/tui_asso_vertex_to_geom.rst new file mode 100644 index 0000000..dcaad5e --- /dev/null +++ b/doc/tui_asso_vertex_to_geom.rst @@ -0,0 +1,45 @@ +:tocdepth: 3 + +.. _tuiassovertex2: + +======================================== +TUI: Definition of point of the geometry +======================================== + +Firt you need to define the Geom point you want to associate your vertex to. + + +Define a point by its coordinates:: + + geom_object_vertex = geompy.MakeVertex(X, Y, Z) + +Define a point by reference:: + + geom_object_vertex = geompy.MakeVertexWithRef(Reference, X,Y,Z) + +Define a point by an Edge and a Parameter:: + + geom_object_vertex = geompy.MakeVertexOnCurve(Edge,Parameter) + +Define a point by an Edge and a Length:: + + geom_object_vertex = geompy.MakeVertexOnCurveByLength(Edge,Length,StartPoint=None) + +Define a point by an Edge and Coordinates:: + + geom_object_vertex = geompy.MakeVertexOnCurveByCoord(Edge,X,Y,Z) + +Define a point by intersection of two Lines or Wires (or a Wire and a Line):: + + geom_object_vertex = geompy.MakePointOnLinesIntersection(myLine1,myWire1) + +Define a point by its position (U-V parameters) on a face:: + + geom_object_vertex = geompy.MakeVertexOnSurface(myFace,myUParameter,myVParameter) + +Define a point by its position (Coordinates) on a face:: + + geom_object_vertex = geompy.MakeVertexOnSurface(myFace,X,Y,Z) + + +GUI: :ref:`guiassovertex` diff --git a/doc/tui_association.rst b/doc/tui_association.rst new file mode 100644 index 0000000..1191b92 --- /dev/null +++ b/doc/tui_association.rst @@ -0,0 +1,21 @@ +:tocdepth: 3 + +.. _tuiassocs: + +============ +Associations +============ + +To remove an element's association(s):: + + em.clearAssociation() + +**em** can be a document: + + *clearAssociation()* remove all associations of the elements in the document. + +**em** can be a vertex, an edge, a quad or a set of elements: + + in this case, *clearAssociation()* remove all associations of the given type. + +GUI command: :ref:`guiassocs` \ No newline at end of file diff --git a/doc/tui_blocks_for_cyl_pipe.rst b/doc/tui_blocks_for_cyl_pipe.rst index 3df400b..c419a81 100644 --- a/doc/tui_blocks_for_cyl_pipe.rst +++ b/doc/tui_blocks_for_cyl_pipe.rst @@ -7,14 +7,16 @@ Make blocks for a cylinder and a pipe ===================================== +.. _tuimakecylinder: + Make blocks for a cylinder ========================== -:: +.. code-block:: python - elts = doc.makeCylinder(cyl, vb, nr, na, nl) + elts = doc.makeCylinder(cyl, vb, nr, na, nl) -cyl: cylinder +cyl: cylinder built using *addCylinder()* function (:ref:`tuicylinder`) vb: vector on the base of the cylinder to start hexahedra. @@ -24,95 +26,119 @@ na: number of angular section. nl: number of blocks along the axis of the cylinder. +Operations on *elts*: :ref:`tuielements2` + The result is an array of hexahedra ranked first by following the radial direction and the angular direction, then according to the layers in the cylinder axis. -Example -------- - -:: - - import hexablock - doc = hexablock.addDocument() - - base = doc.addVertex(0, 0, 0) - direction = doc.addVector(0, 0, 1) - radius = 4 - height = 5 +Example of cylinder construction +-------------------------------- - cyl = doc.addCylinder(base, direction, radius, height) +.. literalinclude:: test_doc/cylinder_pipe/make_cylinder.py + :linenos: - vb = doc.addVector(1, 0, 0) - nr = radius - na = 9 - nl = height - elts = doc.makeCylinder(cyl, vb, nr, na, nl) -.. image:: _static/cylinder.png +.. image:: _static/make_cylinder.png :align: center .. centered:: Cylinder + +.. _tuimakecylinders: + Make blocks for cylinders ========================= -:: +.. code-block:: python + + elts = doc.makeCylinders (cylinder1, cylinder2) + +Operations on *elts*: :ref:`tuielements2` + +Construction of an element from 2 cylinders: - elts = doc.makeCylinders(cyl1, cyl2) +.. literalinclude:: test_doc/cylinder_pipe/make_cylinders.py + :linenos: + +.. image:: _static/make_cylinders.png + :align: center + +.. centered:: + Element from 2 cylinders + The result is an array of hexahedral. +.. _tuimakepipe: + Make blocks for a pipe ====================== -:: +.. code-block:: python elts = doc.makePipe(pi, vb, nr, na, nl) +pi: pipe built using *addPipe()* function (:ref:`tuipipe`) + +vb: vector on the base of the pipe to start hexahedra. + +nr: number of blocks on radial. + +na: number of angular section. + +nl: number of blocks along the axis of the pipe. + +Operations on *elts*: :ref:`tuielements2` + The result is an array of hexahedral arranged in layers following the first radial and angular layers, and finally the axial layers. -Example -------- - -:: - import hexablock - doc = hexablock.addDocument() +Example of pipe construction +---------------------------- - orig = doc.addVertex(50, 0, 0) - vz = doc.addVector(0, 0, 1) - int_radius = 3 - ext_radius = 4 - height = 5 - pi = doc.addPipe(orig, vz, int_radius, ext_radius, height) +.. literalinclude:: test_doc/cylinder_pipe/make_pipe.py + :linenos: - vb = doc.addVector(1, 0, 0) - nr = 4 - na = 9 - nl = 5 - elts = doc.makePipe(pi, vb, nr, na, nl) -.. image:: _static/pipe.png +.. image:: _static/make_pipe.png :align: center .. centered:: Pipe +.. _tuimakepipes: + Make blocks for pipes ===================== -:: +.. code-block:: python + + elts = doc.makePipes (pipe1, pipe2) - elts = doc.makePipes(p1, p2) +Operations on *elts*: :ref:`tuielements2` + +Construction of an element from 2 pipes: + + +.. literalinclude:: test_doc/cylinder_pipe/make_pipes.py + :linenos: + + +.. image:: _static/make_pipes.png + :align: center + +.. centered:: + Element from 2 pipes The result is an array of hexahedra where we first find hexahedra of the first pipe and the second pipe. Each pipe range hexahedra following first radial layers and angular layers, and finally the axial layers. +Operations on *elts*: :ref:`tuielements2` GUI command: :ref:`guiblockscylinderpipe` diff --git a/doc/tui_cartgrid.rst b/doc/tui_cartgrid.rst index 3e7e4fa..e1640a3 100644 --- a/doc/tui_cartgrid.rst +++ b/doc/tui_cartgrid.rst @@ -10,126 +10,35 @@ Make cartesian grids To add a cartesian grid to the model, the following data are required: - the vertex of the initial hexahedron: *pt* -- the vectors corresponding to the diametrically opposite vertices to the initial vertex: *vx, vy, vz* +- the vector corresponding to the diametrically opposite vertex to the initial vertex: *vx, vy, vz* - the number of repetition of this hexahedra along the three axes: *ni, nj, nk* Make a Cartesian grid:: elts = doc.makeCartesian(pt, vx, vy, vz, ni, nj, nk) -or:: +or: + - the vertex of the initial hexahedron: *pt* + - the vector corresponding to the diametrically opposite vertex to the initial vertex + - the coordinates of the vector *vec1* on x, y and z: *px, py, pz* + - the number of repetition of this hexahedra along the three axes: *mx, my, mz* - elts = doc.makeCartesian1(pt, vec1, px, py, pz, mx, my, mz) - - -Access to the number of elements of the grid:: - - vn = elts.countVertex() - en = elts.countEdge() - qn = elts.countQuad() - hn = elts.countHexa() - -Access to all elements of the grid:: - - vi = elts.getVertex(i) - ej = elts.getEdge(j) - qk = elts.getQuad(k) - hl = elts.getHexa(l) - -Specialized access to all vertices of the grid:: - - ve_xyz = elts.getVertexIJK(i, j, k) - - with: - 0 <= i < ni+1 - 0 <= j < nj+1 - 0 <= k < nk+1 - -Specialized access to all edges // vx axis of the grid:: - - ed_a = elts.getEdgeI(i, j, k) - - with: - 0 <= i < ni - 0 <= j < nj+1 - 0 <= k < nk+1 - -Specialized access to all edges // vy axis of the grid:: - - ed_b = elts.getEdgeJ(i, j, k) - - with: - 0 <= i < ni+1 - 0 <= j < nj - 0 <= k < nk+1 +.. code-block:: python -Specialized access to all edges // vz axis of the grid:: - - ed_c = elts.getEdgeK(i, j, k) - - with: - 0 <= i < ni+1 - 0 <= j < nj+1 - 0 <= k < nk - -Specialized access to all quadrangles // on plane vx, vy:: - - qu_a = elts.getQuadIJ(i, j, k) - - with: - 0 <= i < ni - 0 <= j < nj - 0 <= k < nk+1 - -Specialized access to all quadrangles // on plane vx, vz:: - - qu_b = elts.getQuadIK(i, j, k) - - with: - 0 <= i < ni - 0 <= j < nj+1 - 0 <= k < nk - -Specialized access to all quadrangles // on plane vy, vz:: - - qu_c = elts.getQuadJK(i, j, k) - - with: - 0 <= i < ni+1 - 0 <= j < nj - 0 <= k < nk + elts = doc.makeCartesian1(pt, vec1, px, py, pz, mx, my, mz) -Specialized access to all hexahedra of the grid:: +Operations on *elts*: :ref:`tuielements2` - he_xyz = elts.getHexaIJK(i, j, k) - - with: - 0 <= i < ni - 0 <= j < nj - 0 <= k < nk Example ------- -:: - - import hexablock - doc = hexablock.addDocument() - - orig = doc.addVertex(0, 0, 0) - - dx = doc.addVector(1, 0, 0) - dy = doc.addVector(0, 1, 0) - dz = doc.addVector(0, 0, 1) - - ni = 15 - nj = 12 - nk = 8 - grid = doc.makeCartesian(orig, dx, dy, dz, ni, nj, nk) +.. literalinclude:: test_doc/grid/cartesian_grid.py + :linenos: -.. image:: _static/cartgrid3.png +.. image:: _static/cartesian_grid.png :align: center .. centered:: diff --git a/doc/tui_component.rst b/doc/tui_component.rst index 2e14385..d35241d 100644 --- a/doc/tui_component.rst +++ b/doc/tui_component.rst @@ -16,7 +16,7 @@ Add a new empty document in the session:: doc = hexablock.addDocument(name) -Add a new document loaded from a "xml" file:: +Add a new document loaded from a *xml* file:: doc2 = hexablock.loadDocument(filename) @@ -24,13 +24,25 @@ Get the number of opened document in the session:: nd = hexablock.countDocument() -Get the document number "i":: +Get the document number *i*:: doc_i = hexablock.getDocument(i) - + Remove a document in the session:: hexablock.removeDocument(doc_i) + +Set the current study:: + + hexablock.SetCurrentStudy(theStudy) + +Get a document from the current study:: + + doc = hexablock.getFromStudy(doc_entry) + +Add a document in the current study:: + + hexablock.addToStudy(doc) A tool to dump a model of block:: diff --git a/doc/tui_cut_hexa.rst b/doc/tui_cut_hexa.rst index 508a0f3..cd943e7 100644 --- a/doc/tui_cut_hexa.rst +++ b/doc/tui_cut_hexa.rst @@ -11,27 +11,30 @@ Cut hexahedra from the model of blocks:: elts = doc.cut(an_edge, nb_of_cuts) +Operations on *elts*: :ref:`tuielements2` + This method enables to cut in two (or more) a series of hexahedra using a series of edges propagation. Example ------- -:: - - import hexablock - doc = hexablock.addDocument() +.. literalinclude:: test_doc/cut_hexa/cut_hexa.py + :linenos: - size_x = 2 - size_y = 1 - size_z = 1 - orig = doc.addVertex(0, 0, 0) - dirVr = doc.addVector(1, 1, 1) +.. image:: _static/non_cut_hexa.png + :align: center - grid = doc.makeCartesian1(orig, dirVr, size_x, size_y, size_z, 0, 0, 0) - arete = grid.getEdgeK(0, 0, 0) +.. centered:: + Initial hexa + + +.. image:: _static/cut_hexa.png + :align: center - doc.cut(arete, 1) +.. centered:: + Cut hexa + GUI command: :ref:`guicuthexa` diff --git a/doc/tui_cyl.rst b/doc/tui_cyl.rst index 245777d..18476b3 100644 --- a/doc/tui_cyl.rst +++ b/doc/tui_cyl.rst @@ -30,5 +30,6 @@ Access to the cylinders of the document:: nc = doc.countCylinder() cylk = doc.getCylinder(ind) +More operations: *Cylinder* inherits :ref:`Element `. GUI command: :ref:`guicylinder` diff --git a/doc/tui_cylgrid.rst b/doc/tui_cylgrid.rst index 0b68dc8..8ef362f 100644 --- a/doc/tui_cylgrid.rst +++ b/doc/tui_cylgrid.rst @@ -7,7 +7,7 @@ Make cylindrical grids ====================== -To add a cylindrical grid, the following data are required: +To add a regular cylindrical grid, the following data are required: - the coordinates (vertex) of the cylinder base center: *pt* - the vectors defining the axis and the direction of the cylinder: *vex, vez* @@ -15,10 +15,23 @@ To add a cylindrical grid, the following data are required: - the radial, angular and axial elements number: *nr, na, nl* - to fill or not the central part of hexahedra: *fill* -Make a cylindrical grid:: +To add an irregular cylindrical grid, the following data are required: + +- the coordinates (vertex) of the cylinder base center: *pt* +- the vectors defining the axis and the direction of the cylinder: *vex, vez* +- the radial, angular and axial sizes: *dr (a list of radius), da (a list of angles), dl (a list of heights)* +- to fill or not the central part of hexahedra: *fill* + +Make a regular cylindrical grid:: elts = doc.makeCylindrical(pt, vex, vez, dr, da, dl, nr, na, nl, fill) +Make an irregular cylindrical grid:: + + elts = doc.makeCylindricals (pt, vex, vez, dr, da, dl, False) + +Operations on *elts*: :ref:`tuielements2` + The result is an array of hexahedra which are arranged along the radial axis first, then the angular axis, then according to the layers @@ -27,55 +40,48 @@ and then possibly hexahedra filling the central part. The filling the central part of the cylinder is made ​accordingly to the two following cases: -.. image:: _static/cyl_grid2.PNG +.. image:: _static/cyl_grid2.png :align: center .. centered:: Filling of the central part of the cylinder in the case the number of angular elements is odd na = 5. -.. image:: _static/cyl_grid1.PNG +.. image:: _static/cyl_grid1.png :align: center .. centered:: Filling of the central part of the cylinder in the case the number of angular elements is even na = 4. -Example -------- -Filling rule is illustrated by different case-tests:: +Example (regular mode) +---------------------- - import hexablock - doc = hexablock.addDocument() +Filling rule is illustrated by different case-tests: - orig1 = doc.addVertex(0, 0, 0) - orig2 = doc.addVertex(10, 0, 0) - orig3 = doc.addVertex(0, 10, 0) - orig4 = doc.addVertex(10, 10, 0) - orig5 = doc.addVertex(0, 20, 0) - orig6 = doc.addVertex(10, 20, 0) - vz = doc.addVector(0, 0, 1) - vx = doc.addVector(1, 0, 0) +.. literalinclude:: test_doc/grid/cylindrical_grid.py + :linenos: - dr = 1 - dl = 1 - nr = 2 - nl = 3 - c1 = doc.makeCylindrical(orig1, vx, vz, dr, 360, dl, nr, 4, nl, True) - c2 = doc.makeCylindrical(orig2, vx, vz, dr, 360, dl, nr, 8, nl, True) - c3 = doc.makeCylindrical(orig3, vx, vz, dr, 270, dl, nr, 8, nl, True) - c4 = doc.makeCylindrical(orig4, vx, vz, dr, 270, dl, nr, 7, nl, True) - c5 = doc.makeCylindrical(orig5, vx, vz, dr, 360, dl, nr, 5, nl, True) - c6 = doc.makeCylindrical(orig6, vx, vz, dr, 360, dl, nr, 6, nl, True) +.. image:: _static/cylindrical_grids.png + :align: center +.. centered:: + Cylindrical Grids (regular) -.. image:: _static/cylgrids.png - :align: center +Example (irregular mode) +------------------------ -.. centered:: - Cylindrical Grids +.. literalinclude:: test_doc/grid/irregular_cylindrical.py + :linenos: +.. image:: _static/irregular_cylindrical.png + :align: center + +.. centered:: + Irregular cylindrical grid + + GUI command: :ref:`guicylgrid` diff --git a/doc/tui_disc_elmts.rst b/doc/tui_disc_elmts.rst index f66c40a..60a7ae9 100644 --- a/doc/tui_disc_elmts.rst +++ b/doc/tui_disc_elmts.rst @@ -8,14 +8,20 @@ Disconnect elements Disconnect a quadrangle:: - elts = doc.disconnectQuad(hexa, qua) + elts = doc.disconnectQuad(hexa, quad) Disconnect an edge:: - elts = doc.disconnectEdge(hexa, edg) + elts = doc.disconnectEdge(hexa, edge) + +Disconnect edges:: + + elts = doc.disconnectEdges(hexas, edges) Disconnect a vertex:: elts = doc.disconnectVertex(hexa, ver) +Operations on *elts*... :ref:`tuielements2` + GUI command: :ref:`guidisconnectelements` diff --git a/doc/tui_discret_law.rst b/doc/tui_discret_law.rst index 71393e7..4ced775 100644 --- a/doc/tui_discret_law.rst +++ b/doc/tui_discret_law.rst @@ -9,6 +9,10 @@ Define a law of discretization Add a new law of discretization in the document:: law_1 = doc.addLaw(name, nb_nodes) + +Add laws on propagations based on min or max segment length:: + + hexablock.addLaws(doc, lg, lgmax) Get the number of the law in the document:: diff --git a/doc/tui_document.rst b/doc/tui_document.rst index 493772f..500596f 100644 --- a/doc/tui_document.rst +++ b/doc/tui_document.rst @@ -29,6 +29,26 @@ Set the tolerance need to find element:: Get the tolerance:: tol = doc.getTolerance() + +Set Debug level (long):: + + doc.setLevel(debug_level) +Removes elements of type Quad Edge or Vertex not belonging to an Hexa:: + doc.purge() + +Associate a shape to the document:: + + doc.setShape(shape) + +Gets the shape associated to the document:: + + doc.getShape() + +Gets the Brep associated to the document:: + + doc.getBrep() + + GUI command: :ref:`guidocument` diff --git a/doc/tui_edge.rst b/doc/tui_edge.rst index bf6193e..1132bea 100644 --- a/doc/tui_edge.rst +++ b/doc/tui_edge.rst @@ -9,10 +9,14 @@ Edges Manage the edges of the document. -Add an edge in the document:: +Add an edge, defined by two vertices, in the document:: edge_12 = doc.addEdge(vertex_1, vertex_2) +Add an edge, defined by one vertex and one vector, in the document:: + + edge_12 = doc.addEdgeVector(vertex, vector) + Get the number of all edges in the document:: sum_a = doc.countEdge() @@ -20,6 +24,10 @@ Get the number of all edges in the document:: Get the number of edges used only in the model of blocks:: sum_u = doc.countUsedEdge() + +Get the edges used by the model of blocks + +.. literalinclude:: test_doc/edge/edge.py Get an edge of the document:: @@ -34,5 +42,6 @@ Find an edge in the document:: edge_f = doc.findEdge(vertex_1, vertex_2) +More operations: *Edge* inherits :ref:`Element `. GUI command: :ref:`guiedge` diff --git a/doc/tui_elements.rst b/doc/tui_elements.rst index c05b111..02bc995 100644 --- a/doc/tui_elements.rst +++ b/doc/tui_elements.rst @@ -7,26 +7,207 @@ Elements ======== -Add an empty set of elements:: +You must be careful with the signification of the word "element", when it is used with singular or plural form : - elts = doc.addElements() + - The class "Element" is a basic class. The classes Vertex, Edge, Quad an Hexa inherit from the Element Class. This class is used to call common function like getName(), setName() ... -Add an element in a set of elements:: + - The class "Elements" (plural) represents a set of Elements (vertices, edges, quads an hexaedras). This class is used to implements grids or result of ome complex operations (join, prism, ...) - elts.addElement(element) -Remove an element in a set of elements:: +.. _tuielement: - elts.removeElement(element) +Element +======= -Remove all elements in a set of elements:: - elts.clearElement() +Set a name of an element:: -Access to the elements of the document:: + elt.setName(name) + +Get a name of an element:: + + elt.getName() + +Print the name of an element:: + + elt.printName() + +Dump an element:: + + elt.dump() + + +.. _tuielements2: + +Elements +======== + +Remove a set of elements from a document:: + + doc.removeElements(elts) + +Number of vertices in a set of elements:: + + nb_vertices = elts.countVertex() + +Number of edges in a set of elements:: + + nb_edges = elts.countEdge() + +Number of quads in a set of elements:: + + nb_quads = elts.countQuad() + +Number of hexahedrons in a set of elements:: + + nb_hexas = elts.countHexa() + +Get the vertex number *i*:: + + vertex_i = elts.getVertex(i) + +Get the edge number *i*:: + + edge_i = elts.getEdge(i) + +Get the quad number *i*:: + + quad_i = elts.getQuad(i) + +Get the hexahedron number *i*:: + + hexa_i = elts.getHexa(i) + +Specialized access to all vertices of a set of elements:: + + ve_xyz = elts.getVertexIJK(i, j, k) + +with: + 0 <= i < ni+1, 0 <= j < nj+1, 0 <= k < nk+1 + +Specialized access to all edges // Vx axis:: + + ed_a = elts.getEdgeI(i, j, k) + +with: + 0 <= i < ni, 0 <= j < nj+1, 0 <= k < nk+1 + +Specialized access to all edges // Vy axis:: + + ed_b = elts.getEdgeJ(i, j, k) + +with: + 0 <= i < ni+1, 0 <= j < nj, 0 <= k < nk+1 + +Specialized access to all edges // Vz axis:: + + ed_c = elts.getEdgeK(i, j, k) + +with: + 0 <= i < ni+1, 0 <= j < nj+1, 0 <= k < nk + +Specialized access to all quadrangles // on plane Vx, Vy:: + + qu_a = elts.getQuadIJ(i, j, k) + +with: + 0 <= i < ni, 0 <= j < nj, 0 <= k < nk+1 + +Specialized access to all quadrangles // on plane Vx, Vz:: + + qu_b = elts.getQuadIK(i, j, k) + +with: + 0 <= i < ni, 0 <= j < nj+1, 0 <= k < nk + +Specialized access to all quadrangles // on plane Vy, Vz:: + + qu_c = elts.getQuadJK(i, j, k) + +with: + 0 <= i < ni+1, 0 <= j < nj, 0 <= k < nk + +Specialized access to all hexahedra:: + + he_xyz = elts.getHexaIJK(i, j, k) + +with: + 0 <= i < ni, 0 <= j < nj, 0 <= k < nk + + +.. _tuicrosselements: + + +Cross Elements +============== + +*CrossElements* inherits *Elements*. So you have all *Elements* functions available to *CrossElements*, +plus the following functions: + + +*part* argument specifies the block of the *cross elements* where to search the vertex, the edge, the quad or the hexa. + +Specialized access to all vertices of a set of elements:: + + ve_xyz = elts.getVertexIJK(part, i, j, k) + +with: + 0 <= i < ni+1, 0 <= j < nj+1, 0 <= k < nk+1 + + +Specialized access to all edges // Vx axis:: + + ed_a = elts.getEdgeI(part, i, j, k) + +with: + 0 <= i < ni, 0 <= j < nj+1, 0 <= k < nk+1 + + +Specialized access to all edges // Vy axis:: + + ed_b = elts.getEdgeJ(part, i, j, k) + +with: + 0 <= i < ni+1, 0 <= j < nj, 0 <= k < nk+1 + + +Specialized access to all edges // Vz axis:: + + ed_c = elts.getEdgeK(part, i, j, k) + +with: + 0 <= i < ni+1, 0 <= j < nj+1, 0 <= k < nk + + +Specialized access to all quadrangles // on plane Vx, Vy:: + + qu_a = elts.getQuadIJ(part, i, j, k) + +with: + 0 <= i < ni, 0 <= j < nj, 0 <= k < nk+1 + + +Specialized access to all quadrangles // on plane Vx, Vz:: + + qu_b = elts.getQuadIK(part, i, j, k) + +with: + 0 <= i < ni, 0 <= j < nj+1, 0 <= k < nk + + +Specialized access to all quadrangles // on plane Vy, Vz:: + + qu_c = elts.getQuadJK(part, i, j, k) + +with: + 0 <= i < ni+1, 0 <= j < nj, 0 <= k < nk + + +Specialized access to all hexahedra:: + + he_xyz = elts.getHexaIJK(part, i, j, k) - nel = doc.countElements() - elts = doc.getElements(index) +with: + 0 <= i < ni, 0 <= j < nj, 0 <= k < nk -GUI command: :ref:`guielements` diff --git a/doc/tui_hemisphere_rind.rst b/doc/tui_hemisphere_rind.rst new file mode 100644 index 0000000..dd9c318 --- /dev/null +++ b/doc/tui_hemisphere_rind.rst @@ -0,0 +1,165 @@ +:tocdepth: 3 + +.. _tuihemisphere: + +======================= +Hemisphere Construction +======================= + +.. _tuihemisphericalgrid: + +Hemispherical Grid +================== + +To create an hemispherical grid in textual mode, you need the following arguments: + +- center : center coordinates of the sphere +- vx : normal vector to the surface of the cross section +- vz : axes of the hole +- radius : radius size of the sphere +- radhole: radius size of the hole +- orig : coordinates of a point on the surface of the cross section +- nrad : number of hexahedra from the center of the sphere +- nang : number of hexahedra along the perimeter of the sphere +- nhaut : number of hexahedra on the height of the sphere + +:: + + elts = doc.makeSphere (center, vx, vz, radius, radhole, orig, nrad, nang, nhaut) + +Operations on *elts*: :ref:`tuielements2` + + +Code Sample +----------- + +.. literalinclude:: test_doc/hemispherical_rind/hemispherical_grid.py + :emphasize-lines: 22 + :linenos: + +Result +------ + +.. image:: _static/hemispherical_grid.png + :align: center + + +.. _tuiparthemisphericalgrid: + +Partial Hemispherical Grid +========================== + +To create a partial hemispherical grid in textual mode, you need the following parameters: + +- center : center coordinates of the sphere +- vx : normal vector to the surface of the cross section +- vz : axes of the hole +- radius : radius size of the sphere +- radhole: radius size of the hole +- orig : coordinates of a point on the surface of the cross section +- angle : fill this field to customize the section (value in degree) +- nrad : number of hexahedra from the center of the sphere +- nang : number of hexahedra along the perimeter of the sphere +- nhaut : number of hexahedra on the height of the sphere + +:: + + elts = doc.makePartSphere (center, vx, vz, radius, radhole, orig, angle, nrad, nang, nhaut) + +Operations on *elts*: :ref:`tuielements2` + + +Code Sample +----------- + +.. literalinclude:: test_doc/hemispherical_rind/partial_hemispherical_grid.py + :emphasize-lines: 23,24 + :linenos: + +Result +------ + +.. image:: _static/partial_hemispherical_grid.png + :align: center + + +.. _tuirindgrid: + +Rind Grid +========= + +To create a rind grid in textual mode, you need the following arguments: + +- center : center coordinates of the sphere +- vx : normal vector to the surface of the cross section +- vz : axes of the hole +- radius : radius size of the sphere +- internal radius: fill this field to create rind +- radhole: radius size of the hole +- orig : coordinates of a point on the surface of the cross section +- nrad : number of hexahedra from the center of the sphere +- nang : number of hexahedra along the perimeter of the sphere +- nhaut : number of hexahedra on the height of the sphere + +:: + + elts = doc.makeRind (center, vx, vz, radius, radint, radhole, orig, nrad, nang, nhaut) + +Operations on *elts*: :ref:`tuielements2` + + +Code Sample +----------- + +.. literalinclude:: test_doc/hemispherical_rind/rind_grid.py + :emphasize-lines: 23,24 + :linenos: + +Result +------ + +.. image:: _static/rind_grid.png + :align: center + + +.. _tuipartrindgrid: + +Partial Rind Grid +================= + +To create a partial rind grid in textual mode, you need the following arguments: + +- center : center coordinates of the sphere +- vx : normal vector to the surface of the cross section +- vz : axes of the hole +- radius : radius size of the sphere +- radint : fill this field to create rind +- radhole: radius size of the hole +- orig : coordinates of a point on the surface of the cross section +- angle : fill this field to customize the section (value in degree) +- nrad : number of hexahedra from the center of the sphere +- nang : number of hexahedra along the perimeter of the sphere +- nhaut : number of hexahedra on the height of the sphere + +:: + + elts = doc.makePartRind (center, vx, vz, radius, radint, radhole, orig, angle, nrad, nang, nhaut) + +Operations on *elts*: :ref:`tuielements2` + + +Code Sample +----------- + +.. literalinclude:: test_doc/hemispherical_rind/partial_rind_grid.py + :emphasize-lines: 24,25 + :linenos: + +Result +------ + +.. image:: _static/partial_rind_grid.png + :align: center + + +GUI command: :ref:`guihemisphere` diff --git a/doc/tui_hexahedron.rst b/doc/tui_hexahedron.rst index e9e4210..67b3f54 100644 --- a/doc/tui_hexahedron.rst +++ b/doc/tui_hexahedron.rst @@ -24,5 +24,47 @@ Get the number of all hexahedra of the document:: Get an hexahedron of the document:: hexa_i = doc.getHexa(i) + +Get a vertex of an hexahedron:: + + vertex_i = hexa_i.getVertex(i) + +Get an edge of an hexahedron:: + + edge_i = hexa_i.getEdge(i) + +Get a quad of an hexahedron:: + + quad_i = hexa_i.getQuad(i) + +Get the number of used hexahedrons in the model of blocks:: + + nb_used_hexa = doc.countUsedHexa() + +Get the hexahedrons used by the model of blocks + +.. literalinclude:: test_doc/hexa/hexa.py + +Find an hexahedron in the document:: + + hexa = doc.findHexa(vertex_1, vertex_2) + +Add an hexahedron with 5 quads:: + + doc.addHexa5Quads (qa, qc, qd, qe, qf) + +Add an hexahedron with 4 quads:: + + doc.addHexa4Quads (qa, qd, qe, qf) + +Add an hexahedron with 3 quads:: + + doc.addHexa3Quads (qa, qd, qe) + +Add an hexahedron with 2 quads:: + + doc.addHexa2Quads (qa, qb) + +More operations: *Hexa* inherits :ref:`Element `. GUI command: :ref:`guihexahedron` diff --git a/doc/tui_make_elmts.rst b/doc/tui_make_elmts.rst index d12c812..014b36a 100644 --- a/doc/tui_make_elmts.rst +++ b/doc/tui_make_elmts.rst @@ -8,35 +8,64 @@ Make elements by transforming elements Rotate and translate for any kind of elements:: - elts = doc.makeTranslation(element, vec) - elts = doc.makeRotation(element, ver, vec, angle) + elts = doc.makeTranslation(elements, vec) + elts = doc.makeRotation(elements, ver, vec, angle) + elts = doc.makeScale (elements, destination_point, k) and "element" could be Vertex, Edge, Quadrangle, Hexahedeon, Vector, Cylinder, Pipe and Elements and the result "elts" is always an object of type "Elements". +Operations on *elts*: :ref:`tuielements2` + + Example -------- +======= + +Translation +----------- + +.. literalinclude:: test_doc/make_transformation/make_translation.py + :linenos: + + +.. image:: _static/make_translation.png + :align: center + +.. centered:: + Translation + + +Rotation +-------- -:: +.. literalinclude:: test_doc/make_transformation/make_rotation.py + :linenos: - import hexablock - doc = hexablock.addDocument() +.. image:: _static/cartesian.png + :align: center - size_x = 1 - size_y = 1 - size_z = 2 +.. centered:: + Initial - orig = doc.addVertex(0, 0, 0) - dirVr = doc.addVector(1, 1, 1) - grid = doc.makeCartesian1(orig, dirVr, size_x, size_y, size_z, 0, 0, 0) - orig.setScalar(2) +.. image:: _static/make_rotation.png + :align: center - devant = doc.addVector(5, 0, 0) - grid2 = doc.makeTranslation(grid, devant) +.. centered:: + Rotation + +Scale +----- - grid4 = doc.makeRotation(grid2, orig, dirVr, 45) +.. literalinclude:: test_doc/make_transformation/make_scale.py + :linenos: +.. image:: _static/make_scale.png + :align: center +.. centered:: + Scaling + + GUI command: :ref:`guimakeelements` diff --git a/doc/tui_make_symmetry.rst b/doc/tui_make_symmetry.rst new file mode 100644 index 0000000..8876463 --- /dev/null +++ b/doc/tui_make_symmetry.rst @@ -0,0 +1,131 @@ +:tocdepth: 3 + + +.. _tuimakesymmetry: + +============= +Make Symmetry +============= + +There are three differents ways to make the symmetry of an element: + +- Symmetry by point +- Symmetry by line +- Symmetry by plane + +.. _guimakesympoint: + +Symmetry by point +================= + +To make the symmetry of an element by point, you need to define: + +- the element +- the symmetry center + +:: + + elts = doc.makeSymmetryPoint (grid, orig) + +Operations on *elts*: :ref:`tuielements2` + +Here is an example where we make the symmetry of a grid: + + +Example +------- + +.. literalinclude:: test_doc/make_symmetry/make_sym_point.py + :emphasize-lines: 32 + :linenos: + +Result +------ + +.. image:: _static/grid.png + :align: center + +.. centered:: + Initial + + +.. image:: _static/make_sym_point.png + :align: center + +.. centered:: + Symmetry of a grid by point + +.. _guimakesymline: + +Symmetry by line +================ + +To make the symmetry of an element by line, you need to define: + +- the element +- a point and a direction to define the line of symmetry + +:: + + elts = doc.makeSymmetryLine (grid, orig, dir) + +Operations on *elts*: :ref:`tuielements2` + + +Example +------- + +Code +---- + +.. literalinclude:: test_doc/make_symmetry/make_sym_line.py + :emphasize-lines: 33 + :linenos: + +Result +------ + +.. image:: _static/make_sym_line.png + :align: center + +.. centered:: + Symmetry of a grid by line + +.. _guimakeplane: + +Symmetry by plane +================= + +To make the symmetry of an element by plane, you need to define: + +- the element +- a point and a direction to define the plane of symmetry + +:: + + elts = doc.makeSymmetryPlane (grid, orig, dir) + +Operations on *elts*: :ref:`tuielements2` + + +Example +------- + +Code +---- + +.. literalinclude:: test_doc/make_symmetry/make_sym_plane.py + :emphasize-lines: 33 + :linenos: + +Result +------ + +.. image:: _static/make_sym_plane.png + :align: center + +.. centered:: + Symmetry of a grid by plane + + +GUI command: :ref:`guimakesymmetry` diff --git a/doc/tui_merge_elmts.rst b/doc/tui_merge_elmts.rst index 673df23..e3a34f8 100644 --- a/doc/tui_merge_elmts.rst +++ b/doc/tui_merge_elmts.rst @@ -18,6 +18,7 @@ where: va1 : vertex of the quadrangle qa to merge with the vertex vb1 of the quadrangle qb. + va2 : vertex of the quadrangle qa to merge with the vertex vb2 of the quadrangle qb. diff --git a/doc/tui_modify_elmts.rst b/doc/tui_modify_elmts.rst index 8092cd9..5457749 100644 --- a/doc/tui_modify_elmts.rst +++ b/doc/tui_modify_elmts.rst @@ -11,5 +11,9 @@ Translate and Rotate for any kind of elements:: doc.performTranslation(elements, vec) doc.performRotation(elements, ver, vec, angle) + doc.performScale (elements, destination_point, k) + +Operations on *elts*: :ref:`tuielements2` + GUI command: :ref:`guimodifyelements` diff --git a/doc/tui_perform_symmetry.rst b/doc/tui_perform_symmetry.rst new file mode 100644 index 0000000..8bd0169 --- /dev/null +++ b/doc/tui_perform_symmetry.rst @@ -0,0 +1,16 @@ +:tocdepth: 3 + +.. _tuimodifysymmetry: + + +=========================== +Modify elements by symmetry +=========================== + +Symmetry modification can be done by *point*, *line* and *plane*:: + + doc.performSymmetryPoint (elements, origin) + doc.performSymmetryLine (elements, origin, direction) + doc.performSymmetryPlane (elements, origin, direction) + +GUI command: :ref:`guimodifysymmetry` \ No newline at end of file diff --git a/doc/tui_pipe.rst b/doc/tui_pipe.rst index 30b231b..3b22101 100644 --- a/doc/tui_pipe.rst +++ b/doc/tui_pipe.rst @@ -14,6 +14,7 @@ To add a pipe, the following data have to be mentioned: - the inner radius - the outer radius + Add a pipe in the document:: p = doc.addPipe(base, direction, int_radius, ext_radius, height) @@ -31,6 +32,7 @@ Access to the pipes of the document:: np = doc.countPipe() pik = doc.getPipe(index) +More operations: *Pipe* inherits :ref:`Element `. GUI command: :ref:`guipipe` diff --git a/doc/tui_prism_join_quad.rst b/doc/tui_prism_join_quad.rst index 07b3e24..104aded 100644 --- a/doc/tui_prism_join_quad.rst +++ b/doc/tui_prism_join_quad.rst @@ -13,57 +13,61 @@ There are two different methods to build hexahedra from quadrangles: - prism from quadrangles - join two sets of quadrangles + +.. _tuiprismquad: + Prism from a quadrangle or quadrangles ====================================== -:: +Make a regular prism:: elts = doc.prismQuad(quad, vec, nb) - elts = doc.prismQuads([ q1, q2, q3 ], vec, nb) + elts = doc.prismQuads(quads_list, vec, nb) + + +Make an irregular prism:: + + elts = doc.prismQuadsVec (quads_list, axis, heights, opt) + +Operations on *elts*: :ref:`tuielements2` + From a list of quadrangles, a set of hexahedra is created. Given the arbitrary nature of the start list, we can not provide additional information on the order of the intermediate elements (vertices, edges, quads) that contains the container-like Elements. -Example -------- -:: +Example (regular mode) +---------------------- - import hexablock - doc = hexablock.addDocument() +.. literalinclude:: test_doc/prism_quad_join/prism_quads.py + :linenos: - orig = doc.addVertex(0, 0, 0) - dx = doc.addVector(1, 0, 0) - dy = doc.addVector(0, 1, 0) - dz = doc.addVector(0, 0, 1) +.. image:: _static/prisme.png + :align: center - dimx = 11 - dimy = 11 - dimz = 2 - grid = doc.makeCartesian(orig, dx, dy, dz, dimx, dimy, dimz) +.. centered:: + Regular Prism Quads - mx = dimx/2 - my = dimy/2 - prems = grid.getQuadIJ(mx, my, dimz) - liste = [prems] - liste.extend([grid.getQuadIJ(nx, my, dimz) for nx in range(dimx) if nx != mx]) - liste.extend([grid.getQuadIJ(mx, ny, dimz) for ny in range(dimy) if ny != my]) +Example (regular mode) +---------------------- - vec = doc.addVector(1, 1, 1) - elts = doc.prismQuads(liste, vec, 5) +.. literalinclude:: test_doc/prism_quad_join/prism_quads_vec.py + :linenos: -.. image:: _static/prisme.png +.. image:: _static/irregular_prism.png :align: center .. centered:: - Prism Quads + Irregular Prism Quads +.. _tuijoinquad: + Join 2 sets of quadrangles ========================== @@ -73,45 +77,14 @@ Join 2 sets of quadrangles elts = doc.joinQuads([ qa1, qa2 ], qb, va1, vb1, va2, vb2, nb) -Example -------- - -:: - - import hexablock - doc = hexablock.addDocument() - - orig1 = doc.addVertex(0, 0, 0) - dx = doc.addVector(1, 0, 0) - dy = doc.addVector(0, 1, 0) - dz = doc.addVector(0, 0, 1) +Operations on *elts*: :ref:`tuielements2` - dimx = 11 - dimy = 11 - dimz = 2 - grid1 = doc.makeCartesian(orig1, dx, dy, dz, dimx, dimy, dimz) - orig2 = doc.addVertex(dimx/2.0, 0, 8) - grid2 = doc.makeCylindrical(orig2, dx, dy, 1, 180, 1, dimz, dimy, - dimx, False) - - mx = dimx/2 - my = dimy/2 - prems = grid1.getQuadIJ(mx, my, dimz) - cible = grid2.getQuadJK(dimz, mx, my) - - v1 = prems.getVertex(0) - v3 = prems.getVertex(1) - v2 = cible.getVertex(1) - v4 = cible.getVertex(2) - - liste = [prems] - liste.extend([grid1.getQuadIJ(nx, my, dimz) for nx in range(dimx) if nx != mx]) - liste.extend([grid1.getQuadIJ(mx, ny, dimz) for ny in range(dimy) if ny != my]) - - height = 5 +Example +------- - elts = doc.joinQuads(liste, cible, v1, v2, v3, v4, height) +.. literalinclude:: test_doc/prism_quad_join/join_quads.py + :linenos: .. image:: _static/join.png diff --git a/doc/tui_propag.rst b/doc/tui_propag.rst index effc2ac..a4d4255 100644 --- a/doc/tui_propag.rst +++ b/doc/tui_propag.rst @@ -36,12 +36,4 @@ Set the way where the law is applied on the propagation:: propa.setWay(bo) -Example -------- - -:: - - import hexablock - doc = hexablock.addDocument() - GUI command: :ref:`guipropag` diff --git a/doc/tui_quad_revolution.rst b/doc/tui_quad_revolution.rst new file mode 100644 index 0000000..789c9da --- /dev/null +++ b/doc/tui_quad_revolution.rst @@ -0,0 +1,68 @@ +:tocdepth: 3 + + +.. _tuiquadrevolution: + + +=============== +Quad Revolution +=============== + +To make quad revolution you need: + +- a set of quadrangles you want to make a revolution on + +.. literalinclude:: test_doc/quad_revolution/make_grid.py + :lines: 3- + :linenos: + +- center of rotation:: + + center = doc.addVertex (0, -10, 0) + +- axis of rotation (a vector):: + + axis = doc.addVector (1, 0, 0) + +- Specify the rotation’s angle at each step (a list of angles in degrees):: + + angles = [5, 10, 15, 20, 30, 20, 15, 10, 5 ] + +Then you can make you can make your quad revolution this way:: + + elts = doc.revolutionQuads (liste, center, axis, angles) + +Operations on *elts*: :ref:`tuielements2` + + +Complete Example +================ + + +Snippet Code +------------ + +.. literalinclude:: test_doc/quad_revolution/revolution.py + :emphasize-lines: 59 + :linenos: + + +The result +---------- + +.. image:: _static/grid_for_revolution.png + :align: center + +.. centered:: + Initial + + +.. image:: _static/quad_revolution.png + :align: center + +.. centered:: + Quad Revolution + + +GUI command: :ref:`guiquadrevolution` + diff --git a/doc/tui_quadrangle.rst b/doc/tui_quadrangle.rst index bf802eb..d70d881 100644 --- a/doc/tui_quadrangle.rst +++ b/doc/tui_quadrangle.rst @@ -23,6 +23,11 @@ Get the number of all quadrangles of the document:: Get the number of used quadrangles in the model of blocks:: sum_u = doc.countUsedQuad() + +Get the quads used by the model of blocks + +.. literalinclude:: test_doc/quad/quad.py + Get a quadrangle of the document:: @@ -40,4 +45,6 @@ Find a quadrangle in the document:: quad_f = doc.findQuad(vertex_1, vertex_2) +More operations: *Quad* inherits :ref:`Element `. + GUI command: :ref:`guiquadrangles` diff --git a/doc/tui_remove.rst b/doc/tui_remove.rst index fd4c7dd..fd4121a 100644 --- a/doc/tui_remove.rst +++ b/doc/tui_remove.rst @@ -16,7 +16,7 @@ Remove all hexahedra connected of the model of blocks:: doc.removeConnectedHexa(hexa) -.. image:: _static/remove3.PNG +.. image:: _static/remove33.png :align: center diff --git a/doc/tui_replace_hexa.rst b/doc/tui_replace_hexa.rst new file mode 100644 index 0000000..7cb7ac7 --- /dev/null +++ b/doc/tui_replace_hexa.rst @@ -0,0 +1,42 @@ +:tocdepth: 3 + + +.. _tuireplacehexa: + +================== +Replace Hexahedron +================== + +The following example explain how to replace hexa in script mode. +For parameters description see the gui documentation of replace hexa. + +:: + + elts = doc.replace (qpattern, pd2,c1, pa2,c2, pb2,c3) + +Operations on *elts*: :ref:`tuielements2` + + +Complete example +---------------- + +.. literalinclude:: test_doc/replace_hexa/replace_hexa.py + :linenos: + +Result +------ + +.. image:: _static/before_replace_hexa.png + :align: center + +.. centered:: + Before hexa replacement + + +.. image:: _static/after_replace_hexa.png + :align: center + +.. centered:: + After hexa replacement + +GUI command: :ref:`guireplacehexa` \ No newline at end of file diff --git a/doc/tui_sphergrid.rst b/doc/tui_sphergrid.rst index 93b02f6..5d32b15 100644 --- a/doc/tui_sphergrid.rst +++ b/doc/tui_sphergrid.rst @@ -10,16 +10,18 @@ Make spherical grids To add a spherical grid, the following data are required: -- the center (vertex) of the central hexahedron: *pt* -- the vector corresponding to the diametrically opposite vertex to the - initial vertex: *dv* +- the center (vertex) of the central hexahedron: *c* +- the radius of the internal hexahedron: *r* - the number of embedded hexahedra: *n* - the coefficient of growth:*k* Make a spherical grid:: - elts = doc.makeSpherical(pt, dv, n, k) + elts = doc.makeSpherical(c, r, n, k) + +Operations on *elts*: :ref:`tuielements2` + The result is an array of hexahedra starting with the central and other hexahedral are arranged layer by layer from the center. Each @@ -30,23 +32,8 @@ the X axis, then 2 for the Y axis and 2 for the Z axis. Example ------- -:: - - import hexablock - doc = hexablock.addDocument() - - orig = doc.addVertex(0, 0, 0) - - direction = doc.addVector(1, 1, 1) - - dx = doc.addVector(1, 0, 0) - dy = doc.addVector(0, 1, 0) - dz = doc.addVector(0, 0, 1) - - n = 2 - k = 0.8 - - grid = doc.makeSpherical(orig, direction, n, k) +.. literalinclude:: test_doc/grid/spherical_grid.py + :linenos: GUI command: :ref:`guisphergrid` diff --git a/doc/tui_vector.rst b/doc/tui_vector.rst index 100df94..d8328b6 100644 --- a/doc/tui_vector.rst +++ b/doc/tui_vector.rst @@ -24,5 +24,15 @@ Get the number of vector in the document:: Get a vector of the document:: vector_i = doc.getVector(i) + +Get the norm of a vector:: + + norm = vector_i.getNorm() + +Get the angle on X:: + + angle = vector_i.getAngleX() + +More operations: *Vector* inherits :ref:`Element `. GUI command: :ref:`guivector` diff --git a/doc/tui_vertex.rst b/doc/tui_vertex.rst index ad4a3ef..260976b 100644 --- a/doc/tui_vertex.rst +++ b/doc/tui_vertex.rst @@ -20,6 +20,10 @@ Get the number of all vertices of the document:: Get the number of vertices used only by the model of blocks:: sum_u = doc.countUsedVertex() + +Get the vertices used by the model of blocks + +.. literalinclude:: test_doc/vertex/vertex.py Get a vertex of the document:: @@ -41,5 +45,6 @@ Find a vertex in the document (with a tolerance):: vertex_f = doc.findVertex(x, y, z) +More operations: *Vertex* inherits :ref:`Element `. GUI command: :ref:`guivertex` diff --git a/doc/tuto_sphinx_hexablock.odt b/doc/tuto_sphinx_hexablock.odt new file mode 100644 index 0000000000000000000000000000000000000000..dd6412a7caaf75f5189380c44ee41767a10752ce GIT binary patch literal 86564 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 Ckx~@^ literal 0 HcmV?d00001 diff --git a/doc/tuto_sphinx_hexablock.pdf b/doc/tuto_sphinx_hexablock.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7d4cc0e9147d17af2becd7bb69a49ed4ca2886b8 GIT binary patch literal 129711 zcmd?QbyQs6mNiNO!JPmJp5UI~PH=Y*9^8XFgrEr?ELh?0?hpb5uR?=E(88tALchcB z-tK$5`*we?-x%+&modnwI(5!I=j^@KTyw28H?69qH0xV7E_B+S{GRrn#-1#64yrd) zP9JR1g@o7@EgY@ftf@GGBkJtZHui27F6`3wrfwFJ7G_T779t|(u5KCbGu7jf(d+0D_AF=GlA~tt zd|F3K`Bz5vjn`Ej=NTmSextS9^m4W6u#LTSW!-hs|7!E2x4;i;Wiw*GK-kh`>{1)4 z+nA?{sHh4uCRipTDsyM;YRyV8HQ@e!XRl{{a@AjIT2+T|E3dEnSm_n!YsEJ7Zb~EU z{jvUHcse^yq2SZdFUboJD=|E zq9*HT*+!KmYkLdodV^nLB#=yaG5RLApPJt%-@YBcF+EWEijG8&A=Xg*N8t73htK`- z>Mf9GO`m+wKw% z>Q@E%=WsYG#%qjdumbK5N{lMQ`SjHuQZy~{5^+v=2B{8VJoO{qA1?bPR}qL`x@m-*1LJJnDr zZ}3`{K;wg%o5dS#G;vIMHJT?Xkv;8f;;@)8Rx-&%YYh(SXB`Z3USl}POP}zZV>7aE z^OhPj9B7NcPrr~|w{O22L~bRr68diD6AmG%9wXENEjp4l+d4U{DoMGy2>$}PzWZ96o;{-Sa%y~eMDas3 zzL5a&yE~Q)>FB4&ViZOv@e5eX+i3SnO|bRmJ?#%tx2q(^I8}|6s?$=o_c^2&ie2`-954=*reD zgthgH3?rjA@yX2`s%yo+yG=V_k2jG%JDeWPk;NBc7T>vpCm6UOF!ZRepShC}u|8_fZX z1oul@`nf`EekqpGc(GUJ9uTeJ7R0&yBL9p| zH^FP`%WGu>gd0VA-%J`eKKuC;(@%LTU8ttsLyXuY@Y`BZ!JTm{e;Rc-Mo-hLqIWYi z3}*)0zL5Fnp(0bX9yFm^$KBf=GeLNW`Wrc99t#JbHJuuje7U!Er7dMBtx)pkx+z~= z$?)@jYoTCX7Ov`w8o*0-#)SK8B+GQZ+b`A)YI!pev9nDcBCV-cO0E_7Q`-c+?OZ=S zWi~8f5~ptlg&*99+ub{9_0LFxE{SfjF~S$oInLDLGK{@t z;ai=Q*ad@q;gnO@uTy+>a%!;?{D^0SA2FiSWE&lV6Kcy|R%Nqy($tlwoMMR2WMlsp znI@!L2J^i@-o1F}8d)A@JPSav>rnRiqU^qUdYP$G`Q+of8J#yJIrfr1HziDhPO05P z^0t4{UcTRLn1p{=qkPjtGJj(HW}R)9u8W1u$e^CcwQ|n}TyPVYV)*(;$Izxua_JmI zrzP?W?`Al7(G6SzFZNpGFx;52xC(uiXxGVtw{te|xi;6C4=XdJF8eU3-O9kS5@PAh zn#W|w)*`N2UjyA4e!e6&C(2pPB8y5?=`;yfo|bw{`aT>e0mHt=#TN`@xxngUjE0Q|2oL^ zk1(X^{n3J5SLK7Pg_#?>hWiJ%$M13urdAg0IyUBy0gCSp6}zm3jg_?<73Uk^v$&0$ ztEz>IgpZkHHN6Uqmx@2`76e7mbgmW)|#{79KWc7V0wM=>Ht! z4l>bnHMJi4pAaTWJ(p9{sP`G28KSl3^fl&Ykm}>Y>LW_2=k=N3ZSZSYt~ZcpJ@313 zu8(LAZF^c$jQX^v^XP^t?Y$$TE!)G&$Fx27FhT5*kHxLP9|J_->P5<_W?lL?#G7CW7@A*BM)hvy>)?02%laM>w@x z-srHvQyDSjip@h}X?%Ahv#Ws?SlrFDe#gw=@Lr%JQ;=6ife|N`Z)p9<*cNudn@H!A zhM-~{Vlb}fjy&=GH4|ixo(hC&*!=PIN6=)fFcBL#`&SxwpX5wsc>RVA(o!q={Z7$W zjUrp8<#t024bm67tGhnEpUy9jD05(BoBH|-!B${{E}!${V2Ox} >?_qV6YRYo$D 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 Quads; - typedef sequence RealVector; + interface NewShape; + + typedef sequence Quads; + typedef sequence IntVector; + typedef sequence RealVector; + typedef sequence NewShapes; + typedef GEOM::GEOM_Object Shape; typedef sequence Shapes; @@ -62,7 +67,7 @@ module HEXABLOCK_ORB raises (SALOME::SALOME_Exception); void dump() - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); //CS_NOT_SPEC /*! */ string getName() @@ -102,11 +107,14 @@ module HEXABLOCK_ORB /*! - Arêtes + Aretes */ Edge addEdge( in Vertex v0, in Vertex v1 ) raises (SALOME::SALOME_Exception); + Edge addEdgeVector ( in Vertex v0, in Vector w1 ) + raises (SALOME::SALOME_Exception); + long countEdge() raises (SALOME::SALOME_Exception); @@ -138,7 +146,7 @@ module HEXABLOCK_ORB /*! - Hexaèdre + Hexaedre */ Hexa addHexa( in Quad q0, in Quad q1, in Quad q2, in Quad q3, in Quad q4, in Quad q5 ) raises (SALOME::SALOME_Exception); @@ -182,7 +190,7 @@ module HEXABLOCK_ORB long countCylinder() raises (SALOME::SALOME_Exception); - + Cylinder getCylinder( in long i ) raises (SALOME::SALOME_Exception); @@ -191,13 +199,13 @@ module HEXABLOCK_ORB Pipe */ Pipe addPipe( in Vertex base, in Vector direction, - in double int_radius, in double ext_radius, + in double int_radius, in double ext_radius, in double height ) raises (SALOME::SALOME_Exception); long countPipe() raises (SALOME::SALOME_Exception); - + Pipe getPipe( in long i ) raises (SALOME::SALOME_Exception); @@ -212,14 +220,14 @@ module HEXABLOCK_ORB raises (SALOME::SALOME_Exception); /*! - Grille cartésiennes + Grille cartesiennes */ - Elements makeCartesian( in Vertex pt, + Elements makeCartesian( in Vertex pt, in Vector vx, in Vector vy, in Vector vz, in long nx, in long ny, in long nz) raises (SALOME::SALOME_Exception); - Elements makeCartesian1( in Vertex v, + Elements makeCartesian1( in Vertex v, in Vector v1, in long px, in long py, in long pz, in long mx, in long my, in long mz ) @@ -245,24 +253,24 @@ module HEXABLOCK_ORB raises (SALOME::SALOME_Exception); /*! - Grille sphérique + Grille spherique */ Elements makeSpherical( in Vertex pt, in double rayon, in long n, in double k ) - raises (SALOME::SALOME_Exception); //CS_TO_DEL + raises (SALOME::SALOME_Exception); /*! - Cylindre découpé en blocs + Cylindre decoupe en blocs */ // Elements makeCylinder( in Cylinder cyl, in long nr, in long na, in long nl ) // raises (SALOME::SALOME_Exception);//CS_TODO Elements makeCylinder( in Cylinder cyl, in Vector vr, in long nr, in long na, in long nl ) raises (SALOME::SALOME_Exception);//CS_NEW CS_NOT_SPEC - + /*! Tuyau decoupe en blocs @@ -274,12 +282,12 @@ module HEXABLOCK_ORB 2 Cylindres en T decoupes en blocs */ CrossElements makeCylinders( in Cylinder c1, in Cylinder c2 ) - raises (SALOME::SALOME_Exception);//CS_NEW CS_NOT_SPEC + raises (SALOME::SALOME_Exception); /*! 2 Tuyau decoupe en intersection decoupees en blocs */ - Elements makePipes( in Pipe p1, in Pipe p2 ) + CrossElements makePipes( in Pipe p1, in Pipe p2 ) raises (SALOME::SALOME_Exception); /*! @@ -291,7 +299,7 @@ module HEXABLOCK_ORB Elements prismQuads( in Quads qds, in Vector v, in long nb ) raises (SALOME::SALOME_Exception); - Elements prismQuadsVec (in Quads qds, in Vector v, in RealVector thaut, + Elements prismQuadsVec (in Quads qds, in Vector v, in RealVector thaut, in long opt ) raises (SALOME::SALOME_Exception); @@ -309,41 +317,41 @@ module HEXABLOCK_ORB raises (SALOME::SALOME_Exception); // HexaBlock V3 - Elements revolutionQuads( in Quads qds, in Vertex ori, in Vector dir, + Elements revolutionQuads( in Quads qds, in Vertex ori, in Vector dir, in RealVector angles) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); Elements replace( in Quads qds, in Vertex p1, in Vertex c1, in Vertex p2, in Vertex c2, in Vertex p3, in Vertex c3) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); - Elements makeSphere (in Vertex center, in Vector vx, in Vector vz, + Elements makeSphere (in Vertex center, in Vector vx, in Vector vz, in double radius, in double radhole, - in Vertex plorig, + in Vertex plorig, in long nrad, in long nang, in long nhaut) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); - Elements makePartSphere (in Vertex center, in Vector vx, in Vector vz, + Elements makePartSphere (in Vertex center, in Vector vx, in Vector vz, in double radius, in double radhole, in Vertex plorig, in double angle, in long nrad, in long nang, in long nhaut) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); - Elements makeRind (in Vertex center, in Vector vx, in Vector vz, + Elements makeRind (in Vertex center, in Vector vx, in Vector vz, in double radext, in double radint, in double radhole, - in Vertex plorig, + in Vertex plorig, in long nrad, in long nang, in long nhaut) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception); - Elements makePartRind (in Vertex center, in Vector vx, in Vector vz, + Elements makePartRind (in Vertex center, in Vector vx, in Vector vz, in double radext, in double radint, in double radhole, in Vertex plorig, in double angle, in long nrad, in long nang, in long nhaut) - raises (SALOME::SALOME_Exception); -// -// + raises (SALOME::SALOME_Exception); +// +// // /*! -// Fusionner 2 éléments de même nature //CS_NOT_SPEC +// Fusionner 2 elements de meme nature //CS_NOT_SPEC // */ // Elements mergeQuads( in Quad qa, in Quad qb, @@ -356,7 +364,7 @@ module HEXABLOCK_ORB in Vertex va2, in Vertex vb2 ) raises (SALOME::SALOME_Exception);//CS_NOT_SPEC //CS_NEW -// +// // Elements mergeEdges( in Edge e1, in Edge e2, // in Vertex v1, in Vertex v2 ) // raises (SALOME::SALOME_Exception); @@ -374,7 +382,7 @@ module HEXABLOCK_ORB /*! Deconnecter des elements du modele */ - Elements disconnectQuad( in Hexa h, in Quad q ) + Elements disconnectQuad( in Hexa h, in Quad q ) raises (SALOME::SALOME_Exception); Elements disconnectEdge( in Hexa h, in Edge e ) @@ -387,7 +395,7 @@ module HEXABLOCK_ORB raises (SALOME::SALOME_Exception); /*! - Couper des hexaèdres du modèle + Couper des hexaedres du modele */ Elements cut( in Edge e, in long nb_of_cuts ) raises (SALOME::SALOME_Exception); @@ -399,8 +407,8 @@ module HEXABLOCK_ORB // raises (SALOME::SALOME_Exception); Elements makeTranslation( in Elements l, in Vector vec ) raises (SALOME::SALOME_Exception); -// -// +// +// Elements makeRotation (in Elements l, in Vertex ver, in Vector vec, in double angle) raises (SALOME::SALOME_Exception); Elements makeScale (in Elements e, in Vertex ver, in double k ) @@ -411,7 +419,7 @@ module HEXABLOCK_ORB Elements makeSymmetryLine (in Elements e, in Vertex ver, in Vector vec) raises (SALOME::SALOME_Exception); - + Elements makeSymmetryPlane (in Elements e, in Vertex ver, in Vector vec) raises (SALOME::SALOME_Exception); @@ -423,10 +431,10 @@ module HEXABLOCK_ORB void performTranslation(in Elements l, in Vector vec) raises (SALOME::SALOME_Exception); -// +// void performRotation(in Elements l, in Vertex ver, in Vector vec, in double angle) raises (SALOME::SALOME_Exception); -// +// void performScale(in Elements e, in Vertex ver, in double k) raises (SALOME::SALOME_Exception); @@ -438,15 +446,15 @@ module HEXABLOCK_ORB void performSymmetryPlane(in Elements e, in Vertex ver, in Vector vec) raises (SALOME::SALOME_Exception); -// +// // /*! // -------- // MAILLAGE // -------- // */ -// +// // /*! -// Créer, éditer et supprimer un groupe +// Creer, editer et supprimer un groupe // */ // HexaGroup addHexaGroup( in string name ) Group addHexaGroup( in string name ) @@ -491,7 +499,7 @@ module HEXABLOCK_ORB /*! - Définir une loi de discrétisation + Definir une loi de discretisation */ Law addLaw( in string name, in long nb_nodes ) raises (SALOME::SALOME_Exception); @@ -510,7 +518,7 @@ module HEXABLOCK_ORB /*! - Discretization defined on the model of blocks + Discretization defined on the model of blocks */ long countPropagation() raises (SALOME::SALOME_Exception); @@ -524,22 +532,7 @@ module HEXABLOCK_ORB /*! Association on lines */ - long associateOpenedLine (in Edge mstart, in Edges mline, in Shape gstart, - in double pstart, in Shapes gline, in double pend) - raises (SALOME::SALOME_Exception); - - long associateClosedLine (in Vertex mfirst, in Edge mstart, in Edges mline, - in Shape gstart, in double pstart, in boolean inv, - in Shapes gline) - raises (SALOME::SALOME_Exception); - - void setShape (in GEOM::GEOM_Object geom_object_vertex ) - raises (SALOME::SALOME_Exception); - - GEOM::GEOM_Object getShape () - raises (SALOME::SALOME_Exception); - string getBrep () - raises (SALOME::SALOME_Exception); +// Shape // Ajouts 05/09/20011 @@ -561,7 +554,7 @@ module HEXABLOCK_ORB Hexa getUsedHexa( in long i ) raises (SALOME::SALOME_Exception); - Hexa addHexa5Quads (in Quad q1, in Quad q2, in Quad q3, in Quad q4, + Hexa addHexa5Quads (in Quad q1, in Quad q2, in Quad q3, in Quad q4, in Quad q5) raises (SALOME::SALOME_Exception); Hexa addHexa4Quads ( in Quad q1, in Quad q2, in Quad q3, in Quad q4) raises (SALOME::SALOME_Exception); @@ -571,12 +564,43 @@ module HEXABLOCK_ORB raises (SALOME::SALOME_Exception); boolean removeQuad( in Quad q ) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception);//CS_NOT_SPEC boolean removeElements( in Elements b ) raises (SALOME::SALOME_Exception); void clearAssociation () raises (SALOME::SALOME_Exception); + + // Hexa 5 + + NewShape addShape (in GEOM::GEOM_Object geometry, in string name) + raises (SALOME::SALOME_Exception); + + NewShape getShape (in long nro) raises (SALOME::SALOME_Exception); + + long countShape () + raises (SALOME::SALOME_Exception); + + long associateOpenedLine (in Edges mlines, + in Shapes glines, in IntVector subids, + in double pstart, in double pend) + raises (SALOME::SALOME_Exception); + + long associateClosedLine (in Vertex mfirst, in Edges mlines, + in Shapes glines, in IntVector subids, + in double pstart, in boolean inv) + raises (SALOME::SALOME_Exception); + /*! + 2 Cylindres en T decoupes en blocs (Hexa5) + */ + Elements makeBiCylinder ( in Cylinder c1, in Cylinder c2 ) + raises (SALOME::SALOME_Exception); + + /*! + 2 Tuyau decoupe en intersection decoupees en blocs (Hexa5) + */ + Elements makeBiPipe ( in Pipe p1, in Pipe p2 ) + raises (SALOME::SALOME_Exception); }; }; diff --git a/idl/Edge.idl b/idl/Edge.idl index 6b2ef6c..e38bbae 100755 --- a/idl/Edge.idl +++ b/idl/Edge.idl @@ -32,7 +32,7 @@ /*! \ingroup EXAMPLES -This package contains the interface HEXABLOCK_ORB used +This package contains the interface HEXABLOCK_ORB used for %HEXABLOCK component as an example in %SALOME application. */ module HEXABLOCK_ORB @@ -52,37 +52,18 @@ module HEXABLOCK_ORB Vertex getVertex( in long n ) raises (SALOME::SALOME_Exception); boolean getWay() raises (SALOME::SALOME_Exception); - long addAssociation (in GEOM::GEOM_Object geom_object_1D, in double debut, in double val ) //CS_NOT_SPEC - raises (SALOME::SALOME_Exception); - - void clearAssociation ( ) + void clearAssociation ( ) raises (SALOME::SALOME_Exception); -// sequence getAssociations() //CS_NOT_SPEC - EdgeAssociations getAssociations() //CS_NOT_SPEC CS_WARNING: not working when reloading a document - raises (SALOME::SALOME_Exception); - -// void addAssociation( in GEOM::GEOM_Object geom_object_1D, in double debut, in double val ) -// raises (SALOME::SALOME_Exception); -// GEOM_Objects getAssociations() raises (SALOME::SALOME_Exception); - -// GEOM_Objects GEOM::GEOM_Object getAssociation() -// raises (SALOME::SALOME_Exception); - -// void removeAssociation() -// raises (SALOME::SALOME_Exception); - - void setColor (in double val) - raises (SALOME::SALOME_Exception); - - void setScalar( in double val ) //CS_NOT_SPEC --> To delete - raises (SALOME::SALOME_Exception); + void setColor (in double val) + raises (SALOME::SALOME_Exception); + long addAssociation (in NewShape geom, in long subid, in double debut, + in double fin ) + raises (SALOME::SALOME_Exception); }; typedef sequence Edges; - - }; #endif diff --git a/idl/Element.idl b/idl/Element.idl index beeba4d..4aa5701 100755 --- a/idl/Element.idl +++ b/idl/Element.idl @@ -30,8 +30,8 @@ module HEXABLOCK_ORB { interface Element : SALOME::GenericObj { - void dump () raises (SALOME::SALOME_Exception); - void printName () raises (SALOME::SALOME_Exception); + void dump () raises (SALOME::SALOME_Exception);//CS_NOT_SPEC + void printName () raises (SALOME::SALOME_Exception);//CS_NOT_SPEC string getName () raises (SALOME::SALOME_Exception); void setName (in string name) raises (SALOME::SALOME_Exception); }; diff --git a/idl/Elements.idl b/idl/Elements.idl index 94e1078..7536f45 100755 --- a/idl/Elements.idl +++ b/idl/Elements.idl @@ -130,7 +130,7 @@ module HEXABLOCK_ORB Quad getQuad( in long n ) raises (SALOME::SALOME_Exception); Hexa getHexa( in long n ) raises (SALOME::SALOME_Exception); - long findVertex( in Vertex p ) raises (SALOME::SALOME_Exception); + long findVertex( in Vertex p ) raises (SALOME::SALOME_Exception);//CS_NOT_SPEC Vertex getVertexIJK( in long x, in long y, in long z) raises (SALOME::SALOME_Exception); @@ -158,7 +158,7 @@ module HEXABLOCK_ORB // Edge getEdge1( in EnumCoord dir, in long nx, in long ny, in long nz) raises (SALOME::SALOME_Exception); //CS_NOT_SPEC long saveVtk( in string fname ) - raises (SALOME::SALOME_Exception); + raises (SALOME::SALOME_Exception);//CS_NOT_SPEC void clearAssociation () raises (SALOME::SALOME_Exception); diff --git a/idl/HEXABLOCK_Gen.idl b/idl/HEXABLOCK_Gen.idl index d3b4789..aeff422 100755 --- a/idl/HEXABLOCK_Gen.idl +++ b/idl/HEXABLOCK_Gen.idl @@ -42,7 +42,6 @@ module HEXABLOCK_ORB /*! Donne le nombre de documents ouverts en session. */ - void test() raises (SALOME::SALOME_Exception); long countDocument() raises (SALOME::SALOME_Exception); @@ -55,6 +54,9 @@ module HEXABLOCK_ORB Document addDocument(in string name) raises (SALOME::SALOME_Exception); + Document findDocument(in string name) + raises (SALOME::SALOME_Exception); + Document loadDocument(in string xmlFilename) raises (SALOME::SALOME_Exception); @@ -63,6 +65,11 @@ module HEXABLOCK_ORB */ void SetCurrentStudy( in SALOMEDS::Study theStudy ); + long addDocInStudy (in Document doc) + raises (SALOME::SALOME_Exception); + + void test() raises (SALOME::SALOME_Exception); + }; }; diff --git a/idl/Hexa.idl b/idl/Hexa.idl index bbd8452..ae514dc 100755 --- a/idl/Hexa.idl +++ b/idl/Hexa.idl @@ -43,7 +43,7 @@ module HEXABLOCK_ORB Edge getEdge( in long n ) raises(SALOME::SALOME_Exception); Vertex getVertex( in long n ) raises(SALOME::SALOME_Exception); - void setColor (in double value) + void setColor (in double value)//CS_NOT_SPEC raises (SALOME::SALOME_Exception); void setScalar( in double val ) //CS_NOT_SPEC --> To delete diff --git a/idl/Makefile.am b/idl/Makefile.am index b12ae93..3f3bdf3 100755 --- a/idl/Makefile.am +++ b/idl/Makefile.am @@ -26,6 +26,7 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am BASEIDL_FILES = \ Element.idl\ + NewShape.idl\ Vertex.idl\ Edge.idl\ Quad.idl\ @@ -62,6 +63,8 @@ nodist_libSalomeIDLHEXABLOCK_la_SOURCES = \ EdgeDynSK.cc\ QuadSK.cc\ QuadDynSK.cc\ + NewShapeSK.cc\ + NewShapeDynSK.cc\ HexaSK.cc\ HexaDynSK.cc\ VectorSK.cc\ @@ -93,6 +96,7 @@ LawDynSK.cc: LawSK.cc ElementsDynSK.cc: ElementsSK.cc CrossElementsDynSK.cc: CrossElementsSK.cc QuadDynSK.cc: QuadSK.cc +NewShapeDynSK.cc: NewShapeSK.cc VectorDynSK.cc: VectorSK.cc CylinderDynSK.cc: CylinderSK.cc GroupDynSK.cc: GroupSK.cc @@ -146,7 +150,7 @@ IDLPYFLAGS = \ @IDLPYFLAGS@ \ -I$(KERNEL_ROOT_DIR)/idl/salome \ -I$(GEOM_ROOT_DIR)/idl/salome - + # potential problem on parallel make on the following - multiple outputs @@ -191,4 +195,4 @@ mostlyclean-local: -include .depidl -# -I$(GEOM_ROOT_DIR)/include/salome \ No newline at end of file +# -I$(GEOM_ROOT_DIR)/include/salome diff --git a/idl/NewShape.idl b/idl/NewShape.idl new file mode 100755 index 0000000..82d0f3f --- /dev/null +++ b/idl/NewShape.idl @@ -0,0 +1,55 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef __NewShape_idl_ +#define __NewShape_idl_ +/*! + \defgroup EXAMPLES SALOME EXAMPLES components + */ +#include "SALOME_Exception.idl" +#include "SALOME_GenericObj.idl" + +// #include "GEOM_Gen.idl" +#include "Element.idl" + +/*! \ingroup EXAMPLES + +This package contains the interface HEXABLOCK_ORB used +for %HEXABLOCK component as an example in %SALOME application. +*/ +module HEXABLOCK_ORB +{ + interface NewShape : Element + { + long countVertex () raises (SALOME::SALOME_Exception); + long countEdge () raises (SALOME::SALOME_Exception); + long countFace () raises (SALOME::SALOME_Exception); + + + long getVertex (in long nro) raises (SALOME::SALOME_Exception); + long getEdge (in long nro) raises (SALOME::SALOME_Exception); + long getFace (in long nro) raises (SALOME::SALOME_Exception); + + + string getNameVertex (in long nro) raises (SALOME::SALOME_Exception); + string getNameEdge (in long nro) raises (SALOME::SALOME_Exception); + string getNameFace (in long nro) raises (SALOME::SALOME_Exception); + }; +}; + +#endif diff --git a/idl/Quad.idl b/idl/Quad.idl index b182cd2..ef2e42c 100755 --- a/idl/Quad.idl +++ b/idl/Quad.idl @@ -32,7 +32,7 @@ /*! \ingroup EXAMPLES -This package contains the interface HEXABLOCK_ORB used +This package contains the interface HEXABLOCK_ORB used for %HEXABLOCK component as an example in %SALOME application. */ module HEXABLOCK_ORB @@ -45,25 +45,13 @@ module HEXABLOCK_ORB Vertex getVertex( in long n ) raises (SALOME::SALOME_Exception); -// void addAssociation( in GEOM::GEOM_Object geom_object_2D ) -// raises (SALOME::SALOME_Exception); -// -// GEOM_Objects getAssociations() -// raises (SALOME::SALOME_Exception); - - void clearAssociation ( ) - raises (SALOME::SALOME_Exception); - - long addAssociation( in GEOM::GEOM_Object geom_object_2D ) //CS_NOT_SPEC + void clearAssociation ( ) raises (SALOME::SALOME_Exception); - GEOM::ListOfGO getAssociations() //CS_NOT_SPEC CS_WARNING: not working when reloading a document - raises (SALOME::SALOME_Exception); -// -// void removeAssociation() -// raises (SALOME::SALOME_Exception); + long addAssociation (in NewShape geom, in long subid) // + raises (SALOME::SALOME_Exception); - void setColor (in double value) + void setColor (in double value)//CS_NOT_SPEC raises (SALOME::SALOME_Exception); void setScalar( in double val ) //CS_NOT_SPEC --> To delete diff --git a/idl/Vertex.idl b/idl/Vertex.idl index b1ee130..b8f81d6 100755 --- a/idl/Vertex.idl +++ b/idl/Vertex.idl @@ -28,15 +28,15 @@ #include "Element.idl" - /*! \ingroup EXAMPLES -This package contains the interface HEXABLOCK_ORB used -for %HEXABLOCK component +This package contains the interface HEXABLOCK_ORB used +for %HEXABLOCK component */ module HEXABLOCK_ORB { + interface NewShape; interface Vertex : Element { double getX() raises (SALOME::SALOME_Exception); @@ -47,20 +47,19 @@ module HEXABLOCK_ORB void setY( in double y ) raises (SALOME::SALOME_Exception); void setZ( in double z ) raises (SALOME::SALOME_Exception); - void setAssociation( in GEOM::GEOM_Object geom_object_vertex ) - raises (SALOME::SALOME_Exception); - - GEOM::GEOM_Object getAssociation() - raises (SALOME::SALOME_Exception); - void clearAssociation() raises (SALOME::SALOME_Exception); void setColor (in double value) raises (SALOME::SALOME_Exception); - void setScalar( in double val ) //CS_NOT_SPEC --> To delete - raises (SALOME::SALOME_Exception); + long setAssociation ( in NewShape geom, in long subid) + raises (SALOME::SALOME_Exception); + + double getAssoX () raises (SALOME::SALOME_Exception); + double getAssoY () raises (SALOME::SALOME_Exception); + double getAssoZ () raises (SALOME::SALOME_Exception); + }; diff --git a/src/HEXABLOCK/Hex.cxx b/src/HEXABLOCK/Hex.cxx index 08a672d..bcd5cbb 100755 --- a/src/HEXABLOCK/Hex.cxx +++ b/src/HEXABLOCK/Hex.cxx @@ -21,15 +21,20 @@ // #include "Hex.hxx" +#include "HexEltBase.hxx" #include "HexDocument.hxx" +#include "HexGlobale.hxx" #include BEGIN_NAMESPACE_HEXA +Hex* Hex::first_instance = NULL; + // ======================================================== Constructeur Hex::Hex () { setlocale (LC_NUMERIC, "C"); + glob = Globale::getInstance (); } // ======================================================== Destructeur Hex::~Hex () @@ -56,6 +61,10 @@ Document* Hex::getDocument (int nro) // ======================================================== removeDocument void Hex::removeDocument (Document* doc) { + bool actif = glob->dump.start ("hexablock", "removeDocument"); + if (actif) + glob->dump << doc; + int nbre = liste_documents.size(); for (int nd=0 ; nddump.close (actif); return; } } // Pas trouve dans la liste. On detruit quand meme + glob->dump.close (actif); delete doc; } // ======================================================== addDocument Document* Hex::addDocument (cpchar nomdoc) { - Document* doc = new Document (nomdoc); + bool actif = glob->dump.start ("hexablock", "addDocument"); + if (actif) + glob->dump << nomdoc; + + string name; + makeName (nomdoc, name); + Document* doc = new Document (name.c_str(), this); + liste_documents.push_back (doc); + + glob->dump.close (actif, doc); return doc; } // ======================================================== loadDocument -Document* Hex::loadDocument (const char* filename) +Document* Hex::loadDocument (cpchar filename) { - Document* doc = addDocument ("xxxx"); + bool actif = glob->dump.start ("hexablock", "loadDocument"); + if (actif) + glob->dump << filename; + + Document* doc = addDocument ("default"); doc->loadXml (filename); + + glob->dump.close (actif, doc); return doc; } +// ======================================================== loadAllDocs +int Hex::loadAllDocs (cpchar stream) +{ + int posit = 0; + int car = ' '; + int nbdocs = 0; + + while ( (car=stream[posit++]) != '>') + if (car>='0' && car <='9') + nbdocs = 10*nbdocs + car - '0'; + + for (int nro = 0; nrosetXml (stream, posit); + } + + PutData (posit); + return HOK; +} +// ======================================================== saveAllDocs +int Hex::saveAllDocs (cpchar filename) +{ + FILE* fic = fopen (filename, "w"); + if (fic==NULL) + return HERR; + + int nbdocs = countDocument (); + fprintf (fic, "<%d>", nbdocs); + + for (int nro = 0; nroappendXml (fic); + } + + fclose (fic); + return HOK; +} +// ======================================================== findDocument +Document* Hex::findDocument (cpchar name) +{ + int nbdocs = liste_documents.size(); + for (int nro = 0; nrogetName ())) + return doc; + } + return NULL; +} +// ======================================================== makeName +void Hex::makeName (cpchar radical, string& name) +{ + char cnum [8]; + int numero = 0; + while (true) + { + name = radical; + if (numero>0) + { + sprintf (cnum, "_%d", numero); + name += cnum; + } + numero ++; + if (findDocument (name)==NULL) + return; + } +} +// ======================================================== lockDump +void Hex::lockDump () +{ + glob->dump.lock (); +} +// ======================================================== restoreDump +void Hex::restoreDump () +{ + glob->dump.restore (DumpActif); +} +// ====================================================== getInstance +Hex* Hex::getInstance () +{ + if (first_instance==NULL) + first_instance = new Hex (); + + return first_instance; +} END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/Hex.hxx b/src/HEXABLOCK/Hex.hxx index 2035a03..da255db 100755 --- a/src/HEXABLOCK/Hex.hxx +++ b/src/HEXABLOCK/Hex.hxx @@ -17,7 +17,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com // #ifndef __HEX_H @@ -30,19 +31,34 @@ BEGIN_NAMESPACE_HEXA class Hex { public: + static Hex* getInstance (); + int countDocument (); Document* getDocument (int nro); void removeDocument (Document* doc); - Document* addDocument (const char* name="default"); - Document* loadDocument (const char* name); + Document* addDocument (cpchar name="default"); + Document* loadDocument (cpchar name); + Document* findDocument (cpchar name); + Document* findDocument (const string& name) + { return findDocument (name.c_str()) ; } + + int loadAllDocs (cpchar flow); + int saveAllDocs (cpchar filename); + void makeName (cpchar radical, string& name); + void lockDump(); + void restoreDump(); + +// private: // Constructeur + destructeur Hex (); ~Hex (); private: + static Hex* first_instance; vector liste_documents; + Globale* glob; }; END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexAssoEdge.cxx b/src/HEXABLOCK/HexAssoEdge.cxx new file mode 100755 index 0000000..6dec1f1 --- /dev/null +++ b/src/HEXABLOCK/HexAssoEdge.cxx @@ -0,0 +1,130 @@ +// +// C++ : Implementation des associations d'edges +// +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com + +#include "HexAssoEdge.hxx" +#include "HexXmlWriter.hxx" + +#include +#include + +#include + +BEGIN_NAMESPACE_HEXA + +// static bool db = on_debug (); +// static const double TolAsso = 1e-2; // Tolerance pour les associations + +// ========================================================= Constructeur +AssoEdge::AssoEdge (EdgeShape* shape, double deb, double fin) +{ + arc_line = shape; + arc_para1 = std::min (deb, fin); + arc_para2 = std::max (deb, fin); + + arc_line->getPoint (arc_para1, arc_start); + arc_line->getPoint (arc_para2, arc_end); + + // arc_curve = arc_line->getCurve (); Provisoire en attendant modif plugin + arc_curve = arc_line->makeCurve (); + arc_reverse = false; +} +// ========================================================= onExtremity +int AssoEdge::onExtremity (double* point) +{ + if (EdgeShape::samePoints (point, arc_start)) + return V_AMONT; + else if (EdgeShape::samePoints (point, arc_end)) + return V_AVAL; + else + return NOTHING; +} +// ========================================================= onExtremity +int AssoEdge::onExtremity (AssoEdge* other, int& ext_other) +{ + ext_other = NOTHING; + if (other==NULL) + return NOTHING; + + int rep = onExtremity (other->arc_start); + if (rep != NOTHING) + { + ext_other = V_AMONT; + } + else + { + rep = onExtremity (other->arc_end); + if (rep != NOTHING) + ext_other = V_AVAL; + } + + return rep; +} +// ========================================================= length +double AssoEdge::length () +{ + double longueur = (arc_para2-arc_para1)*arc_line->getLength (); + return longueur; +} +// ========================================================= getUstart +double AssoEdge::getUstart () +{ + BRepAdaptor_Curve* curve = arc_line->getCurve () ; + double len = arc_line->getLength (); + + GCPnts_AbscissaPoint discret_start (*curve, len*arc_para1, + curve->FirstParameter() ); + double ustart = discret_start.Parameter(); + return ustart; +} +// ========================================================= saveXml +void AssoEdge::saveXml (XmlWriter* xml) +{ + char interval [80]; + sprintf (interval, "%g %g", arc_para1, arc_para2); + + arc_line->callXml (xml); + xml->addAttribute ("interval", interval); + xml->closeMark (); +} +// ========================================================= setStart +void AssoEdge::setStart (double param) +{ + arc_para1 = param; + arc_line->getPoint (arc_para1, arc_start); +} +// ========================================================= setEnd +void AssoEdge::setEnd (double param) +{ + arc_para2 = param; + arc_line->getPoint (arc_para2, arc_end); +} +// ----------------------------------------------------------------------- +// ========================================================= dump +void AssoEdge::dump () +{ + cout << " AssoEddge = " << arc_line->getName() + << " (" << arc_para1 << ", " << arc_para2 << ")" << endl; + + PutCoord (arc_start); + PutCoord (arc_end); +} +END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexAssoEdge.hxx b/src/HEXABLOCK/HexAssoEdge.hxx new file mode 100644 index 0000000..b14107c --- /dev/null +++ b/src/HEXABLOCK/HexAssoEdge.hxx @@ -0,0 +1,51 @@ + +// class : Gestion des formes associees (Hexa 5) + +#ifndef __ASSO_EDGE_H_ +#define __ASSO_EDGE_H_ + +#include "HexEdgeShape.hxx" + +#ifndef NO_CASCADE +#include +#include +#endif + +BEGIN_NAMESPACE_HEXA + +class AssoEdge +{ +public : + AssoEdge (EdgeShape* shape, double deb, double fin); + + EdgeShape* getEdgeShape() { return arc_line; } + BRepAdaptor_Curve* getCurve () { return arc_curve; } + double getStart () { return arc_para1; } + double getEnd () { return arc_para2; } + double length (); + double getUstart (); // for Mesh Plugin + + + const double* getOrigin () { return arc_start; } + const double* getExtrem () { return arc_end; } + + int onExtremity (AssoEdge* other, int& ext_other); + int onExtremity (double* point); + + virtual void dump (); + void saveXml (XmlWriter* xml); + + void setStart (double param); + void setEnd (double param); + +private : + bool maj_extrem; + double arc_para1, arc_para2; + EdgeShape* arc_line; + + bool arc_reverse; + Real3 arc_start, arc_end; + BRepAdaptor_Curve* arc_curve; // Duplication a cause du plugin BP +}; +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexBiCylinder.cxx b/src/HEXABLOCK/HexBiCylinder.cxx new file mode 100755 index 0000000..a79f990 --- /dev/null +++ b/src/HEXABLOCK/HexBiCylinder.cxx @@ -0,0 +1,809 @@ + +// C++ : Gestion des cylindres croises + +// Copyright (C) 2009-2011 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com + +#include "HexBiCylinder.hxx" + +#include "HexDocument.hxx" +#include "HexVector.hxx" +#include "HexVertex.hxx" +#include "HexHexa.hxx" +#include "HexEdge.hxx" + +#include "HexGlobale.hxx" +#include "HexCylinder.hxx" + +static bool db = false; + +BEGIN_NAMESPACE_HEXA + +static const double cos45 = cos (M_PI/4); + + +void geom_define_line (string& brep); +void geom_asso_point (double angle, Vertex* node); + +void geom_create_circle (double* milieu, double rayon, double* normale, + double* base, string& brep); +int geom_create_cylcyl (double* borig, double* bnorm, double* bbase, + double bray, double bhaut, + double* sorig, double* snorm, double* sbase, + double sray, double shaut); +int geom_asso_cylcyl (Edge* edge); + +// ====================================================== Constructeur +BiCylinder::BiCylinder (Document* doc) + : Elements (doc) +{ + cyl_fill = false; + cross_cyl1 = NULL; + cross_cyl1 = NULL; + cross_cyl2 = NULL; + grid_type = GR_BICYL; + at_right = at_left = true; + + tab_hexa.push_back (NULL); + tab_quad.push_back (NULL); + tab_edge.push_back (NULL); + tab_vertex.push_back (NULL); + nbr_vertex = nbr_edges = nbr_quads = nbr_hexas = 1; +} +// ====================================================== getHexaIJK +Hexa* BiCylinder::getHexaIJK (int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, nx, ny, nz); + int nro = map_hexa [key]; + return tab_hexa [nro]; +} +// ====================================================== getQuadIJ +Quad* BiCylinder::getQuadIJ (int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, dir_z, nx, ny, nz); + int nro = map_quad [key]; + return tab_quad [nro]; +} +// ====================================================== getQuadJK +Quad* BiCylinder::getQuadJK (int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, dir_x, nx, ny, nz); + int nro = map_quad [key]; + return tab_quad [nro]; +} +// ====================================================== getQuadIK +Quad* BiCylinder::getQuadIK (int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, dir_y, nx, ny, nz); + int nro = map_quad [key]; + return tab_quad [nro]; +} +// ====================================================== getEdgeI +Edge* BiCylinder::getEdgeI (int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, dir_x, nx, ny, nz); + int nro = map_edge [key]; + return tab_edge [nro]; +} +// ====================================================== getEdgeJ +Edge* BiCylinder::getEdgeJ (int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, dir_y, nx, ny, nz); + int nro = map_edge [key]; + return tab_edge [nro]; +} +// ====================================================== getEdgeK +Edge* BiCylinder::getEdgeK (int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, dir_z, nx, ny, nz); + int nro = map_edge [key]; + return tab_edge [nro]; +} +// ====================================================== getVertexIJK +Vertex* BiCylinder::getVertexIJK (int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, nx, ny, nz); + int nro = map_vertex [key]; + if (db) + { + printf ("getVertexIJK (%d, %d,%d,%d) = V%d = ", cyl, nx, ny, nz, nro); + if (tab_vertex[nro] == NULL) + printf ("NULL\n"); + else + printf ("%s = (%g, %g, %g)\n", tab_vertex[nro]->getName(), + tab_vertex[nro]->getX(), tab_vertex[nro]->getY(), + tab_vertex[nro]->getZ()); + } + return tab_vertex [nro]; +} +// ------------------------------------------------------------------------ +// ====================================================== addVertex +Vertex* BiCylinder::addVertex (double px, double py, double pz, int cyl, + int nx, int ny, int nz) +{ + Vertex* node = el_root->addVertex (px, py, pz); + int key = getKey (cyl, nx, ny, nz); + tab_vertex.push_back (node); + map_vertex [key] = nbr_vertex; + + if (db) + { + printf (" tab_vertex [%d, %d,%d,%d] = V%d = ", cyl, nx, ny, nz, + nbr_vertex); + if (node == NULL) + printf ("NULL\n"); + else + printf ("%s = (%g, %g, %g)\n", node->getName(), node->getX(), + node->getY(), node->getZ()); + } + nbr_vertex ++; + return node; +} +// ====================================================== addEdge +Edge* BiCylinder::addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, int nx, + int ny, int nz) +{ + int key = getKey (cyl, dir, nx, ny, nz); + int nro = map_edge [key]; + if (nro>0) + { + if (db) + { + Edge* edge = tab_edge [nro]; + + printf ("pres_edge [%d,%d, %d,%d,%d] = E%d = ", cyl, dir, nx, ny, nz, + nbr_edges); + printf ("%s ((%s, %s)) = (%s,%s)\n", edge->getName(), + edge->getVertex(0)->getName(), edge->getVertex(1)->getName(), + v1->getName(), v2->getName()); + if (NOT edge->definedBy (v1,v2)) + printf (" **** Incoherence !!\n"); + } + return tab_edge [nro]; + } + + if (v1==NULL || v2==NULL) + return NULL; + + Edge* edge = findEdge (v1, v2); + if (edge==NULL) + edge = newEdge (v1, v2); + + map_edge [key] = nbr_edges; + tab_edge.push_back (edge); + + if (db) + { + printf (" tab_edge [%d,%d, %d,%d,%d] = E%d = ", cyl, dir, nx, ny, nz, + nbr_edges); + if (edge == NULL) + printf ("NULL\n"); + else + printf ("%s = (%s, %s)\n", edge->getName(), + edge->getVertex(0)->getName(), + edge->getVertex(1)->getName()); + } + nbr_edges ++; + return edge; +} +// ====================================================== addQuad +Quad* BiCylinder::addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, int cyl, + int dir, int nx, int ny, int nz) +{ + int key = getKey (cyl, dir, nx, ny, nz); + int nro = map_quad [key]; + if (nro>0) + return tab_quad [nro]; + + Quad* quad = newQuad (e1, e2, e3, e4); + map_quad [key] = nbr_quads; + tab_quad.push_back (quad); + + if (db) + { + printf (" tab_quad [%d,%d, %d,%d,%d] = Q%d = ", cyl, dir, nx, ny, nz, + nbr_quads); + if (quad == NULL) + printf ("NULL\n"); + else + printf ("%s = (%s, %s, %s, %s)\n", quad->getName(), + quad->getEdge(0)->getName(), quad->getEdge(1)->getName(), + quad->getEdge(2)->getName(), quad->getEdge(3)->getName()); + } + nbr_quads ++; + return quad; +} +// ====================================================== addHexa +Hexa* BiCylinder::addHexa (Quad* q1, Quad* q2, Quad* q3, Quad* q4, Quad* q5, + Quad* q6, int cyl, int nx, int ny, int nz) +{ + int key = getKey (cyl, nx, ny, nz); + int nro = map_hexa [key]; + if (nro>0) + { + printf (" tab_hexa [%d, %d,%d,%d] = H%d est deja la\n ", + cyl, nx, ny, nz, nbr_hexas); + return tab_hexa [nro]; + } + + Hexa* hexa = newHexa (q1, q2, q3, q4, q5, q6); + map_hexa [key] = nbr_hexas; + tab_hexa.push_back (hexa); + + if (db) + { + printf (" tab_hexa [%d, %d,%d,%d] = H%d = ", cyl, nx, ny, nz, nbr_hexas); + if (hexa == NULL) + printf ("NULL\n"); + else + printf ("%s = (%s, %s, %s, %s, %s, %s)\n", hexa->getName(), + hexa->getQuad(0)->getName(), hexa->getQuad(1)->getName(), + hexa->getQuad(2)->getName(), hexa->getQuad(3)->getName(), + hexa->getQuad(4)->getName(), hexa->getQuad(5)->getName()); + } + nbr_hexas ++; + return hexa; +} +// ------------------------------------------------------------------------ +// ====================================================== findVertex +Vertex* BiCylinder::findVertex (double px, double py, double pz, + int nx, int ny, int nz) +{ + for (it_map=map_vertex.begin() ; it_map!=map_vertex.end() ; ++it_map) + { + int nro = it_map->second; + Vertex* elt = tab_vertex[nro]; + if (elt != NULL && elt->definedBy (px, py, pz)) + { + int key = getKey (CylBig, nx, ny, nz); + map_vertex [key] = nro; + if (db) + printf ("findVertex [Big,%d,%d,%d] = V%d = '%d' = %s\n", + nx, ny, nz, nro, it_map->first, + tab_vertex[nro]->getName()); + return elt; + } + } + printf ("**** Recherche du vertex (%g, %g, %g)\n", px, py, pz); + fatal_error ("HexBiCylinder : Vertex non trouve"); + return NULL; +} +// ====================================================== findEdge +Edge* BiCylinder::findEdge (Vertex* v1, Vertex* v2) +{ + int nbedges = tab_edge.size(); + for (int nro = 0 ; nrodefinedBy (v1, v2)) + return elt; + } + return NULL; +} +// ====================================================== findEdge +Edge* BiCylinder::findEdge (Vertex* v1, Vertex* v2, int dir, int nx, + int ny, int nz) +{ + for (it_map=map_edge.begin() ; it_map!=map_edge.end() ; ++it_map) + { + int nro = it_map->second; + Edge* elt = tab_edge[nro]; + if (elt != NULL && elt->definedBy (v1, v2)) + { + int key = getKey (CylBig, dir, nx, ny, nz); + map_edge [key] = nro; + if (db) + printf ("findEdge [%d, %d,%d,%d] = E%d = '%d' = %s\n", + dir, nx, ny, nz, nro, it_map->first, + elt->getName()); + return elt; + } + } + fatal_error ("HexBiCylinder : Edge non trouve"); + return NULL; +} +// ====================================================== findQuad +Quad* BiCylinder::findQuad (Vertex* v1, Vertex* v2, + int dir, int nx, int ny, int nz) +{ + for (it_map=map_quad.begin() ; it_map!=map_quad.end() ; ++it_map) + { + int nro = it_map->second; + Quad* elt = tab_quad[nro]; + if (elt != NULL && elt->definedBy (v1, v2)) + { + int key = getKey (CylBig, dir, nx, ny, nz); + map_quad [key] = nro; + if (db) + printf ("findQuad [%d, %d,%d,%d] = E%d = '%d' = %s\n", + dir, nx, ny, nz, nro, it_map->first, + elt->getName()); + return elt; + } + } + fatal_error ("HexBiCylinder : Quad non trouve"); + return NULL; +} +// ====================================================== findQuad +Quad* BiCylinder::findQuad (Edge* e1, Edge* e2, int dir, int nx, int ny, int nz) +{ + for (it_map=map_quad.begin() ; it_map!=map_quad.end() ; ++it_map) + { + int nro = it_map->second; + Quad* elt = tab_quad[nro]; + if (elt != NULL && elt->definedBy (e1, e2)) + { + int key = getKey (CylBig, dir, nx, ny, nz); + map_quad [key] = nro; + if (db) + printf ("findQuad [%d, %d,%d,%d] = E%d = '%d' = %s\n", + dir, nx, ny, nz, nro, it_map->first, elt->getName()); + return elt; + } + } + fatal_error ("HexBiCylinder : Quad non trouve"); + return NULL; +} +// ====================================================== findHexa +Hexa* BiCylinder::findHexa (Quad* q1, Quad* q2, int nx, int ny, int nz) +{ + for (it_map=map_hexa.begin() ; it_map!=map_hexa.end() ; ++it_map) + { + int nro = it_map->second; + Hexa* elt = tab_hexa[nro]; + if (elt != NULL && elt->definedBy (q1, q2)) + { + int key = getKey (CylBig, nx, ny, nz); + map_hexa [key] = nro; + if (db) + printf ("findHexa [%d,%d,%d] = H%d = '%d'\n", + nx, ny, nz, nro, it_map->first); + return elt; + } + } + fatal_error ("HexBiCylinder : Hexa non trouve"); + return NULL; +} +// ====================================================== crossCylinders +int BiCylinder::crossCylinders (Cylinder* lun, Cylinder* lautre) +{ + if (lun->getRadius() < lautre->getRadius()) + { + cross_cyl1 = lun; + cross_cyl2 = lautre; + } + else + { + cross_cyl1 = lautre; + cross_cyl2 = lun; + } + + int ier = cross_cyl2->interCylinder (cross_cyl1, at_left, at_right, + cross_center); + if (ier != HOK) + return ier; + + cyl_fill = false; + cross_rayext [CylSmall] = cross_cyl1->getRadius (); + cross_rayext [CylBig] = cross_cyl2->getRadius (); + cross_rayint [CylSmall] = cross_rayext [CylSmall] / 2; + cross_rayint [CylBig ] = cross_rayext [CylBig ] / 2; + cross_hauteur [CylSmall] = cross_cyl1->getHeight (); + cross_hauteur [CylBig] = cross_cyl2->getHeight (); + + createLittleCyl (); + createBigCyl (); + adjustLittleSlice (1, 1); + adjustLittleSlice (0, 2); + adjustLittleSlice (0, 3); + adjustLittleSlice (1, 4); + + Vector* iprim = new Vector (cross_cyl1->getDirection()); + Vector* kprim = new Vector (cross_cyl2->getDirection()); + Vector* jprim = new Vector (kprim); + + iprim->renormer (); + kprim->renormer (); + jprim->vectoriel (kprim, iprim); + + // transfoVertices (cross_center, iprim, jprim, kprim); + + // Real3 snorm, bnorm; + // iprim->getCoord (snorm); + // kprim->getCoord (bnorm); + + Real3 bnorm = {0, 0, 1}; + Real3 snorm = {1, 0, 0}; + assoCylinders (snorm, bnorm); + +/********************************************* + if (at_left) + { + assoIntersection (NxExt, 1, snorm, bnorm); + if (grid_type == GR_BIPIPE) + { + assoIntersection (NxInt, 2, snorm, bnorm); + } + } + + if (at_right) + { + assoIntersection (NxExt, NbrSlices1-1, snorm, bnorm); + if (grid_type == GR_BIPIPE) + { + assoIntersection (NxInt, NbrSlices1-2, snorm, bnorm); + } + } + + ******************************************* */ + assoResiduelle (); + return HOK; +} +// ====================================================== createLittleCyl +void BiCylinder::createLittleCyl () +{ + Real3 base; + Vertex* vbase = cross_cyl1->getBase(); + + Real lg = cross_hauteur[CylSmall]; + Real h1 = calc_distance (cross_center, vbase->getPoint (base)); + Real h2 = cross_rayext[CylBig]*cos45; + Real h3 = (cross_rayext[CylBig] - cross_rayint[CylBig])*cos45; + + double t_haut [NbrVslices] = { -h1, -h2, -h2+h3, h2-h3, h2, lg-h1 }; + + for (int nk=0; nkgetBase(); + Real lg = cross_hauteur[cyl]; + Real rext = cross_rayext [cyl]; + Real rint = cross_rayint [cyl]; + Real h1 = calc_distance (cross_center, vbase->getPoint (base)); + Real h2 = rext * cos45; + Real h3 = lg - h1; + Real dh = (rext - rint)*cos45; + + addSlice (CylBig, 0, 0, -h1, rint); + addSlice (CylBig, 1, 0, -h1, rext); + addSlice (CylBig, 0, 1, -h2+dh, rint, true); + addSlice (CylBig, 1, 1, -h2, rext, true); + addSlice (CylBig, 0, 2, h2-dh, rint, true); + addSlice (CylBig, 1, 2, h2, rext, true); + addSlice (CylBig, 0, 3, h3, rint); + addSlice (CylBig, 1, 3, h3, rext); + + // A B C D + fillSlice (CylBig, 0,0, 0,1, 1,1, 1,0); + fillSlice (CylBig, 0,2, 0,3, 1,3, 1,2); +} +// ====================================================== adjustLittleSlice +void BiCylinder::adjustLittleSlice (int ni, int nk) +{ + Vertex* node = getVertexIJK (CylSmall, ni, 0, nk); + if (node==NULL) + return; + + double grayon2 = cross_rayext[CylBig] * cross_rayext[CylBig]; + double prayon = cross_rayext[CylSmall]; + if (ni==0) + { + grayon2 = cross_rayint[CylBig] * cross_rayint[CylBig]; + prayon = cross_rayint[CylSmall]; + } + + for (int nj=0; njgetX(); + if (qx>=0) node->setX ( px); + else node->setX (-px); + node->setY (py); + node->setZ (pz); + } +} +// ====================================================== addSlice +void BiCylinder::addSlice (int cyl, int ni, int nk, double hauteur, + double rayon, bool find) +{ + for (int nj=0 ; nj K + + ***************************************************************** */ +void BiCylinder::fillSlice (int cyl, int nia, int nka, int nib, int nkb, + int nic, int nkc, int nid, int nkd, + bool meddle) +{ + for (int nj0=0; nj0=NbrCotes) nj1=0; + Vertex* vace = getVertexIJK (cyl, nia, nj0, nka); + Vertex* vacf = getVertexIJK (cyl, nib, nj0, nkb); + Vertex* vadf = getVertexIJK (cyl, nic, nj0, nkc); + Vertex* vade = getVertexIJK (cyl, nid, nj0, nkd); + + Vertex* vbce = getVertexIJK (cyl, nia, nj1, nka); + Vertex* vbcf = getVertexIJK (cyl, nib, nj1, nkb); + Vertex* vbdf = getVertexIJK (cyl, nic, nj1, nkc); + Vertex* vbde = getVertexIJK (cyl, nid, nj1, nkd); + +/* ******************* + PutName (vace); + PutName (vacf); + PutName (vadf); + PutName (vade); + PutName (vbce); + PutName (vbcf); + PutName (vbdf); + PutName (vbde); + ******************* */ + + Edge* eac = addEdge (vace, vacf, cyl, dir_z, nia, nj0, nka); + Edge* ead = addEdge (vade, vadf, cyl, dir_z, nid, nj0, nkd); + Edge* eae = addEdge (vace, vade, cyl, dir_x, nia, nj0, nka); + Edge* eaf = addEdge (vacf, vadf, cyl, dir_x, nib, nj0, nkb); + + Edge* ebc = addEdge (vbce, vbcf, cyl, dir_z, nia, nj1, nka); + Edge* ebd = addEdge (vbde, vbdf, cyl, dir_z, nid, nj1, nkd); + Edge* ebe = addEdge (vbce, vbde, cyl, dir_x, nia, nj1, nka); + Edge* ebf = addEdge (vbcf, vbdf, cyl, dir_x, nib, nj1, nkb); + + Edge* ece = addEdge (vace, vbce, cyl, dir_y, nia, nj0, nka); + Edge* ecf = addEdge (vacf, vbcf, cyl, dir_y, nib, nj0, nkb); + Edge* edf = addEdge (vadf, vbdf, cyl, dir_y, nic, nj0, nkc); + Edge* ede = addEdge (vade, vbde, cyl, dir_y, nid, nj0, nkd); + + Quad* qa = addQuad (eac, eaf, ead, eae, cyl, dir_y, nia , nj0, nka); + Quad* qb = addQuad (ebc, ebf, ebd, ebe, cyl, dir_y, nia , nj1, nka); + Quad* qc = addQuad (eac, ecf, ebc, ece, cyl, dir_x, nia , nj0, nka); + Quad* qd = addQuad (ead, edf, ebd, ede, cyl, dir_x, nid , nj0, nkd); + Quad* qe = addQuad (eae, ede, ebe, ece, cyl, dir_z, nia , nj0, nka); + Quad* qf = addQuad (eaf, edf, ebf, ecf, cyl, dir_z, nib , nj0, nkb); + + addHexa (qa, qb, qc, qd, qe, qf, cyl, nia, nj0, nka); + } +} +// ====================================================== assoCylinders +void BiCylinder::assoCylinders (double* snormal, double* gnormal) +{ + assoSlice (CylSmall, 0, 0, snormal); + assoSlice (CylSmall, 1, 0, snormal); + assoSlice (CylSmall, 0, 5, snormal); + assoSlice (CylSmall, 1, 5, snormal); + + for (int nk=0 ; nk<4 ; nk++) + for (int ni=0 ; ni<2 ; ni++) + assoSlice (CylBig, ni, nk, gnormal); + + assoIntersection (1, 1, snormal, gnormal); + assoIntersection (0, 2, snormal, gnormal); + assoIntersection (0, 3, snormal, gnormal); + assoIntersection (1, 4, snormal, gnormal); + +} +// ====================================================== assoSlice +void BiCylinder::assoSlice (int cyl, int nx, int nzs, double* normal) +{ + Real3 center, pnt1, pnt2, vbase; + string brep; + int ny0 = 0; + int nyd = NbrCotes/2; + + Vertex* v0 = getVertexIJK (cyl, nx, ny0 , nzs); + Vertex* vd = getVertexIJK (cyl, nx, nyd , nzs); + + if (vd==NULL || v0==NULL) + return; + + v0->getPoint (pnt1); + vd->getPoint (pnt2); + + double rayon = 0; + for (int nro=0 ; nro (%s,%s)\n", edge->getName(), + edge->getVertex(0)->getName(), edge->getVertex(1)->getName(), + node0->getName(), node1->getName()); + + // Shape* shape = new Shape (brep); + + // shape->setBounds (ny*Alpha, (ny+1)*Alpha); + // edge ->addAssociation (shape); + + geom_asso_point ( ny *Theta*rayon, node0); + geom_asso_point ((ny+1)*Theta*rayon, node1); +} +// ===================================================== assoIntersection +int BiCylinder::assoIntersection (int nxs, int nzs, double* snorm, + double* bnorm) +{ + Real3 X_center = {0, 0, 0}; // provisoire, a la place de cross_center + Real3 pse, psw, sorig, sbase; + Real3 pbe, pbw, borig, bbase; + string brep; + int ny0 = 0; + int nyd = NbrCotes/2; + int MiddleSlice1 = 3; + + int nz = nzs < MiddleSlice1 ? 0 : 5; + + getVertexIJK (CylSmall, nxs, ny0 , nz)->getPoint (pse); + getVertexIJK (CylSmall, nxs, nyd , nz)->getPoint (psw); + getVertexIJK (CylBig, nxs, ny0 , 0) ->getPoint (pbe); + getVertexIJK (CylBig, nxs, nyd , 0) ->getPoint (pbw); + + double srayon = calc_distance (pse, psw)/2; + double brayon = calc_distance (pbe, pbw)/2; + + calc_milieu (psw, pse, sorig); + calc_milieu (pbw, pbe, borig); + calc_vecteur (psw, pse, sbase); + calc_vecteur (pbw, pbe, bbase); + + double shaut = calc_distance (X_center, sorig); + double bhaut = calc_distance (X_center, borig)*2; + double* orig = nzs < MiddleSlice1 ? sorig : X_center; // Pb orientation + + if (db) + { + PutCoord (borig); + PutCoord (sorig); + PutCoord (orig); + PutData (nz); + PutData (srayon); + PutData (brayon); + } + + int ier = geom_create_cylcyl (borig, bnorm, bbase, brayon, bhaut, + orig, snorm, sbase, srayon, shaut); + if (ier != HOK) + return ier; + + for (int ny=0 ; nyclearAssociation (); + } + + for (int ny=0 ; nyaddVertex ( 0,0,0); + Vertex* ori2 = docu->addVertex (-5,0,5); + Vector* vz = docu->addVector ( 0,0,1); + Vector* vx = docu->addVector ( 1,0,0); + + double r1 = 2*sqrt (2.0); + double r2 = 3*sqrt (2.0); + double l2 = 10; + double l1 = 10; + + Cylinder* cyl1 = docu->addCylinder (ori1, vz, r1, l1); + Cylinder* cyl2 = docu->addCylinder (ori2, vx, r2, l2); + + BiCylinder* grid = new BiCylinder (docu); + grid->crossCylinders (cyl1, cyl2); + return grid; +} +END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexBiCylinder.hxx b/src/HEXABLOCK/HexBiCylinder.hxx new file mode 100755 index 0000000..b26e221 --- /dev/null +++ b/src/HEXABLOCK/HexBiCylinder.hxx @@ -0,0 +1,115 @@ + +// Class : Gestion des tutaux en T (like castles in scotland) + +// Copyright (C) 2009-2011 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com +// +#ifndef __BI_CYLINDER_H_ +#define __BI_CYLINDER_H_ + +#include "HexElements.hxx" +#include + +BEGIN_NAMESPACE_HEXA + +class BiCylinder : public Elements +{ +public: + virtual int countHexa () { return nbr_hexas ; } + virtual int countQuad () { return nbr_quads ; } + virtual int countEdge () { return nbr_edges ; } + virtual int countVertex () { return nbr_vertex ; } + +public: + BiCylinder (Document* doc); + + virtual ~BiCylinder () {} + + Hexa* getHexaIJK (int part, int nx, int ny, int nz); + Quad* getQuadIJ (int part, int nx, int ny, int nz); + Quad* getQuadJK (int part, int nx, int ny, int nz); + Quad* getQuadIK (int part, int nx, int ny, int nz); + Edge* getEdgeI (int part, int nx, int ny, int nz); + Edge* getEdgeJ (int part, int nx, int ny, int nz); + Edge* getEdgeK (int part, int nx, int ny, int nz); + Vertex* getVertexIJK (int part, int nx, int ny, int nz); + + // Tutaux en T (like castles in scotland) + int crossCylinders (Cylinder* cyl1, Cylinder* cyl2); + +private : + + enum { NbrSlices=5, NbrVslices=NbrSlices+1, NbrCotes=4 }; + + void createLittleCyl (); + void createBigCyl (); + void adjustLittleSlice (int nx, int nzs); + + Vertex* addVertex (double px, double py, double pz, + int cyl, int ni, int nj, int nk); + Edge* addEdge (Vertex* v1, Vertex* v2, + int cyl, int dir, int nx, int ny, int nz); + Quad* addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, + int cyl, int dir, int nx, int ny, int nz); + Hexa* addHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, Quad* qf, + int cyl, int nx, int ny, int nz); + + Vertex* findVertex (double px, double py, double pz, int ni, int nj, int nk); + Edge* findEdge (Vertex* v1, Vertex* v2, int dir, int nx, int ny, int nz); + Quad* findQuad (Vertex* v1, Vertex* v2, int dir, int nx, int ny, int nz); + Quad* findQuad (Edge* e1, Edge* e2, int dir, int nx, int ny, int nz); + Hexa* findHexa (Quad* qa, Quad* qb, int nx, int ny, int nz); + + Edge* findEdge (Vertex* v1, Vertex* v2); + Quad* findQuad (Edge* e1, Edge* e2); + + void assoCylinder (int cyl, double* normal); + void assoCylinders (double* snormal, double* gnormal); + void assoSlice (int cyl, int nx, int nzs, double* norm); + void assoArc (int cyl, int nx, int ny, int nz, string& brep, double ray); + int assoIntersection (int nx, int nzlice, double* snorm, double* bnorm); + + + void addSlice (int cyl, int i, int k, double h, double r, bool find=false); + void fillSlice (int cyl, int nia, int nka, int nib, int nkb, int nic, + int nkc, int nid, int nkd, bool med=false); + void fillSmallCyl (); + + double getAngle (int nj) { return (2*((nj)%4)+1)*M_PI/4; } + int getKey (int cyl, int ni, int nj, int nk) + { return 1000*(cyl+1) + 100*ni + 10*nj + nk; } + int getKey (int cyl, int dd, int ni, int nj, int nk) + { return 10000*(cyl+1) + 1000*dd + 100*ni + 10*nj + nk; } +private : + Cylinder* cross_cyl1; // Petit + Cylinder* cross_cyl2; // gros + Real3 cross_center; + + map map_vertex, map_edge, map_quad, map_hexa; + map :: iterator it_map; + + int nbr_hexas1, nbr_quads1, nbr_edges1, nbr_vertex1; + double cross_rayext [V_TWO]; + double cross_rayint [V_TWO]; + double cross_hauteur [V_TWO]; + + bool at_right, at_left; +}; +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexBiCylinderShape.cxx b/src/HEXABLOCK/HexBiCylinderShape.cxx new file mode 100755 index 0000000..7b857c4 --- /dev/null +++ b/src/HEXABLOCK/HexBiCylinderShape.cxx @@ -0,0 +1,241 @@ +// +// CC++ : Interface Cascade de la classe Elements +// +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com +// +//--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 + +#include "HexBiCylinderShape.hxx" + +#include "HexDocument.hxx" +#include "HexNewShape.hxx" +#include "HexEdgeShape.hxx" + +#include "HexVertex.hxx" +#include "HexEdge.hxx" + +#ifndef NO_CASCADE + // Cylindre +#include +#include +#include +#include + +BEGIN_NAMESPACE_HEXA + +static bool db = false; +int BiCylinderShape::nbr_intersections = 0; + +// ====================================================== Constructeur +BiCylinderShape::BiCylinderShape (Document* doc) +{ + bi_docu = doc; + bi_shape = NULL; + no_inter = true; +} +// ====================================================== defineCyls +int BiCylinderShape::defineCyls (double* borig, double* bnorm, double* bbase, + double brayon, double bhaut, + double* sorig, double* snorm, double* sbase, + double srayon, double shaut) +{ + // --------------------------- Preparation + gp_Pnt gpb_orig (borig [dir_x], borig [dir_y], borig [dir_z]); + gp_Vec gpb_norm (bnorm [dir_x], bnorm [dir_y], bnorm [dir_z]); + gp_Vec gpb_vx (bbase [dir_x], bbase [dir_y], bbase [dir_z]); + gp_Ax2 gpb_axes (gpb_orig, gpb_norm, gpb_vx); +// gp_Ax2 gp_axes (gp_center, gp_norm, gp_vx); + + BRepPrimAPI_MakeCylinder make_bcyl (gpb_axes, brayon, bhaut); + make_bcyl.Build(); + + gp_Pnt gps_orig (sorig [dir_x], sorig [dir_y], sorig [dir_z]); + gp_Vec gps_vx (sbase [dir_x], sbase [dir_y], sbase [dir_z]); + gp_Vec gps_norm (snorm [dir_x], snorm [dir_y], snorm [dir_z]); + gp_Ax2 gps_axes (gps_orig, gps_norm, gpb_vx); + + BRepPrimAPI_MakeCylinder make_scyl (gps_axes, srayon, shaut); + make_scyl.Build(); + + if (NOT make_bcyl.IsDone()) + { + printf ("defineCyls : Can' build big cylinder\n"); + return HERR; + } + else if (NOT make_scyl.IsDone()) + { + printf ("defineCyls : Can' build small cylinder\n"); + return HERR; + } + // --------------------------- Intersection + + TopoDS_Shape cyl_big = make_bcyl.Shape(); + TopoDS_Shape cyl_small = make_scyl.Shape(); + + BRepAlgoAPI_Section make_inter (cyl_big, cyl_small, false); + make_inter.Approximation (true); + make_inter.Build(); + + if (NOT make_inter.IsDone()) + { + printf ("defineCyls : No intersection\n"); + return HERR; + } + + TopoDS_Shape cyl_inter = make_inter.Shape(); + // geom_make_brep (cyl_inter, brep); + + // --------------------------- Recuperation + char name [16]; + nbr_intersections ++; + sprintf (name, "inter_cyl%d", nbr_intersections); + bi_shape = bi_docu->addShape (name, SH_INTER); + bi_shape->setShape (cyl_inter, SH_INTER); + bi_shape->saveBrep (); // PROVISOIRE + + return HOK; +} +// ====================================================== anaVertex +// === Trouve le(s) ligne(s) contenant ce vertex et le(s) parametre(s) +int BiCylinderShape::anaVertex (Vertex* node, int* tline, double* tpara) +{ + Real3 point; + node->getPoint (point); + int nbsol = 0; + int nblines = bi_shape->countEdge (); + + for (int nl=0 ; nlgetEdgeShape (nl); + double param = line->getParam (point); + if (db) cout << " ... getParam " << node->getName() + << ", point=(" << point[0] << ", " << point[1] + << ", " << point[2] + << "), nl=" << nl << ", param=" << param << endl; + if (param>=0) + { + if (nbsol>=2) + return nbsol; + + tline [nbsol] = nl; + tpara [nbsol] = param; + nbsol ++; + } + } + + if (nbsol==1) + { + if (tpara[0]<=Epsil) + { + nbsol ++; + tpara[1] = 1.0; + tline[1] = tline[0]-1; + if (tline[1] <0) tline[1] = nblines-1; + } + else if (tpara[0]>=UnEpsil) + { + nbsol ++; + tpara[1] = 0; + tline[1] = tline[0]+1; + if (tline[1] >= nblines) tline[1] = 0; + } + } + + return nbsol; +} +// ====================================================== associate +// ==== On suppose une orientation correcte +int BiCylinderShape::associate (Edge* edge) +{ + + double tparam1 [V_TWO], tparam2 [V_TWO]; + int tline1 [V_TWO], tline2 [V_TWO]; + int sol1 = anaVertex (edge->getVertex(V_AMONT), tline1, tparam1); + int sol2 = anaVertex (edge->getVertex(V_AVAL), tline2, tparam2); + + if (sol1==0 || sol2==0) + return HERR; + + edge->clearAssociation (); + // Ligne commune ? + for (int ns1=0 ; ns1getEdgeShape (nlig); + double param1 = tparam1 [ns1]; + double param2 = tparam2 [ns2]; + if (param1 >= 1.0-Epsil && param1 <= 1.0+Epsil) + param1 = 0.0; + if (param2 >= -Epsil && param2 <= Epsil) + param2 = 1.0; + if (param1 < param2) + { + associate (edge, line, param1, param2, V_TWO); + } + else + // Le debut de la ligne (fermee) est entre les 2 vertex) + { + associate (edge, line, param1, 1, V_AMONT); + associate (edge, line, 0, param2, V_AVAL); + } + return HOK; + } + } + } + + + EdgeShape* line1 = bi_shape->getEdgeShape (tline1[0]); + EdgeShape* line2 = bi_shape->getEdgeShape (tline2[0]); + + associate (edge, line1, tparam1[0], 1, V_AMONT); + associate (edge, line2, 0, tparam2[0], V_AVAL); + return HOK; +} +// ====================================================== associate +// ==== On suppose une orientation correcte +int BiCylinderShape::associate (Edge* edge, EdgeShape* line, double para1, + double para2, int extrem) +{ + edge->addAssociation (line, para1, para2); + + return HOK; // PROVISOIRE + Real3 point; + Vertex* vertex; + + if (extrem != V_AVAL) + { + line->getPoint (para1, point); + vertex = edge->getVertex (V_AMONT); + vertex->setAssociation (point); + } + + if (extrem != V_AMONT) + { + line->getPoint (para2, point); + vertex = edge->getVertex (V_AVAL); + vertex->setAssociation (point); + } +} +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexBiCylinderShape.hxx b/src/HEXABLOCK/HexBiCylinderShape.hxx new file mode 100755 index 0000000..c46d28c --- /dev/null +++ b/src/HEXABLOCK/HexBiCylinderShape.hxx @@ -0,0 +1,58 @@ +// +// CC++ : Representation Cascade d'un bi-cylindre +// +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef __BI_CYLINDER_SHAPE_HXX_ +#define __BI_CYLINDER_SHAPE_HXX_ + +#include "HexGlobale.hxx" + +#ifndef NO_CASCADE + +BEGIN_NAMESPACE_HEXA + +class BiCylinderShape +{ +public : + BiCylinderShape (Document* doc); + ~BiCylinderShape () { } + + NewShape* getShape() { return bi_shape; } + + int defineCyls (double* borig, double* bnorm, double* bbase, + double brayon, double bhaut, + double* sorig, double* snorm, double* sbase, + double srayon, double shaut); + int associate (Edge* edge); + int associate (Edge* edge, EdgeShape* line, double p1, double p2, int extr); + +private : + int anaVertex (Vertex* node, int* tline, double* tpara); + +private : + static int nbr_intersections; + Document* bi_docu; + NewShape* bi_shape; + bool no_inter; +}; +END_NAMESPACE_HEXA +#endif +#endif diff --git a/src/HEXABLOCK/HexCloner.cxx b/src/HEXABLOCK/HexCloner.cxx index 31edc5a..3d5473e 100755 --- a/src/HEXABLOCK/HexCloner.cxx +++ b/src/HEXABLOCK/HexCloner.cxx @@ -28,7 +28,9 @@ #include "HexVertex.hxx" #include "HexElements.hxx" -#include "HexShape.hxx" +#include "HexVertexShape.hxx" +#include "HexEdgeShape.hxx" +#include "HexFaceShape.hxx" BEGIN_NAMESPACE_HEXA @@ -44,30 +46,20 @@ Cloner::Cloner (Matrix* mat) // ============================================================== clonerVertex Vertex* Cloner::clonerVertex (Vertex* orig) { - if (orig == NULL) - return orig; - - Vertex* copie = clone_vertex [orig]; - if (copie != NULL) - return copie; + if (orig == NULL) + return orig; - copie = new Vertex (orig); - matrice -> perform (copie); - clone_vertex [orig] = copie; + Vertex* copie = clone_vertex [orig]; + if (copie != NULL) + return copie; - Shape* tshape = copie->getAssociation (); - Shape* shape = orig ->getAssociation (); - if (tshape != NULL || shape == NULL) - return copie; + copie = new Vertex (orig); + matrice -> perform (copie); + clone_vertex [orig] = copie; - string brep = shape->getBrep(); - string trep; - transfo_brep (brep, matrice, trep); - tshape = new Shape (trep); - copie ->setAssociation (tshape); if (db) { - printf ( " --- Cloner::Asso (%s) -> asso (%s)\n", orig ->getName (), + printf ( " --- Cloner::Asso (%s) -> asso (%s)\n", orig ->getName (), copie->getName ()); } return copie; @@ -96,10 +88,11 @@ Edge* Cloner::clonerEdge (Edge* orig) orig ->printName ("\n"); } - const Shapes & new_asso = copie->getAssociations (); - int nbass = new_asso.size(); - if (nbass!=0) - return copie; +/*********************** + // const Shapes & new_asso = copie->getAssociations (); TODO New Shape + // int nbass = new_asso.size(); + // if (nbass!=0) + // return copie; const Shapes & tab_asso = orig->getAssociations (); nbass = tab_asso.size(); @@ -110,17 +103,17 @@ Edge* Cloner::clonerEdge (Edge* orig) string trep; transfo_brep (brep, matrice, trep); Shape* tshape = new Shape (trep); - tshape->setBounds (shape->debut, shape->fin); + tshape->setBounds (shape->getStart(), shape->getEnd()); copie ->addAssociation (tshape); if (db) { - printf ( " --- Cloner::Asso (%s) -> asso (%s)\n", orig ->getName (), + printf ( " --- Cloner::Asso (%s) -> asso (%s)\n", orig ->getName (), copie->getName ()); geom_dump_asso (orig ); geom_dump_asso (copie); } } - +***************************************************/ return copie; } // ============================================================== clonerQuad @@ -135,18 +128,18 @@ Quad* Cloner::clonerQuad (Quad* orig) copie = new Quad (orig); - for (int nro=0 ; nroq_edge [nro] = clonerEdge (orig->q_edge [nro]); - for (int nro=0 ; nroq_vertex [nro] = clonerVertex (orig->q_vertex [nro]); copie->majReferences (); clone_quad [orig] = copie; - +/******************************************************************* const Shapes & new_asso = copie->getAssociations (); int nbass = new_asso.size(); - if (nbass!=0) + if (nbass!=0) return copie; const Shapes & tab_asso = orig->getAssociations (); @@ -160,10 +153,11 @@ Quad* Cloner::clonerQuad (Quad* orig) Shape* tshape = new Shape (trep); copie ->addAssociation (tshape); if (db) - printf ( " --- Asso (%s) -> asso (%s)\n", orig ->getName (), + printf ( " --- Asso (%s) -> asso (%s)\n", orig ->getName (), copie->getName ()); } +***************************************************/ return copie; } // ============================================================== clonerHexa @@ -180,10 +174,10 @@ Hexa* Cloner::clonerHexa (Hexa* orig) for (int nro=0 ; nroh_quad [nro] = clonerQuad (orig->h_quad [nro]); - for (int nro=0 ; nroh_edge [nro] = clonerEdge (orig->h_edge [nro]); - for (int nro=0 ; nroh_vertex [nro] = clonerVertex (orig->h_vertex [nro]); copie->majReferences (); diff --git a/src/HEXABLOCK/HexCrossElements.cxx b/src/HEXABLOCK/HexCrossElements.cxx index e1b8204..6b46a77 100755 --- a/src/HEXABLOCK/HexCrossElements.cxx +++ b/src/HEXABLOCK/HexCrossElements.cxx @@ -17,8 +17,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com #include "HexCrossElements.hxx" @@ -30,7 +30,8 @@ #include "HexGlobale.hxx" #include "HexCylinder.hxx" -#include "HexShape.hxx" +#include "HexOldShape.hxx" +#include "HexNewShape.hxx" #include @@ -40,14 +41,8 @@ static const double UnSur2pi = DEMI/M_PI; BEGIN_NAMESPACE_HEXA -void geom_create_circle (double* milieu, double rayon, double* normale, - double* base, string& brep); - -void geom_define_line (string& brep); -void geom_asso_point (double angle, Vertex* node); - // ====================================================== Constructeur -CrossElements::CrossElements (Document* doc, EnumGrid type) +CrossElements::CrossElements (Document* doc, EnumGrid type) : Elements (doc) { cross_cyl1 = NULL; @@ -55,9 +50,10 @@ CrossElements::CrossElements (Document* doc, EnumGrid type) cross_cyl2 = NULL; cross_center = NULL; grid_type = type; - angle_inter [CylSmall] = angle_inter [CylBig] = 0; + angle_intermed = angle_inter [CylSmall] = angle_inter [CylBig] = 0; at_right = at_left = true; is_filled = false; + grid_geom = NULL; } // ====================================================== resize void CrossElements::resize () @@ -75,7 +71,7 @@ void CrossElements::resize () nbr_vertex1 = size_vx*size_vy* size_v1z; nbr_quads1 = nbr_vertex1*DIM3; nbr_edges1 = nbr_quads1; - nbr_hexas1 = size_hx * size_hy * size_h1z; + nbr_hexas1 = size_hx * size_hy * size_h1z; nbr_vertex = nbr_vertex1 + size_vx * size_vy * size_v1z; nbr_quads = nbr_vertex*DIM3; @@ -95,10 +91,10 @@ void CrossElements::resize () // ====================================================== indHexa int CrossElements::indHexa (int cyl, int nx, int ny, int nz) { - if (cyl<0 || cyl>1) + if (cyl<0 || cyl>1) return NOTHING; - if ( nx < 0 || nx >= size_hx || ny < 0 || ny >= size_hy - || nz < 0 || nz >= size_hz[cyl]) return NOTHING; + if ( nx < 0 || nx >= size_hx || ny < 0 || ny >= size_hy + || nz < 0 || nz >= size_hz[cyl]) return NOTHING; int nro = cyl*nbr_hexas1 + nx + size_hx*ny + size_hx*size_hy*nz; return nro; @@ -106,12 +102,12 @@ int CrossElements::indHexa (int cyl, int nx, int ny, int nz) // ====================================================== indQuad int CrossElements::indQuad (int cyl, int dd, int nx, int ny, int nz) { - if (cyl<0 || cyl>1 || dd <0 || dd >= DIM3) + if (cyl<0 || cyl>1 || dd <0 || dd >= DIM3) return NOTHING; - if ( nx < 0 || nx >= size_vx || ny < 0 || ny >= size_vy - || nz < 0 || nz >= size_vz[cyl]) return NOTHING; + if ( nx < 0 || nx >= size_vx || ny < 0 || ny >= size_vy + || nz < 0 || nz >= size_vz[cyl]) return NOTHING; - int nro = cyl*nbr_quads1 + nx + size_vx*ny + size_vx*size_vy*nz + int nro = cyl*nbr_quads1 + nx + size_vx*ny + size_vx*size_vy*nz + size_vx*size_vy*size_vz[cyl]*dd; return nro; } @@ -123,10 +119,10 @@ int CrossElements::indEdge (int cyl, int dd, int nx, int ny, int nz) // ====================================================== indVertex int CrossElements::indVertex (int cyl, int nx, int ny, int nz) { - if (cyl<0 || cyl>1) + if (cyl<0 || cyl>1) return NOTHING; - if ( nx < 0 || nx >= size_vx || ny < 0 || ny >= size_vy - || nz < 0 || nz >= size_vz[cyl]) + if ( nx < 0 || nx >= size_vx || ny < 0 || ny >= size_vy + || nz < 0 || nz >= size_vz[cyl]) return NOTHING; int nro = cyl*nbr_vertex1 + nx + size_vx*ny + size_vx*size_vy*nz; @@ -139,7 +135,7 @@ Hexa* CrossElements::getHexaIJK (int cyl, int nx, int ny, int nz) int nro = indHexa (cyl, nx, ny, nz); if (nro >= 0 && tab_hexa[nro]!= NULL && tab_hexa[nro]->isHere ()) - return tab_hexa [nro]; + return tab_hexa [nro]; else return NULL; } @@ -150,7 +146,7 @@ Quad* CrossElements::getQuadIJ (int cyl, int nx, int ny, int nz) if (nro<0) return NULL; - return tab_quad [nro]; + return tab_quad [nro]; } // ====================================================== getQuadJK Quad* CrossElements::getQuadJK (int cyl, int nx, int ny, int nz) @@ -158,7 +154,7 @@ Quad* CrossElements::getQuadJK (int cyl, int nx, int ny, int nz) int nro = indQuad (cyl, dir_x, nx, ny, nz); if (nro<0) return NULL; - return tab_quad [nro]; + return tab_quad [nro]; } // ====================================================== getQuadIK Quad* CrossElements::getQuadIK (int cyl, int nx, int ny, int nz) @@ -166,7 +162,7 @@ Quad* CrossElements::getQuadIK (int cyl, int nx, int ny, int nz) int nro = indQuad (cyl, dir_y, nx, ny, nz); if (nro<0) return NULL; - return tab_quad [nro]; + return tab_quad [nro]; } // ====================================================== getEdgeI Edge* CrossElements::getEdgeI (int cyl, int nx, int ny, int nz) @@ -174,7 +170,7 @@ Edge* CrossElements::getEdgeI (int cyl, int nx, int ny, int nz) int nro = indEdge (cyl, dir_x, nx, ny, nz); if (nro<0) return NULL; - return tab_edge [nro]; + return tab_edge [nro]; } // ====================================================== getEdgeJ Edge* CrossElements::getEdgeJ (int cyl, int nx, int ny, int nz) @@ -182,7 +178,7 @@ Edge* CrossElements::getEdgeJ (int cyl, int nx, int ny, int nz) int nro = indEdge (cyl, dir_y, nx, ny, nz); if (nro<0) return NULL; - return tab_edge [nro]; + return tab_edge [nro]; } // ====================================================== getEdgeK Edge* CrossElements::getEdgeK (int cyl, int nx, int ny, int nz) @@ -190,7 +186,7 @@ Edge* CrossElements::getEdgeK (int cyl, int nx, int ny, int nz) int nro = indEdge (cyl, dir_z, nx, ny, nz); if (nro<0) return NULL; - return tab_edge [nro]; + return tab_edge [nro]; } // ====================================================== getVertexIJK Vertex* CrossElements::getVertexIJK (int cyl, int nx, int ny, int nz) @@ -198,7 +194,7 @@ Vertex* CrossElements::getVertexIJK (int cyl, int nx, int ny, int nz) int nro = indVertex (cyl, nx, ny, nz); if (nro<0) return NULL; - return tab_vertex [nro]; + return tab_vertex [nro]; } // ------------------------------------------------------------------------ // ====================================================== setHexa @@ -212,7 +208,7 @@ void CrossElements::setHexa (Hexa* elt, int cyl, int nx, int ny, int nz) } int nro = indHexa (cyl, nx, ny, nz); - if (nro<0) + if (nro<0) return; tab_hexa [nro] = elt; } @@ -227,7 +223,7 @@ void CrossElements::setQuad (Quad* elt, int cyl, int dd, int nx, int ny, int nz) } int nro = indQuad (cyl, dd, nx, ny, nz); - if (nro<0) + if (nro<0) return; tab_quad [nro] = elt; } @@ -242,7 +238,7 @@ void CrossElements::setEdge (Edge* elt, int cyl, int dd, int nx, int ny, int nz) } int nro = indEdge (cyl, dd, nx, ny, nz); - if (nro<0) + if (nro<0) return; tab_edge [nro] = elt; } @@ -257,7 +253,7 @@ void CrossElements::setVertex (Vertex* elt, int cyl, int nx, int ny, int nz) } int nro = indVertex (cyl, nx, ny, nz); - if (nro<0) + if (nro<0) return; tab_vertex [nro] = elt; } @@ -265,11 +261,11 @@ void CrossElements::setVertex (Vertex* elt, int cyl, int nx, int ny, int nz) inline bool isequals (double v1, double v2) { const double eps = 0.01; - bool equals = v1 <= v2 + eps && v1 >= v2 - eps; + bool equals = v1 <= v2 + eps && v1 >= v2 - eps; return equals; } // ====================================================== setVertex (2) -void CrossElements::setVertex (int cyl, int nx, int ny, int nz, double px, +void CrossElements::setVertex (int cyl, int nx, int ny, int nz, double px, double py, double pz) { if (isequals (px, 0) && isequals (py, -1.5) && isequals (pz, 5)) @@ -277,7 +273,7 @@ void CrossElements::setVertex (int cyl, int nx, int ny, int nz, double px, cyl, nx,ny,nz, px,py,pz); int nro = indVertex (cyl, nx, ny, nz); - if (nro<0) + if (nro<0) return; else if (tab_vertex[nro] != NULL) { @@ -288,12 +284,12 @@ void CrossElements::setVertex (int cyl, int nx, int ny, int nz, double px, printf (" ************ ATTENTION ****************\n"); printf (" Creation d'un vertex : Cyl%d [%d,%d,%d] = (%g,%g,%g)\n", cyl, nx,ny,nz, px,py,pz); - printf (" Indice %d deja occupe par le vertex (%g,%g,%g)\n", nro, + printf (" Indice %d deja occupe par le vertex (%g,%g,%g)\n", nro, node->getX(), node->getY(), node->getZ()); return; } - + int trouve = findVertex (px, py, pz); if (trouve>=0) { @@ -307,11 +303,11 @@ void CrossElements::setVertex (int cyl, int nx, int ny, int nz, double px, setVertex (node, cyl, nx, ny, nz); } // ====================================================== copyEdge -void CrossElements::copyEdge (int d1, int i1, int j1, int k1, int d2, int i2, +void CrossElements::copyEdge (int d1, int i1, int j1, int k1, int d2, int i2, int j2, int k2) { Edge* edge = NULL; - switch (d1) + switch (d1) { case dir_x : edge = getEdgeI (CylSmall, i1, j1, k1); break; @@ -324,11 +320,11 @@ void CrossElements::copyEdge (int d1, int i1, int j1, int k1, int d2, int i2, setEdge (edge, CylBig, d2, i2, j2, k2); } // ====================================================== copyQuad -void CrossElements::copyQuad (int d1, int i1, int j1, int k1, int d2, int i2, +void CrossElements::copyQuad (int d1, int i1, int j1, int k1, int d2, int i2, int j2, int k2) { Quad* quad = NULL; - switch (d1) + switch (d1) { case dir_x : quad = getQuadJK (CylSmall, i1, j1, k1); break; @@ -341,18 +337,18 @@ void CrossElements::copyQuad (int d1, int i1, int j1, int k1, int d2, int i2, setQuad (quad, CylBig, d2, i2, j2, k2); } // ====================================================== addEdge -Edge* CrossElements::addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, +Edge* CrossElements::addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, int nx, int ny, int nz) { Edge* edge = NULL; if (v1==NULL || v2==NULL) return NULL; - else if (cyl==CylBig) + else if (cyl==CylBig) { edge = findEdge1 (v1, v2); /* ************************************************ - if (edge != NULL) + if (edge != NULL) { printf (" Edge (%d, %d,%d,%d) trouve = ", dir, nx, ny, nz); edge->printName ("\n"); @@ -360,7 +356,7 @@ Edge* CrossElements::addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, ************************************************ */ } - if (edge == NULL) + if (edge == NULL) edge = newEdge (v1, v2); setEdge (edge, cyl, dir, nx, ny, nz); @@ -389,10 +385,10 @@ Hexa* CrossElements::addHexa (Quad* q1, Quad* q2, Quad* q3, Quad* q4, Quad* q5, ************************** */ Hexa* hexa = NULL; - if (cyl==CylBig) + if (cyl==CylBig) hexa = findHexa1 (q1, q2); - if (hexa == NULL) + if (hexa == NULL) hexa = newHexa (q1, q2, q3, q4, q5, q6); else if (db) { @@ -404,14 +400,14 @@ Hexa* CrossElements::addHexa (Quad* q1, Quad* q2, Quad* q3, Quad* q4, Quad* q5, return hexa; } // ====================================================== addQuad -Quad* CrossElements::addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, int cyl, +Quad* CrossElements::addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, int cyl, int dir, int nx, int ny, int nz) { Quad* quad = NULL; - if (cyl==CylBig) + if (cyl==CylBig) quad = findQuad1 (e1, e3); - if (quad == NULL) + if (quad == NULL) quad = newQuad (e1, e2, e3, e4); else if (db) { @@ -482,7 +478,7 @@ void CrossElements::fillGrid (int cyl, int deb, int fin) Edge* e3 = getEdgeI (cyl, nx, ny1, nz); Edge* e4 = getEdgeJ (cyl, nx, ny, nz); - addQuad (e1, e2, e3, e4, cyl, dir_z, nx, ny, nz); + addQuad (e1, e2, e3, e4, cyl, dir_z, nx, ny, nz); } if (nz>0) @@ -499,7 +495,7 @@ void CrossElements::fillGrid (int cyl, int deb, int fin) Edge* e2 = getEdgeI (cyl, nx, ny, nz); Edge* e3 = getEdgeK (cyl, nx, ny, nz-1); - addQuad (e0, edge, e2, e3, cyl, dir_y, nx, ny, nz-1); + addQuad (e0, edge, e2, e3, cyl, dir_y, nx, ny, nz-1); } // Cloisons exterieures *** for (int ny=0 ; nygetPoint (pnt1); - v_n->getPoint (pnt2); + v_s->getPoint (pnt1); + v_n->getPoint (pnt2); double rayon = calc_distance (pnt1, pnt2)/2; - for (int nro=0 ; nroaddCircle (center, rayon, normal, base); for (int ny=0 ; nysetBounds (angle1*UnSur2pi, angle2*UnSur2pi); - edge ->addAssociation (shape); - - Vertex* node = getVertexIJK (cyl, nx, ny, nz); - geom_asso_point (angle1*rayon, node); + grid_geom->addAssociation (edge, subid, angle1*UnSur2pi, angle2*UnSur2pi); - int ny1 = ny+1; - if (ny1>=S_MAXI) - ny1 = 0; + // Assurer avec les vertex + int ny2 = ny>=S_MAXI-1 ? 0 : ny+1; + Vertex* node1 = getVertexIJK (cyl, nx, ny, nz); + Vertex* node2 = getVertexIJK (cyl, nx, ny2, nz); - node = getVertexIJK (cyl, nx, ny1, nz); - geom_asso_point (angle2*rayon, node); + grid_geom->addAssociation (node1, subid, angle1*UnSur2pi); + grid_geom->addAssociation (node2, subid, angle2*UnSur2pi); +} +// ====================================================== getAngleInter +// ==== Angle intersection intermediaire +double CrossElements::getAngleInter (int cyl, int nz) +{ + if (cyl==CylBig && (nz==1 || nz==3)) + return angle_intermed; + else + return angle_inter[cyl]; } // ====================================================== getAngle -double CrossElements::getAngle (int cyl, int nj) +double CrossElements::getAngle (int cyl, int nj, int nz) { switch (nj) { @@ -795,7 +794,7 @@ void CrossElements::addVertex (int cyl, int ni, int nj, int nk, double px, rayon = cross_rayon [cyl][ni]; double theta = getAngle (cyl, nj); - if (cyl==CylSmall) + if (cyl==CylSmall) setVertex (cyl, ni, nj, nk, px, rayon*cos(theta), rayon*sin(theta)); else setVertex (cyl, ni, nj, nk, rayon*cos(theta), rayon*sin(theta), px); diff --git a/src/HEXABLOCK/HexCrossElements.hxx b/src/HEXABLOCK/HexCrossElements.hxx index 07d31ea..46c8525 100755 --- a/src/HEXABLOCK/HexCrossElements.hxx +++ b/src/HEXABLOCK/HexCrossElements.hxx @@ -33,7 +33,7 @@ enum { MiddleSlice1=NbrSlices1/2}; enum { Cyl1=CylSmall, Cyl2=CylBig }; enum { NO_CYL=-1, NO_PIPE=0, IS_HERE=1 }; -class CrossElements : public Elements +class CrossElements : public Elements { public: virtual int countHexa () { return nbr_hexas ; } @@ -62,7 +62,7 @@ public: void dumpHexas (); private : - + void resize (); void fillGrid (int cyl, int deb=-1, int fin=-1); void fillCenter (int cyl, int deb, int fin); @@ -73,7 +73,7 @@ private : void copyEdge (int d1, int i, int j, int k, int d2, int i2, int j2, int k2); void copyQuad (int d1, int i, int j, int k, int d2, int i2, int j2, int k2); - void setVertex (int cyl, int nx, int ny, int nz, double px, double py, + void setVertex (int cyl, int nx, int ny, int nz, double px, double py, double pz); void setVertex (Vertex* vv, int cyl, int nx, int ny, int nz); @@ -81,9 +81,9 @@ private : void setQuad (Quad* quad, int cyl, int dir, int nx, int ny, int nz); void setHexa (Hexa* cell, int cyl, int nx, int ny, int nz); - Edge* addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, int nx, + Edge* addEdge (Vertex* v1, Vertex* v2, int cyl, int dir, int nx, int ny, int nz); - Quad* addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, int cyl, int dir, + Quad* addQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4, int cyl, int dir, int nx, int ny, int nz); Hexa* addHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, Quad* qf, int cyl, int nx, int ny, int nz); @@ -99,12 +99,15 @@ private : void assoCylinder (int cyl, double* normal); void assoSlice (int cyl, double* base, double* norm, int nx, int zlice); - void assoArc (int cyl, int nx, int ny, int nz, string& brep, double ray); + void assoArc (int cyl, int nx, int ny, int nz, int subid); + void assoArcMid (double mid[], int nx, int ny, int nz, double ray, int subid); void assoBigMiddle (double* base, double* normal, int nzlice); int assoIntersection (int nx, int nzlice, double* snorm, double* bnorm); + void adjustAsso (int nx, int ny, int nz, int sens); - double getAngle (int cyl, int ny); + double getAngle (int cyl, int ny, int nz=0); + double getAngleInter (int cyl, int nz); void addSlice (int cyl, int ni, int nk, double px, double rayon=-1); void addVertex (int cyl, int ni, int nj, int nk, double px, double rayon); void majIntersection (); @@ -123,12 +126,14 @@ private : int size_vz[BiCyl], size_hz[BiCyl]; int nbr_hexas1, nbr_quads1, nbr_edges1, nbr_vertex1; - double angle_inter [BiCyl]; + double angle_inter [BiCyl]; + double angle_intermed; double cross_rayon [BiCyl][SizeRay]; double big_hauteur [size_v2z]; bool at_right, at_left; int cyl_right, cyl_left; + NewShape* grid_geom; }; END_NAMESPACE_HEXA #endif diff --git a/src/HEXABLOCK/HexCrossElements_build.cxx b/src/HEXABLOCK/HexCrossElements_build.cxx index 709ec72..e866a94 100755 --- a/src/HEXABLOCK/HexCrossElements_build.cxx +++ b/src/HEXABLOCK/HexCrossElements_build.cxx @@ -30,7 +30,10 @@ #include "HexGlobale.hxx" #include "HexCylinder.hxx" -#include "HexShape.hxx" +#include "HexNewShape.hxx" +#include "HexBiCylinderShape.hxx" +#include "HexAssoEdge.hxx" +#include "HexEdgeShape.hxx" static bool db = false; @@ -38,20 +41,9 @@ BEGIN_NAMESPACE_HEXA static const int MaxLevel = 7; static const double epaiss2 = 0.5; -static const double UnSur2pi = DEMI/M_PI; +static const double UnSur2pi = DEMI/M_PI; -double calcul_centre (Vertex* orig, Vertex* inter); - -void geom_define_line (string& brep); -void geom_asso_point (double angle, Vertex* node); - -void geom_create_circle (double* milieu, double rayon, double* normale, - double* base, string& brep); -int geom_create_cylcyl (double* borig, double* bnorm, double* bbase, - double bray, double bhaut, - double* sorig, double* snorm, double* sbase, - double sray, double shaut); -int geom_asso_cylcyl (Edge* edge); +double calcul_centre (Vertex* orig, Vertex* inter); // ====================================================== createBigCyl void CrossElements::createBigCyl () @@ -95,7 +87,7 @@ void CrossElements::createBigCyl () //------------------------------- Reprise des vertex du cylindre 1 //------------------------------- Centre - if (grid_type != GR_BIPIPE) + if (grid_type != GR_BIPIPE) copyVertex (NxExt, S_S, 3, iv0, 0, k1); //------------------------------- Creation Vertex Nord-Sud @@ -106,7 +98,7 @@ void CrossElements::createBigCyl () setVertex (CylBig, NxInt, S_N, nk, xi1, yi1, big_hauteur[nk]); setVertex (CylBig, NxInt, S_S, nk, xi2, yi2, big_hauteur[nk]); } - + //------------------------------- Face k1 externe : copyVertex (NxExt, S_S, 5, NxExt, S_E, k1); @@ -165,7 +157,7 @@ void CrossElements::createBigCyl () // ------------------------------------------------------------ //------------------------------- Centre - if (grid_type != GR_BIPIPE) + if (grid_type != GR_BIPIPE) copyVertex (NxExt, S_N, 3, iv0, 0, k3); //------------------------------- Face k3 externe : @@ -192,7 +184,7 @@ void CrossElements::createBigCyl () //------------------------------- Remplissage - if (grid_type == GR_BIPIPE) + if (grid_type == GR_BIPIPE) { for (int nj=0; njgetHeight () -c1 }; - double rm = ( cross_rayon [CylSmall][NxExt] - + cross_rayon [CylSmall][NxInt]) / 2; + double rm = ( cross_rayon [CylSmall][NxExt] + + cross_rayon [CylSmall][NxInt]) / 2; double rc = cross_rayon [CylBig] [NxInt]; - double t_rayext [MaxLevel] = { -1, -1, rm, rc, rm, -1, -1 }; + double t_rayext [MaxLevel] = { -1, -1, rm, rc, rm, -1, -1 }; /* ******************************************************************* int nkdeb = at_left ? 0 : size_v1z/2; @@ -257,8 +249,8 @@ void CrossElements::createLittleCyl () for (int nk = nkdeb ; nkinterCylinder (cross_cyl1, at_left, at_right); if (cross_center==NULL) + { + setError (HERR); return HERR; + } if (at_left) cyl_left = IS_HERE; else if (grid_type == GR_BIPIPE) cyl_left = NO_PIPE; @@ -302,7 +297,7 @@ int CrossElements::crossCylinders (Cylinder* lun, Cylinder* lautre, bool fill) double cross_igray1 = cross_gray1 * epaiss2; double cross_igray2 = cross_gray2 * epaiss2; - if (db) + if (db) { HexDisplay (cross_gray1); HexDisplay (cross_gray2); @@ -311,7 +306,8 @@ int CrossElements::crossCylinders (Cylinder* lun, Cylinder* lautre, bool fill) } angle_inter [CylSmall] = M_PI/6; - angle_inter [CylBig] = asin (cross_gray1/cross_gray2); + angle_inter [CylBig] = asin (cross_gray1/cross_gray2); + angle_intermed = angle_inter [CylBig]; cross_rayon [CylSmall] [0] = cross_rayon [CylBig] [0] = 0; @@ -323,22 +319,42 @@ int CrossElements::crossCylinders (Cylinder* lun, Cylinder* lautre, bool fill) createLittleCyl (); createBigCyl (); + Vertex* node = NULL; + double h1=0, h3=0, dx=1 , dy=1; if (cyl_left!=NO_PIPE) { adjustLittleSlice (NxExt, 1, NxExt); adjustLittleSlice (NxInt, 1, NxExt); - if (grid_type == GR_BIPIPE) + if (grid_type == GR_BIPIPE) adjustLittleSlice (NxInt, 2, NxInt); + dx = getVertexIJK (CylBig, NxExt, S_NW, 1)->getX(); + dy = getVertexIJK (CylBig, NxExt, S_NW, 1)->getY(); + h1 = getVertexIJK (CylBig, NxExt, S_NW, 1)->getZ(); + h3 = getVertexIJK (CylBig, NxExt, S_NW, 3)->getZ(); } if (cyl_right!=NO_PIPE) { adjustLittleSlice (NxExt, 5, NxExt); adjustLittleSlice (NxInt, 5, NxExt); - if (grid_type == GR_BIPIPE) + if (grid_type == GR_BIPIPE) adjustLittleSlice (NxInt, 4, NxInt); + dx = -getVertexIJK (CylBig, NxExt, S_NE, 1)->getX(); + dy = getVertexIJK (CylBig, NxExt, S_NE, 1)->getY(); + h1 = getVertexIJK (CylBig, NxExt, S_NE, 1)->getZ(); + h3 = getVertexIJK (CylBig, NxExt, S_NE, 3)->getZ(); } + for (int ny=0 ; nysetZ(h1); + getVertexIJK (CylBig, NxExt, ny, 3)->setZ(h3); + } + } + + angle_intermed = atan (dy/dx); Vector* iprim = new Vector (cross_cyl1->getDirection()); Vector* kprim = new Vector (cross_cyl2->getDirection()); Vector* jprim = new Vector (kprim); @@ -352,28 +368,52 @@ int CrossElements::crossCylinders (Cylinder* lun, Cylinder* lautre, bool fill) Real3 snorm, bnorm; iprim->getCoord (snorm); kprim->getCoord (bnorm); + + char name [12]; + sprintf (name, "grid_%02d", el_id); + grid_geom = el_root->addShape (name, SH_INTER); + grid_geom -> openShape(); assoCylinder (CylSmall, snorm); assoCylinder (CylBig, bnorm); + grid_geom -> closeShape(); if (cyl_left == IS_HERE) - { + { assoIntersection (NxExt, 1, snorm, bnorm); - if (grid_type == GR_BIPIPE) - { + if (grid_type == GR_BIPIPE) + { assoIntersection (NxInt, 2, snorm, bnorm); } } if (cyl_right == IS_HERE) - { + { assoIntersection (NxExt, NbrSlices1-1, snorm, bnorm); - if (grid_type == GR_BIPIPE) - { + if (grid_type == GR_BIPIPE) + { assoIntersection (NxInt, NbrSlices1-2, snorm, bnorm); } } - assoResiduelle (); + if (cyl_left == IS_HERE) + { + adjustAsso (NxExt, S_N, 1, V_AVAL); + adjustAsso (NxExt, S_SW, 1, V_AMONT); + + adjustAsso (NxExt, S_N, 3, V_AVAL); + adjustAsso (NxExt, S_SW, 3, V_AMONT); + } + + if (cyl_right == IS_HERE) + { + adjustAsso (NxExt, S_NE, 1, V_AMONT); + adjustAsso (NxExt, S_S, 1, V_AVAL); + + adjustAsso (NxExt, S_NE, 3, V_AMONT); + adjustAsso (NxExt, S_S, 3, V_AVAL); + } + + // assoResiduelle (); return HOK; } // ====================================================== copyVertex @@ -391,26 +431,26 @@ void CrossElements::copyVertex (int i1, int j1, int k1, int i2, int j2, int k2) addVertex (CylBig, i2, j2, k2, hauteur, rayon); } -// ===================================================== assoCylinder +// ===================================================== assoCylinder void CrossElements::assoCylinder (int cyl, double* normal) { Real3 base, vec1, center, east, west, nordest; int nk = 0; - if (cyl==CylSmall && cyl_left == NO_PIPE) + if (cyl==CylSmall && cyl_left == NO_PIPE) nk = size_hz[cyl]; Vertex* v_e = getVertexIJK (cyl, NxExt, S_E , nk); Vertex* v_ne = getVertexIJK (cyl, NxExt, S_NE, nk); Vertex* v_w = getVertexIJK (cyl, NxExt, S_W , nk); - v_e->getPoint (east); - v_w->getPoint (west); + v_e->getPoint (east); + v_w->getPoint (west); calc_vecteur (west, east, base); - for (int nro=0 ; nrogetPoint (nordest); + v_ne->getPoint (nordest); calc_vecteur (center, nordest, vec1); double ps = prod_scalaire (base, vec1); @@ -421,7 +461,7 @@ void CrossElements::assoCylinder (int cyl, double* normal) if (cyl==CylBig || at_left) { assoSlice (cyl, base, normal, NxExt, 0); - if (grid_type == GR_BIPIPE) + if (grid_type == GR_BIPIPE) { assoSlice (cyl, base, normal, NxInt, 0); assoSlice (cyl, base, normal, NxInt, 1); @@ -431,7 +471,7 @@ void CrossElements::assoCylinder (int cyl, double* normal) if (cyl==CylBig || cyl_right == IS_HERE) { assoSlice (cyl, base, normal, NxExt, size_hz[cyl]); - if (grid_type == GR_BIPIPE) + if (grid_type == GR_BIPIPE) { assoSlice (cyl, base, normal, NxInt, size_hz[cyl]); assoSlice (cyl, base, normal, NxInt, size_hz[cyl]-1); @@ -442,18 +482,17 @@ void CrossElements::assoCylinder (int cyl, double* normal) for (int nz=1 ; nz<=3 ; nz++) assoBigMiddle (base, normal, nz); } -// ===================================================== assoBigMiddle +// ===================================================== assoBigMiddle void CrossElements::assoBigMiddle (double* base, double* normal, int nzs) { Real3 center, pnt1, pnt2; - string brep; int nx = NxExt; Vertex* v_n = getVertexIJK (CylBig, nx, S_N , nzs); Vertex* v_s = getVertexIJK (CylBig, nx, S_S , nzs); - v_s->getPoint (pnt1); - v_n->getPoint (pnt2); + v_s->getPoint (pnt1); + v_n->getPoint (pnt2); double rayon = calc_distance (pnt1, pnt2)/2; double alpha = angle_inter [CylBig]; @@ -463,29 +502,28 @@ void CrossElements::assoBigMiddle (double* base, double* normal, int nzs) alpha = asin (h1/cross_rayon[CylBig][NxExt]); } - for (int nro=0 ; nroaddCircle (center, rayon, normal, base); if (cyl_right == NO_PIPE) { - assoArc (CylBig, NxExt, S_SE, nzs, brep, rayon); - assoArc (CylBig, NxExt, S_E, nzs, brep, rayon); + assoArc (CylBig, NxExt, S_SE, nzs, subid); + assoArc (CylBig, NxExt, S_E, nzs, subid); } - assoArc (CylBig, NxExt, S_NE, nzs, brep, rayon); - assoArc (CylBig, NxExt, S_N , nzs, brep, rayon); + assoArc (CylBig, NxExt, S_NE, nzs, subid); + assoArc (CylBig, NxExt, S_N , nzs, subid); if (cyl_left == NO_PIPE) { - assoArc (CylBig, NxExt, S_NW, nzs, brep, rayon); - assoArc (CylBig, NxExt, S_W , nzs, brep, rayon); + assoArc (CylBig, NxExt, S_NW, nzs, subid); + assoArc (CylBig, NxExt, S_W , nzs, subid); } - assoArc (CylBig, NxExt, S_SW, nzs, brep, rayon); - assoArc (CylBig, NxExt, S_S , nzs, brep, rayon); + assoArc (CylBig, NxExt, S_SW, nzs, subid); + assoArc (CylBig, NxExt, S_S , nzs, subid); } // ====================================================== adjustLittleSlice void CrossElements::adjustLittleSlice (int ni, int nk, int nibig) @@ -496,7 +534,7 @@ void CrossElements::adjustLittleSlice (int ni, int nk, int nibig) double grayon2 = cross_rayon[CylBig][nibig] * cross_rayon[CylBig][nibig]; double prayon = cross_rayon[CylSmall][ni]; - + for (int nj=0; njsetZ (pz); } } -// ===================================================== assoIntersection -int CrossElements::assoIntersection (int nxs, int nzs, double* snorm, +// ===================================================== assoIntersection +int CrossElements::assoIntersection (int nxs, int nzs, double* snorm, double* bnorm) { Real3 center; Real3 pse, psw, sorig, sbase; Real3 pbe, pbw, borig, bbase; - string brep; cross_center->getPoint (center); int nz = nzs < MiddleSlice1 ? 0 : NbrSlices1; @@ -541,8 +578,9 @@ int CrossElements::assoIntersection (int nxs, int nzs, double* snorm, double bhaut = calc_distance (center, borig)*2; double* orig = nzs < MiddleSlice1 ? sorig : center; // Pb orientation - int ier = geom_create_cylcyl (borig, bnorm, bbase, brayon, bhaut, - orig, snorm, sbase, srayon, shaut); + BiCylinderShape bicyl_shape (el_root); + int ier = bicyl_shape.defineCyls (borig, bnorm, bbase, brayon, bhaut, + orig, snorm, sbase, srayon, shaut); if (ier != HOK) return ier; @@ -550,15 +588,40 @@ int CrossElements::assoIntersection (int nxs, int nzs, double* snorm, { Vertex* node = getVertexIJK (CylSmall, nxs, ny, nzs); if (node!=NULL) - node->clearAssociation (); + node->clearAssociation (); } for (int ny=S_E ; ny<=S_SE ; ny++) { Edge* edge = getEdgeJ (CylSmall, nxs, ny, nzs); - geom_asso_cylcyl (edge); + bicyl_shape.associate (edge); } return HOK; } +// ===================================================== adjustAsso +void CrossElements::adjustAsso (int nx, int ny, int nz, int sens) +{ + Edge* edge = getEdgeJ (CylBig, nx, ny, nz); + if (edge==NULL) + return; + + Real3 point; + Vertex* vertex = edge->getVertex (sens); + AssoEdge* asso = edge->getAssociation (0); + if (asso==NULL) + return; + + vertex->getPoint (point); + + EdgeShape* line = asso->getEdgeShape (); + double param = line->getParam (point); + + if (param<0) + return; + if (sens==V_AMONT) + asso->setStart (param); + else + asso->setEnd (param); +} END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexCylinder.cxx b/src/HEXABLOCK/HexCylinder.cxx index 95c9e11..9addce8 100644 --- a/src/HEXABLOCK/HexCylinder.cxx +++ b/src/HEXABLOCK/HexCylinder.cxx @@ -23,6 +23,7 @@ #include "HexVertex.hxx" #include "HexVector.hxx" #include "HexXmlWriter.hxx" +#include "HexDocument.hxx" #include @@ -58,7 +59,6 @@ Cylinder::Cylinder(Vertex* b, Vector* v, double r, double h) if (c_radius <= tol || c_height <= tol || norme <= tol) setError (); } - } // ======================================================== rdiffers bool rdiffers (double v1, double v2) diff --git a/src/HEXABLOCK/HexDocument.cxx b/src/HEXABLOCK/HexDocument.cxx index ee4514e..0805102 100755 --- a/src/HEXABLOCK/HexDocument.cxx +++ b/src/HEXABLOCK/HexDocument.cxx @@ -17,7 +17,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ // or email : webmaster.salome@opencascade.com #include "HexDocument.hxx" @@ -30,6 +30,7 @@ #include "HexElements.hxx" #include "HexCrossElements.hxx" +#include "HexBiCylinder.hxx" #include "HexVector.hxx" #include "HexCylinder.hxx" @@ -43,35 +44,50 @@ #include "HexXmlTree.hxx" #include "HexGlobale.hxx" #include "HexGroup.hxx" +#include "Hex.hxx" +#include "HexNewShape.hxx" BEGIN_NAMESPACE_HEXA +int Document::doc_number = 0; + // ======================================================== Constructeur -Document::Document (cpchar name) +Document::Document (cpchar name, Hex* dad) { - glob = Globale::getInstance (); + el_name = name; + hex_parent = dad; + glob = Globale::getInstance (); + el_root = this; doc_db = 0; nbr_errors = 0; doc_modified = true; doc_saved = false; - doc_name = name; doc_tolerance = 1e-6; nbr_laws = 0; nbr_propagations = 0; maj_propagation = true; doc_xml = NULL; - doc_shape = NULL; - defaultLaw = addLaw ("DefaultLaw", 0); - nbr_used_hexas = nbr_used_quads = nbr_used_edges = nbr_used_vertex = 0; for (EnumElt type = EL_NONE ; type < EL_MAXI ; type=(EnumElt) (type+1)) { - doc_first_elt [type] = doc_last_elt [type] = new EltBase (); + doc_first_elt [type] = doc_last_elt [type] = new EltBase (); doc_nbr_elt [type] = 0; } + + if (doc_number == 0) + strcpy (doc_ident, "doc"); + else + sprintf (doc_ident, "doc%02d", doc_number); + doc_number++; + + DumpLock; + defaultLaw = addLaw ("DefaultLaw", 0); + DumpRestore; + + addCloud (); } // ======================================================== Destructeur Document::~Document () @@ -82,7 +98,7 @@ Document::~Document () { // printf ("____________________________ Type=%d\n", type); EltBase* next = NULL; - for (EltBase* elt=doc_first_elt [type] ; elt != NULL ; elt=next) + for (EltBase* elt=doc_first_elt [type] ; elt != NULL ; elt=next) { next = elt->next(); delete elt; @@ -92,159 +108,249 @@ Document::~Document () // ======================================================== addVector Vector* Document::addVector (double dx, double dy, double dz) { - Vector* pv = new Vector (this, dx, dy, dz); + DumpStart ("addVector", dx << dy << dz); + Vector* pv = new Vector (this, dx, dy, dz); doc_vector.push_back (pv); + + DumpReturn (pv); return pv; } // ======================================================== addVectorVertices Vector* Document::addVectorVertices (Vertex* va, Vertex* vb) { + DumpStart ("addVectorVertices", va << vb); + Vector* pv = addVector (vb->getX () - va->getX (), vb->getY () - va->getY (), vb->getZ () - va->getZ ()); + + DumpReturn (pv); return pv; } // ======================================================== addVertex Vertex* Document::addVertex (double x, double y, double z) { + DumpStart ("addVertex", x << y << z); + Vertex* pv = new Vertex (this, x, y, z); + DumpReturn (pv); return pv; } // ======================================================== addEdge Edge* Document::addEdge (Vertex* va, Vertex* vb) { - if (va==NULL || vb==NULL) + DumpStart ("addEdge", va << vb ); + + if (va==NULL || vb==NULL) return NULL; Edge* arete = new Edge (va, vb); + DumpReturn (arete); return arete; } -// ======================================================== addEdge (bis) -Edge* Document::addEdge (Vertex* va, Vector* vec) +// ======================================================== addEdgeVector +Edge* Document::addEdgeVector (Vertex* va, Vector* vec) { - Vertex* vb = addVertex (va->getX () + vec->getDx(), - va->getY () + vec->getDy(), + DumpStart ("addEdgeVector", va << vec ); + + Vertex* vb = addVertex (va->getX () + vec->getDx(), + va->getY () + vec->getDy(), va->getZ () + vec->getDz()); Edge* arete = addEdge (va, vb); + DumpReturn (arete); return arete; } // ======================================================== addQuadVertices Quad* Document::addQuadVertices (Vertex* va, Vertex* vb, Vertex* vc, Vertex* vd) { + DumpStart ("addQuadVertices", va << vb << vc << vd ); + Quad* face = new Quad (va, vb, vc, vd); + DumpReturn (face); return face; } // ======================================================== addQuad Quad* Document::addQuad (Edge* ea, Edge* eb, Edge* ec, Edge* ed) { + DumpStart ("addQuad", ea << eb << ec << ed ); + Quad* face = new Quad (ea, eb, ec, ed); + DumpReturn (face); return face; } // ======================================================== addHexaVertices Hexa* Document::addHexaVertices (Vertex* va, Vertex* vb, Vertex* vc, Vertex* vd, Vertex* ve, Vertex* vf, Vertex* vg, Vertex* vh) { + DumpStart ("addHexaVertices", va << vb << vc << vd << ve << vf << vg << vh); + Hexa* pave = new Hexa (va, vb, vc, vd, ve, vf, vg, vh); + DumpReturn (pave); return pave; } // ======================================================== addHexa -Hexa* Document::addHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, +Hexa* Document::addHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, Quad* qf) { + DumpStart ("addHexa", qa << qb << qc << qd << qe << qf ); + Hexa* pave = new Hexa (qa, qb, qc, qd, qe, qf); + DumpReturn (pave); return pave; } // ======================================================== addCylinder Cylinder* Document::addCylinder (Vertex* b, Vector* d, double r, double h) { + DumpStart ("addCylinder", b << d << r << h); + Cylinder* cyl = new Cylinder (b, d, r, h); doc_cylinder.push_back (cyl); + + DumpReturn (cyl); return cyl; } // ======================================================== addPipe Pipe* Document::addPipe (Vertex* b, Vector* d, double ri, double re, double h) { + DumpStart ("addPipe", b << d << ri << re << h); + Pipe* tuyau = new Pipe (b, d, ri, re, h); doc_pipe.push_back (tuyau); + + DumpReturn (tuyau); return tuyau; } // ======================================================== makeCartesian -Elements* Document::makeCartesian (Vertex* v, Vector* dir, +Elements* Document::makeCartesian (Vertex* v, Vector* dir, int px, int py, int pz, int mx, int my, int mz) { - Vector* v1 = new Vector (this, dir->getDx(), 0, 0); - Vector* v2 = new Vector (this, 0, dir->getDy(), 0); - Vector* v3 = new Vector (this, 0,0, dir->getDz()); + DumpStart ("makeCartesianDiag", v << dir << px << py << pz << mx << my << mz); + + Vector* v1 = new Vector (this, dir->getDx(), 0, 0); + Vector* v2 = new Vector (this, 0, dir->getDy(), 0); + Vector* v3 = new Vector (this, 0,0, dir->getDz()); Elements* grille = new Elements (this); grille->makeCartesianGrid (v, v1, v2, v3, px, py, pz, mx, my, mz); + + DumpReturn (grille); return grille; } // ======================================================== makeCartesian -Elements* Document::makeCartesian (Vertex* v, Vector* v1, Vector* v2, +Elements* Document::makeCartesian (Vertex* v, Vector* v1, Vector* v2, + Vector* v3, int px, int py, int pz) +{ + DumpStart ("makeCartesian", v << v1 << v2 << v3 << px << py << pz); + + Elements* grille = new Elements (this); + grille->makeCartesianGrid (v, v1, v2, v3, px, py, pz); + + DumpReturn (grille); + return grille; +} +// ======================================================== makeCartesian1 +Elements* Document::makeCartesian1 (Vertex* v, Vector* v1, Vector* v2, Vector* v3, int px, int py, int pz, int mx, int my, int mz) { + DumpStart ("makeCartesian1", v << v1 << v2 << v3 << px << py << pz + << mx << my << mz); + Elements* grille = new Elements (this); grille->makeCartesianGrid (v, v1, v2, v3, px, py, pz, mx, my, mz); + + DumpReturn (grille); return grille; } // ======================================================== makeSpherical Elements* Document::makeSpherical (Vertex* c, double rayon, int nb, double k) { + DumpStart ("makeSpherical", c << rayon << nb << k ); + Elements* grille = new Elements (this); grille->makeSphericalGrid (c, rayon, nb, k); + + DumpReturn (grille); return grille; } // ======================================================== makeCylindrical -Elements* Document::makeCylindrical (Vertex* c, Vector* b, Vector* h, +Elements* Document::makeCylindrical (Vertex* c, Vector* b, Vector* h, double dr, double da, double dl, int nr, int na, int nl, bool fill) { + DumpStart ("makeCylindrical", c << b << h << dr << da << dl << nr << na + << nl << fill); + Elements* grille = new Elements (this); grille->makeCylindricalGrid (c, b, h, dr, da, dl, nr, na, nl, fill); + + DumpReturn (grille); return grille; } // ======================================================== makeSphere -Elements* Document::makeSphere (Vertex* center, Vector* vx, Vector* vz, - double radius, double radhole, Vertex* plorig, +Elements* Document::makeSphere (Vertex* center, Vector* vx, Vector* vz, + double radius, double radhole, Vertex* plorig, int nrad, int nang, int nhaut) { + DumpStart ("makeSphere", center << vx << vz << radius << radhole << plorig + << nrad << nang << nhaut); + Elements* grille = new Elements (this); double radint = (radhole + radius)*DEMI; - grille->makeRind (GR_HEMISPHERIC, center, vx, vz, radius, radint, radhole, + grille->makeRind (GR_HEMISPHERIC, center, vx, vz, radius, radint, radhole, plorig, 360.0, nrad, nang, nhaut); + + DumpReturn (grille); return grille; } // ======================================================== makePartSphere -Elements* Document::makePartSphere (Vertex* center, Vector* vx, Vector* vz, +Elements* Document::makePartSphere (Vertex* center, Vector* vx, Vector* vz, double radius, double radhole, Vertex* plorig, double angle, int nrad, int nang, int nhaut) { + DumpStart ("makePartSphere", center << vx << vz + << radius << radhole + << plorig << angle + << nrad << nang << nhaut); + Elements* grille = new Elements (this); double radint = (radhole + radius)*DEMI; - grille->makeRind (GR_PART_SPHERIC, center, vx, vz, radius, radint, radhole, + grille->makeRind (GR_PART_SPHERIC, center, vx, vz, radius, radint, radhole, plorig, angle, nrad, nang, nhaut); + + DumpReturn (grille); return grille; } -// ======================================================== makeRind -Elements* Document::makeRind (Vertex* center, Vector* vx, Vector* vz, +// ======================================================== makeRind +Elements* Document::makeRind (Vertex* center, Vector* vx, Vector* vz, double radext, double radint, double radhole, Vertex* plorig, int nrad, int nang, int nhaut) { + DumpStart ("makeRind", center << vx << vz + << radext << radint << radhole + << plorig << nrad << nang << nhaut); + Elements* grille = new Elements (this); - grille->makeRind (GR_RIND, center, vx, vz, radext, radint, radhole, + grille->makeRind (GR_RIND, center, vx, vz, radext, radint, radhole, plorig, 360.0, nrad, nang, nhaut); + + DumpReturn (grille); return grille; } // ======================================================== makePartRind -Elements* Document::makePartRind (Vertex* center, Vector* vx, Vector* vz, +Elements* Document::makePartRind (Vertex* center, Vector* vx, Vector* vz, double radext, double radint, double radhole, Vertex* plorig, double angle, int nrad, int nang, int nhaut) { + DumpStart ("makePartRind", center << vx << vz + << radext << radint << radhole + << plorig << angle << nrad << nang << nhaut); + Elements* grille = new Elements (this); - grille->makeRind (GR_PART_RIND, center, vx, vz, radext, radint, radhole, + grille->makeRind (GR_PART_RIND, center, vx, vz, radext, radint, radhole, plorig, angle, nrad, nang, nhaut); + + DumpReturn (grille); return grille; } // ======================================================== findVertex @@ -261,8 +367,8 @@ Vertex* Document::findVertex (double vx, double vy, double vz) elt = elt->next()) { if (elt->isHere()) - { - Vertex* node = static_cast (elt); + { + Vertex* node = static_cast (elt); if (node->isin (xmin, xmax, ymin, ymax, zmin, zmax)) return node; } @@ -275,7 +381,7 @@ Edge* Document::findEdge (Vertex* v1, Vertex* v2) for (EltBase* elt = doc_first_elt[EL_EDGE]->next (); elt!=NULL; elt = elt->next()) { - Edge* candidat = static_cast (elt); + Edge* candidat = static_cast (elt); if (candidat->definedBy (v1, v2)) return candidat; } @@ -287,7 +393,7 @@ Quad* Document::findQuad (Vertex* v1, Vertex* v2) for (EltBase* elt = doc_first_elt[EL_QUAD]->next (); elt!=NULL; elt = elt->next()) { - Quad* candidat = static_cast (elt); + Quad* candidat = static_cast (elt); if (candidat->definedBy (v1, v2)) return candidat; } @@ -299,13 +405,12 @@ Hexa* Document::findHexa (Vertex* v1, Vertex* v2) for (EltBase* elt = doc_first_elt[EL_HEXA]->next (); elt!=NULL; elt = elt->next()) { - Hexa* candidat = static_cast (elt); + Hexa* candidat = static_cast (elt); if (candidat->definedBy (v1, v2)) return candidat; } return NULL; } - // ======================================================== findElement EltBase* Document::findElement (EnumElt type, int ident) { @@ -320,7 +425,7 @@ EltBase* Document::findElement (EnumElt type, int ident) // ======================================================== findVertex Vertex* Document::findVertex (int ident) { - Vertex* node = static_cast (findElement (EL_VERTEX, ident)); + Vertex* node = static_cast (findElement (EL_VERTEX, ident)); return node; } @@ -334,29 +439,34 @@ int index_tv (Vertex* table[], Vertex* elt) return NOTHING; } // ======================================================== mergeQuads -int Document::mergeQuads (Quad* dest, Quad* orig, Vertex* v1, Vertex* v2, +int Document::mergeQuads (Quad* dest, Quad* orig, Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4) { + DumpStart ("mergeQuads", dest << orig << v1 << v2 << v3 << v4); + update (); if (dest==orig) { printf (" *** Quads identiques dans mergeQuads\n"); + DumpEnd; return HERR; } else if (dest==NULL || dest->isDeleted()) { printf (" *** Quad nro 1 incorrect dans mergeQuads \n"); + DumpEnd; return HERR; } else if (orig==NULL || orig->isDeleted() ) { printf (" *** Quad nro 2 incorrect dans mergeQuads \n"); + DumpEnd; return HERR; } int nbcomm = 0; - for (int nro=0 ; nroindexVertex (dest->getVertex(nro)); if (norig != NOTHING) @@ -370,7 +480,7 @@ int Document::mergeQuads (Quad* dest, Quad* orig, Vertex* v1, Vertex* v2, printf (" (%s,", dest->getName (nom)); printf (" %s)\n", orig->getName (nom)); } - printf (" +++ quad1[%d] = quad2[%d] = %s\n", nro, norig, + printf (" +++ quad1[%d] = quad2[%d] = %s\n", nro, norig, uv->getName (nom)); } } @@ -379,20 +489,23 @@ int Document::mergeQuads (Quad* dest, Quad* orig, Vertex* v1, Vertex* v2, { printf (" +++ Les vertex passes en arguments sont ignores\n"); int ier = closeQuads (dest, orig); + DumpEnd; return ier; } else if (nbcomm != 0) { printf (" *** _____________________ mergeQuads refuse: \n"); printf (" il y a %d sommet(s) sont commun(s)\n", nbcomm); + DumpEnd; return HERR; } - if ( v1 ==NULL || v1 ->isDeleted() || v2 ==NULL || v2 ->isDeleted() - || v3 ==NULL || v3 ->isDeleted() || v4 ==NULL || v4 ->isDeleted()) + if ( v1 ==NULL || v1 ->isDeleted() || v2 ==NULL || v2 ->isDeleted() + || v3 ==NULL || v3 ->isDeleted() || v4 ==NULL || v4 ->isDeleted()) { printf (" *** _____________________ mergeQuads refuse: \n"); printf (" un sommet est incorrect\n"); + DumpEnd; return HERR; } @@ -413,8 +526,16 @@ int Document::mergeQuads (Quad* dest, Quad* orig, Vertex* v1, Vertex* v2, int ier1 = dest->ordoVertex (v1, v3, tv1); int ier2 = orig->ordoVertex (v2, v4, tv2); - if (ier1 != HOK) return ier1; - else if (ier2 != HOK) return ier2; + if (ier1 != HOK) + { + DumpEnd; + return ier1; + } + else if (ier2 != HOK) + { + DumpEnd; + return ier2; + } for (int nro=0 ; nrofindEdge (tv2[na], tv2[nb]); if (te2[nro]==NULL) + { + DumpEnd; return HERR; + } } if (debug()) @@ -453,53 +580,61 @@ int Document::mergeQuads (Quad* dest, Quad* orig, Vertex* v1, Vertex* v2, } replaceQuad (orig, dest); - for (int nro=0 ; nrogetName(nom)); + DumpEnd; return HERR; } else if (dest==NULL || dest->isDeleted()) { printf (" *** Quad nro 1 incorrect dans closeQuads \n"); + DumpEnd; return HERR; } else if (orig==NULL || orig->isDeleted() ) { printf (" *** Quad nro 2 incorrect dans closeQuads \n"); + DumpEnd; return HERR; } Edge* edc = NULL; - for (int nro=0 ; nroindexEdge (dest->getEdge(nro)); if (norig != NOTHING) { - if (edc != NULL) + if (edc != NULL) { printf (" *** Plus d'une arete commune dans closeQuads"); printf (" (%s,", dest->getName (nom)); printf (" %s)\n", orig->getName (nom)); + DumpEnd; return HERR; } edc = dest->getEdge (nro); - printf (" +++ quad1[%d] = quad2[%d] = %s\n", nro, norig, + printf (" +++ quad1[%d] = quad2[%d] = %s\n", nro, norig, edc->getName (nom)); } } @@ -512,8 +647,16 @@ int Document::closeQuads (Quad* dest, Quad* orig) int ier1 = dest->ordoVertex (va, vb, tv1); int ier2 = orig->ordoVertex (va, vb, tv2); - if (ier1 != HOK) return ier1; - else if (ier2 != HOK) return ier2; + if (ier1 != HOK) + { + DumpEnd; + return ier1; + } + else if (ier2 != HOK) + { + DumpEnd; + return ier2; + } for (int nro=0 ; nrofindEdge (tv2[na], tv2[nb]); if (te2[nro]==NULL) + { + DumpEnd; return HERR; + } } if (debug()) @@ -552,59 +701,88 @@ int Document::closeQuads (Quad* dest, Quad* orig) } replaceQuad (orig, dest); - for (int nro=0 ; nroisDeleted() || e2==NULL || e2->isDeleted()) + DumpStart ("mergeEdges", e1 << e2 << v1 << v2); + + if (e1==NULL || e1->isDeleted() || e2==NULL || e2->isDeleted()) + { + DumpEnd; return HERR; + } - for (int nro=0 ; nroindex (e2->getVertex(nro))!= NOTHING) + { + DumpEnd; return HERR+nro+1; + } Vertex *tv1 [V_TWO], *tv2 [V_TWO]; int ier1 = e1->anaMerge (v1, tv1); int ier2 = e2->anaMerge (v2, tv2); - if (ier1 != HOK) return ier1; - else if (ier2 != HOK) return ier2; + if (ier1 != HOK) + { + DumpEnd; + return ier1; + } + else if (ier2 != HOK) + { + DumpEnd; + return ier2; + } replaceEdge (e2, e1); - for (int nro=0 ; nroisDeleted() + DumpStart ("mergeVertices", v1 << v2); + + if (v1==v2 || v1==NULL || v1->isDeleted() || v2==NULL || v2->isDeleted()) + { + DumpEnd; return HERR; + } replaceVertex (v2, v1); maj_connection = false; + DumpEnd; return HOK; } // ======================================================== replaceVertex void Document::replaceVertex (Vertex* old, Vertex* par) { - if (old==par) + DumpStart ("replaceVertex", old << par); + if (BadElement(old) || BadElement(par) || old==par) + { + DumpEnd; return; + } - par->replaceAssociation (old); + // par->replaceAssociation (old); TODO for (int type=EL_EDGE ; type <= EL_HEXA ; type++) { @@ -614,14 +792,19 @@ void Document::replaceVertex (Vertex* old, Vertex* par) elt->replaceVertex (old, par); } old->suppress (); + DumpEnd; } // ======================================================== replaceEdge void Document::replaceEdge (Edge* old, Edge* par) { - if (old==par) + DumpStart ("replaceEdge", old << par); + if (BadElement(old) || BadElement(par) || old==par) + { + DumpEnd; return; + } - par->replaceAssociation (old); + // par->replaceAssociation (old); TODO for (int type=EL_QUAD ; type <= EL_HEXA ; type++) { @@ -630,15 +813,21 @@ void Document::replaceEdge (Edge* old, Edge* par) if (elt->isHere ()) elt->replaceEdge (old, par); } + old->suppress (); + DumpEnd; } // ======================================================== replaceQuad void Document::replaceQuad (Quad* old, Quad* par) { - if (old==par) + DumpStart ("replaceQuad", old << par); + if (BadElement(old) || BadElement(par) || old==par) + { + DumpEnd; return; + } - par->replaceAssociation (old); + // par->replaceAssociation (old); TODO for (EltBase* elt = doc_first_elt[EL_HEXA]->next (); elt!=NULL; elt = elt->next()) @@ -650,80 +839,97 @@ void Document::replaceQuad (Quad* old, Quad* par) old->suppress (); } // ======================================================== prismQuad -Elements* Document::prismQuad (Quad* start, Vector* dir, int nb) +Elements* Document::prismQuad (Quad* qstart, Vector* dir, int nb) { + DumpStart ("prismQuad", qstart << dir << nb); + Quads tstart; - tstart.push_back (start); + tstart.push_back (qstart); update (); Elements* prisme = prismQuads (tstart, dir, nb); - return prisme; + + DumpReturn (prisme); + return prisme; } // ======================================================== prismQuads Elements* Document::prismQuads (Quads& tstart, Vector* dir, int nb) { + DumpStart ("prismQuads", tstart << dir << nb); + Elements* prisme = new Elements (this); - if (nb<=0) return prisme; prisme->prismQuads (tstart, dir, nb); + + DumpReturn (prisme); return prisme; } // ======================================================== prismQuadsVec Elements* Document::prismQuadsVec (Quads& tstart, Vector* dir, RealVector& tlen, int crit) { + DumpStart ("prismQuadVec", tstart << dir << tlen << crit); Elements* prisme = new Elements (this); if (tlen.size()<=0) return prisme; prisme->prismQuadsVec (tstart, dir, tlen, crit); + + DumpReturn (prisme); return prisme; } // ======================================================== joinQuads -Elements* Document::joinQuads (Quads& start, Quad* dest, Vertex* v1, - Vertex* v2, Vertex* v3, Vertex* v4, int nb) +Elements* Document::joinQuads (Quads& tstart, Quad* dest, Vertex* v1, + Vertex* v2, Vertex* v3, Vertex* v4, int nb) { + DumpStart ("joinQuads", tstart << dest << v1 << v2 << v3 << v4 << nb); update (); Elements* joint = new Elements (this); if (nb<=0) return joint; - int ier = joint->joinQuads (start, nb, v1, v2, v3, v4, dest); + int ier = joint->joinQuads (tstart, nb, v1, v2, v3, v4, dest); if (ier !=HOK) printf ("\n ****\n **** Error in joinQuad(s)\n ****\n"); + + DumpReturn (joint); return joint; } // ======================================================== joinQuad -Elements* Document::joinQuad (Quad* start, Quad* dest, Vertex* v1, +Elements* Document::joinQuad (Quad* qstart, Quad* dest, Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4, int nb) { + DumpStart ("joinQuad", qstart << dest << v1 << v2 << v3 << v4 << nb); + Quads tstart; - tstart.push_back (start); + tstart.push_back (qstart); Elements* joint = joinQuads (tstart, dest, v1, v2, v3, v4, nb); + + DumpReturn (joint); return joint; } // ========================================================== getHexa -Hexa* Document::getHexa (int nro) +Hexa* Document::getHexa (int nro) { return static_cast (getElement (EL_HEXA, nro)); } // ========================================================== getQuad -Quad* Document::getQuad (int nro) +Quad* Document::getQuad (int nro) { return static_cast (getElement (EL_QUAD, nro)); } // ========================================================== getEdge -Edge* Document::getEdge (int nro) -{ +Edge* Document::getEdge (int nro) +{ return static_cast (getElement (EL_EDGE, nro)); } // ========================================================== getVertex -Vertex* Document::getVertex (int nro) -{ - return static_cast (getElement (EL_VERTEX, nro)); +Vertex* Document::getVertex (int nro) +{ + return static_cast (getElement (EL_VERTEX, nro)); } // ========================================================== countElement int Document::countElement (EnumElt type) -{ +{ int compteur = 0; for (EltBase* elt = doc_first_elt[type]->next (); elt!=NULL; elt = elt->next()) @@ -733,8 +939,8 @@ int Document::countElement (EnumElt type) return compteur; } // ========================================================== getElement -EltBase* Document::getElement (EnumElt type, int nro) -{ +EltBase* Document::getElement (EnumElt type, int nro) +{ int compteur = 0; for (EltBase* elt = doc_first_elt[type]->next (); elt!=NULL; elt = elt->next()) @@ -750,20 +956,23 @@ EltBase* Document::getElement (EnumElt type, int nro) } // ========================================================= addLaw Law* Document::addLaw (const char* name, int nbnodes) -{ - Law* loi = new Law (name, nbnodes); - return addLaw (loi); +{ + DumpStart ("addLaw", name << nbnodes); + Law* loi = new Law (this, name, nbnodes); + addLaw (loi); + DumpReturn (loi); + return loi; } // ========================================================= addLaw Law* Document::addLaw (Law* loi) -{ +{ doc_laws.push_back (loi); nbr_laws ++; return loi; } // ========================================================= GetLaw Law* Document::getLaw (int nro) -{ +{ if (nro <0 || nro>= nbr_laws) return NULL; @@ -771,8 +980,8 @@ Law* Document::getLaw (int nro) } // ========================================================= FindLaw Law* Document::findLaw (const char* name) -{ - std::string nom = name; +{ + string nom = name; for (int nro=0 ; nrogetName() == nom) return doc_laws [nro]; @@ -781,29 +990,29 @@ Law* Document::findLaw (const char* name) } // ========================================================= removeLaw int Document::removeLaw (Law* loi) -{ +{ for (int nro=1 ; nrogetLaw() == loi ) - doc_propagation [nl]->setLaw(defaultLaw); - } + if ( doc_propagation [nl]->getLaw() == loi ) + doc_propagation [nl]->setLaw(defaultLaw); + } - delete doc_laws [nro]; - doc_laws.erase (doc_laws.begin()+nro); - nbr_laws= doc_laws.size(); - return HOK; - } + delete doc_laws [nro]; + doc_laws.erase (doc_laws.begin()+nro); + nbr_laws = doc_laws.size(); + return HOK; + } return HERR; } // ========================================================= majPropagation void Document::majPropagation () -{ +{ + DumpLock; majReferences (); update (); // if (purge_elements) @@ -839,15 +1048,16 @@ void Document::majPropagation () Edge* arete = cell->getEdge(ne); if (arete->getPropag()<0) { - Propagation* prop = new Propagation (); + Propagation* prop = new Propagation (); doc_propagation.push_back (prop); arete->propager (prop, nbr_propagations); nbr_propagations ++; - prop->majLaw(); + prop->majLaw(); } } } } + DumpRestore; } // ======================================================== countPropagation int Document::countPropagation () @@ -871,7 +1081,7 @@ Propagation* Document::getPropagation (int nro) // ======================================================== findPropagation Propagation* Document::findPropagation (Edge* arete) { - if (arete==NULL) + if (arete==NULL) return NULL; if (maj_propagation) @@ -882,13 +1092,13 @@ Propagation* Document::findPropagation (Edge* arete) // ======================================================== disconnectQuad Elements* Document::disconnectQuad (Hexa* cell, Quad* element) { - if (cell==NULL || element==NULL) + if (cell==NULL || element==NULL) return NULL; update (); Elements* crees = cell->disconnectQuad (element); - if (crees!=NULL) + if (crees!=NULL) majReferences (); return crees; @@ -896,7 +1106,7 @@ Elements* Document::disconnectQuad (Hexa* cell, Quad* element) // ======================================================== disconnectEdge Elements* Document::disconnectEdge (Hexa* cell, Edge* element) { - if (cell==NULL || element==NULL) + if (cell==NULL || element==NULL) return NULL; update (); @@ -909,13 +1119,13 @@ Elements* Document::disconnectEdge (Hexa* cell, Edge* element) // ======================================================== disconnectVertex Elements* Document::disconnectVertex (Hexa* cell, Vertex* element) { - if (cell==NULL || element==NULL) + if (cell==NULL || element==NULL) return NULL; update (); Elements* crees = cell->disconnectVertex (element); - if (crees!=NULL) + if (crees!=NULL) majReferences (); return crees; } @@ -936,18 +1146,18 @@ Elements* Document::cut (Edge* edge, int nbcuts) return t_hexas; } // ======================================================== addGroup -Group* Document::addGroup (cpchar name, EnumGroup kind) +Group* Document::addGroup (cpchar name, EnumGroup kind) { Group* grp = new Group (name, kind); doc_group.push_back (grp); return grp; } // ======================================================== findGroup -Group* Document::findGroup (cpchar name) +Group* Document::findGroup (cpchar name) { int nbre = doc_group.size(); - for (int ng=0 ; nggetName(), name)) return doc_group [ng]; @@ -957,7 +1167,7 @@ Group* Document::findGroup (cpchar name) int Document::removeGroup (Group* grp) { int nbre = doc_group.size(); - for (int ng=0 ; ngmakeCylinder (cyl, base, nr, na, nl); + + DumpReturn (grille); return grille; } // ======================================================== makeCylinders CrossElements* Document::makeCylinders (Cylinder* cyl1, Cylinder* cyl2) { + DumpStart ("makeCylinders", cyl1 << cyl2 ); + CrossElements* grille = new CrossElements (this, GR_BICYL); grille->crossCylinders (cyl1, cyl2, true); + + DumpReturn (grille); return grille; } // ======================================================== makePipe Elements* Document::makePipe (Pipe* pipe, Vector* bx, int nr, int na, int nl) { + DumpStart ("makePipe", + pipe << bx << nr << na << nl); + Elements* grille = new Elements (this); grille->makePipe (pipe, bx, nr, na, nr); + + DumpReturn (grille); return grille; } // ======================================================== makePipes CrossElements* Document::makePipes (Pipe* pipe1, Pipe* pipe2) { + DumpStart ("makePipes", + pipe1 << pipe2); + CrossElements* grille = new CrossElements (this, GR_BIPIPE); grille->crossCylinders (pipe1, pipe2, false); + + DumpReturn (grille); return grille; } // ======================================================== setName -int Document::setName (const char* name) +int Document::setName (cpchar prefix) { - doc_name = name ; + if (Cestvide (prefix) || el_name==prefix) + return HERR; + + string name = prefix; + if (hex_parent != NULL) + hex_parent->makeName (prefix, name); + + el_name = name; return HOK ; } - // ======================================================== setLevel #ifdef NO_CASCADE @@ -1020,7 +1255,15 @@ void set_debug_asso (bool boule); void Document::setLevel (int niv) { if (niv == 747) - clearAssociation (); + checkAssociations (); + else if (niv == 748) + { + int nbshapes = countShape (); + for (int nsh=0 ; nsh < nbshapes ; nsh++) + { + doc_tab_shape[nsh]->saveBrep(); + } + } else if (niv == 777) set_special_option (true); else if (niv == 778) @@ -1035,6 +1278,7 @@ void Document::setLevel (int niv) set_debug_asso (niv>0); } } +#if 0 // ======================================================== getAssoVertices void Document::getAssoVertices (Vertices& tabelt) { @@ -1042,7 +1286,7 @@ void Document::getAssoVertices (Vertices& tabelt) for (EltBase* elt = doc_first_elt[EL_VERTEX]->next (); elt!=NULL; elt = elt->next()) if (elt->isHere() && elt->getAssociation()!=NULL) - tabelt.push_back (static_cast (elt)); + tabelt.push_back (static_cast (elt)); } // ======================================================== getAssoEdges void Document::getAssoEdges (Edges& tabelt) @@ -1051,11 +1295,113 @@ void Document::getAssoEdges (Edges& tabelt) for (EltBase* elt = doc_first_elt[EL_EDGE]->next (); elt!=NULL; elt = elt->next()) if (elt->isHere()) - { - Edge* edge = static_cast (elt); + { + Edge* edge = static_cast (elt); int nbass = edge->getAssociations().size(); if (nbass>0) tabelt.push_back (edge); } } +#endif +// ======================================================== makeVarName +char* Document::makeVarName (char* name) +{ + strcpy (name, doc_ident); + return doc_ident ; +} +// ======================================================== isEmpty +bool Document::isEmpty () +{ + int nombre = countVertex () + countVector () + + countCylinder() + countPipe(); + return nombre <= 0 && countLaw () <= 1; +} +// ======================================================== getNextName +cpchar Document::getNextName (EnumElt type, string& buff) +{ + char name [8]; + EltBase::makeName (type, doc_nbr_elt [type], name); + + buff = name; + return buff.c_str(); +} + +// ======================================================== getNextName +string Document::getNextName (EnumElt type) +{ + char name [8]; + EltBase::makeName (type, doc_nbr_elt [type], name); + + return string(name); +} + +// ======================================================== lockDump +void Document::lockDump () +{ + glob->dump.lock (); +} +// ======================================================== restoreDump +void Document::restoreDump () +{ + glob->dump.restore (DumpActif); +} +// ======================================================== getGroup +Group* Document::getGroup (int nro) +{ + int size = doc_group.size(); + if (nro>=0 && nro=0 && nro=0 && nro=0 && nrocrossCylinders (cyl1, cyl2); + + DumpReturn (grille); + return grille; +} +// ======================================================== makeBiPipe +BiCylinder* Document::makeBiPipe (Pipe* pipe1, Pipe* pipe2) +{ + DumpStart ("makeBiPipe", pipe1 << pipe2); + + BiCylinder* grille = new BiCylinder (this); + grille->crossCylinders (pipe1, pipe2); + + DumpReturn (grille); + return grille; +} END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexDocument.hxx b/src/HEXABLOCK/HexDocument.hxx index 5ec47bd..219e393 100755 --- a/src/HEXABLOCK/HexDocument.hxx +++ b/src/HEXABLOCK/HexDocument.hxx @@ -23,19 +23,23 @@ #ifndef __DOCUMENT_H_ #define __DOCUMENT_H_ -#include "hexa_base.hxx" +#include "HexEltBase.hxx" BEGIN_NAMESPACE_HEXA -class Document +class NewShape; + +class Document : public EltBase { // Fonctions utilisateur public : // Fonctions globales - const char* getName () { return doc_name.c_str() ; } - bool isSaved () { return doc_saved ; } + bool isSaved () { return doc_saved ; } int setName (const char* name); - int save (const char* ficxml); + + int save (const char* ficxml); // Genere le xml dans un seul fichier + int appendXml (pfile fstudy); // Genere le xml dans un fichier ouvert + cpchar getXml (); // Genere le xml et rend un flux int getLevel () { return doc_db ; } void setLevel (int niv); @@ -52,25 +56,30 @@ public : // Creation d'elements Vertex* addVertex (double x=0.0, double y=0.0, double z=0.0); - Edge* addEdge (Vertex* va, Vertex* vb); - Edge* addEdge (Vertex* va, Vector* vec); + Edge* addEdge (Vertex* va, Vertex* vb); + Edge* addEdgeVector (Vertex* va, Vector* vec); + + Edge* addEdge (Vertex* va, Vector* vec) // A supprimer + { return addEdgeVector (va, vec) ; } // (comptibilite) Quad* addQuadVertices (Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4); Quad* addQuad (Edge* v1, Edge* v2, Edge* v3, Edge* v4); - Hexa* addHexaVertices (Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4, + Hexa* addHexaVertices (Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4, Vertex* v5, Vertex* v6, Vertex* v7, Vertex* v8); Hexa* addHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, Quad* qf); Vector* addVector (double dx=0.0, double dy=0.0, double dz=0.0); Vector* addVectorVertices (Vertex* va, Vertex* vb); - Elements* makeCartesian (Vertex* v, Vector* v1, - int px, int py, int pz, int mx=0, int my=0, int mz=0); - Elements* makeCartesian (Vertex* v, Vector* v1, Vector* v2, Vector* v3, + Elements* makeCartesian (Vertex* v, Vector* v1, int px, int py, int pz, int mx=0, int my=0, int mz=0); + Elements* makeCartesian (Vertex* v, Vector* v1, Vector* v2, Vector* v3, + int px, int py, int pz); + Elements* makeCartesian1 (Vertex* v, Vector* v1, Vector* v2, Vector* v3, + int px, int py, int pz, int mx, int my, int mz); - Elements* makeCylindrical (Vertex* c, Vector* b, Vector* h, double dr, + Elements* makeCylindrical (Vertex* c, Vector* b, Vector* h, double dr, double da, double dl, int nr, int na, int nl, bool fill=false); // Obsolete @@ -81,9 +90,9 @@ public : Elements* prismQuads (Quads& start, Vector* dv, int nb); Elements* prismQuadsVec (Quads& start, Vector* dv, RealVector& th, int k=0); - Elements* joinQuad (Quad* start, Quad* dest, Vertex* v1, Vertex* v2, + Elements* joinQuad (Quad* start, Quad* dest, Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4, int nb); - Elements* joinQuads (Quads& start, Quad* dest, Vertex* v1, Vertex* v2, + Elements* joinQuads (Quads& start, Quad* dest, Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4, int nb); Cylinder* addCylinder (Vertex* b, Vector* d, double r, double h); @@ -94,6 +103,9 @@ public : Elements* makePipe (Pipe* pip, Vector* vx, int nr, int na, int nl); CrossElements* makePipes (Pipe* pipe1, Pipe* pipe2); + BiCylinder* makeBiCylinder (Cylinder* cyl1, Cylinder* cyl2); + BiCylinder* makeBiPipe (Pipe* pipe1, Pipe* pipe2); + int removeHexa (Hexa* maille); int removeQuad (Quad* maille); int removeConnectedHexa (Hexa* maille); @@ -108,13 +120,13 @@ public : int mergeVertices (Vertex* v1, Vertex* v2); int mergeEdges (Edge* e1, Edge* e2, Vertex* v1, Vertex* v2); - int mergeQuads (Quad* q1, Quad* q2, Vertex* v1, Vertex* v2, + int mergeQuads (Quad* q1, Quad* q2, Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4); int closeQuads (Quad* q1, Quad* q2); Elements* makeTranslation (Elements* elts, Vector* trans); Elements* makeScale (Elements* elts, Vertex* ver, double k); - Elements* makeRotation (Elements* elts, Vertex* ver, Vector* vec, + Elements* makeRotation (Elements* elts, Vertex* ver, Vector* vec, double angle); Elements* makeSymmetryPoint (Elements* elts, Vertex* ver); Elements* makeSymmetryLine (Elements* elts, Vertex* ver, Vector* vec); @@ -138,7 +150,7 @@ public : Elements* cut (Edge* edge, int nbcuts); Group* addGroup (cpchar name, EnumGroup kind); - Group* getGroup (int nro) { return doc_group [nro]; } + Group* getGroup (int nro); Group* findGroup (cpchar name); int removeGroup (Group* grp); int countGroup () { return (int) doc_group.size(); } @@ -162,19 +174,11 @@ public : int countCylinder () { return doc_cylinder.size(); } int countPipe () { return doc_pipe.size(); } - Vector* getVector (int nro) { return doc_vector [nro]; } - Cylinder* getCylinder (int nro) { return doc_cylinder [nro]; } - Pipe* getPipe (int nro) { return doc_pipe [nro]; } + Vector* getVector (int nro); + Cylinder* getCylinder (int nro); + Pipe* getPipe (int nro); void purge (); - int associateOpenedLine (Edge* mstart, Edges& mline, Shape* gstart, - double pstart, Shapes& gline, double pend); - int associateClosedLine (Vertex* mfirst, Edge* mstart, Edges& mline, - Shape* gstart, double pstart, bool inv, - Shapes& gline); - - void setShape (Shape* forme) { doc_shape = forme ; } - Shape* getShape () { return doc_shape ; } // --------------------------------------------------- Evols Hexa3 @@ -195,34 +199,34 @@ public : Hexa* addHexa4Quads (Quad* q1, Quad* q2, Quad* q3, Quad* q4); Hexa* addHexa5Quads (Quad* q1, Quad* q2, Quad* q3, Quad* q4, Quad* q5); - Elements* revolutionQuads (Quads& start, Vertex* center, Vector* axis, + Elements* revolutionQuads (Quads& start, Vertex* center, Vector* axis, RealVector &angles); - Elements* makeSphere (Vertex* center, Vector* vx, Vector* vz, + Elements* makeSphere (Vertex* center, Vector* vx, Vector* vz, double radius, double radhole, - Vertex* plorig, + Vertex* plorig, int nrad, int nang, int nhaut); - Elements* makePartSphere (Vertex* center, Vector* vx, Vector* vz, + Elements* makePartSphere (Vertex* center, Vector* vx, Vector* vz, double radius, double radhole, Vertex* plorig, double angle, int nrad, int nang, int nhaut); - Elements* makeRind (Vertex* center, Vector* vx, Vector* vz, + Elements* makeRind (Vertex* center, Vector* vx, Vector* vz, double radext, double radint, double radhole, - Vertex* plorig, + Vertex* plorig, int nrad, int nang, int nhaut); - Elements* makePartRind (Vertex* center, Vector* vx, Vector* vz, + Elements* makePartRind (Vertex* center, Vector* vx, Vector* vz, double radext, double radint, double radhole, Vertex* plorig, double angle, int nrad, int nang, int nhaut); - Elements* replace (Quads& pattern, Vertex* p1, Vertex* c1, + Elements* replace (Quads& pattern, Vertex* p1, Vertex* c1, Vertex* p2, Vertex* c2, Vertex* p3, Vertex* c3); - Elements* makeCylindricals (Vertex* c, Vector* b, Vector* h, - RealVector& tdr, RealVector& tda, RealVector& tdh, + Elements* makeCylindricals (Vertex* c, Vector* b, Vector* h, + RealVector& tdr, RealVector& tda, RealVector& tdh, bool fill=false); // --------------------------------------------------- Evols Hexa4' @@ -233,22 +237,51 @@ public : void getAssoEdges (Edges& tabelt); void getAssoVertices (Vertices& tabelt); + // --------------------------------------------------- Evols Hexa5 + + NewShape* getCloud () { return doc_cloud ; } + NewShape* addShape (TopoDS_Shape& forme, const char* name); + NewShape* addShape (const char* name, EnumShape type); + NewShape* getShape (int nro); + NewShape* findShape (rcstring name); + int countShape () { return doc_tab_shape.size() ; } + + int associateOpenedLine (Edges& mline, NewShapes& gline, IntVector& tabid, + double pstart, double pend); + + int associateClosedLine (Vertex* mfirst, Edges& mline, + NewShapes& gline, IntVector& tabid, + double pstart, bool inv); + + int associateLine (Vertex* mfirst, Edges& mline, + NewShapes& gline, IntVector& tabid, + double pstart, double pend, bool inv); + + int clearAssociation (EnumElt type); + void clearAssoVertices (); + void clearAssoEdges (); + void clearAssoQuads (); + + int checkAssociations (); + public: - Document (cpchar name); + Document (cpchar name, Hex* dad=NULL); ~Document (); int loadXml (cpchar name); int setXml (cpchar flux); - cpchar getXml (); + int setXml (cpchar flux, int& position); EltBase* getFirstEltBase (EnumElt type) { return doc_first_elt [type]; } EltBase* getLastEltBase (EnumElt type) { return doc_last_elt [type]; } + int getNbrElt (EnumElt type) { return doc_nbr_elt [type]; } void setDeprecated (int level=1); void dump (); void markAll (int marque, int type=-1); - int saveVtk (cpchar nomfic); - int saveVtk (cpchar radical, int &nro); + int saveVtk0 (cpchar nomfic); + int saveVtk (cpchar nomfic); + int saveVtk (cpchar radical, int &nro); void putError (cpchar mess, cpchar info1=NULL, cpchar info2=NULL); void nputError (cpchar mess, int info1, cpchar info2=NULL); @@ -261,11 +294,20 @@ public: void reorderFaces (); void reorderQuads (); + // --------------------------------------------------- Evols Hexa5 + cpchar getNextName (EnumElt type, string& name); + string getNextName (EnumElt type); + + virtual char* makeVarName (char* name); + void lockDump(); + void restoreDump(); + bool isEmpty (); + public: Globale* glob; private : - int genXml (cpchar filename); + int genXml (); int parseXml (XmlTree& xml); void replaceVertex (Vertex* v1, Vertex* v2); @@ -279,12 +321,6 @@ private : void renumeroter (); Elements* clonerElements (Elements* table, Matrix* matrice); - int associateCascade (Edges& mline, int msens[], Shape* gstart, - Shapes& gline, double pstart, double pend, bool clos, - bool inv); - int associateLine (Vertex* mfirst, Edge* mstart, Edges& mline, - Shape* gstart, double pstart, Shapes& gline, double pend, - bool inv=false); // --------------------------------------------------- Evols Hexa3 Hexa* addHexaQuadsAB (AnaQuads& strquads); @@ -294,22 +330,31 @@ private : Hexa* addHexaQuadsABCD (AnaQuads& strquads); Hexa* addHexaQuadsACDE (AnaQuads& strquads); - Shape* parseShape (XmlTree* node); - EltBase* findElement (EnumElt type, int ident); + // --------------------------------------------------- Evols Hexa5 + void addCloud (); + int sortShapes (NewShapes& tshapes, IntVector& subid, + bool closed, bool inv, double pstart, double pend, + EdgeShapes& glines, IntVector& sens, double& lgtotale); + int sortEdges (Vertex* vfirst, Edges& mline, Edges& edges, IntVector& sens); + + void parseShapes (XmlTree& root); + void parseAssociation (XmlTree* root, Quad* elt); + void parseAssociation (XmlTree* root, Edge* elt); + void parseAssociation (XmlTree* root, Vertex* elt); + SubShape* parseSubShape (XmlTree* root); private : friend class EltBase; - bool doc_modified; - bool count_modified; - bool doc_saved; + bool doc_modified; + bool count_modified; + bool doc_saved; bool maj_connection; bool purge_elements; int doc_db; int nbr_errors; - std::string doc_name; EltBase* doc_first_elt [EL_MAXI]; EltBase* doc_last_elt [EL_MAXI]; int doc_nbr_elt [EL_MAXI]; @@ -328,12 +373,10 @@ private : std::vector doc_vector; std::vector doc_cylinder; std::vector doc_pipe; - XmlWriter* doc_xml; + XmlWriter* doc_xml; // --------------------------------------------------- HexaBlock v3 - Shape* doc_shape; - std::vector doc_used_hexas; std::vector doc_used_quads; std::vector doc_used_edges; @@ -343,6 +386,15 @@ private : int nbr_used_quads; int nbr_used_edges; int nbr_used_vertex; + + // --------------------------------------------------- HexaBlock v5 + + static int doc_number; + char doc_ident [8]; + Hex* hex_parent; + + NewShape* doc_cloud; // Nuage de points du doc; + std::vector doc_tab_shape; }; // ========================================================= saveVtk (avec nro) inline int Document::saveVtk (cpchar radical, int &nro) @@ -361,13 +413,13 @@ inline int Document::saveVtk (cpchar radical, int &nro) inline void Document::setDeprecated (int level) { switch (level) - { + { // En cas de destruction : parents invalides case 2 : maj_connection = true; purge_elements = true; // creation + destruction : propagations a revoir case 1 : maj_propagation = true; - // Par defaut : + // Par defaut : default: doc_modified = true; count_modified = true; } diff --git a/src/HEXABLOCK/HexDocument_Xml.cxx b/src/HEXABLOCK/HexDocument_Xml.cxx index 66700f7..e8e7522 100755 --- a/src/HEXABLOCK/HexDocument_Xml.cxx +++ b/src/HEXABLOCK/HexDocument_Xml.cxx @@ -23,12 +23,11 @@ #include // Pour basename #include // Pour atoi et atof -#include "HexEltBase.hxx" +#include "Hex.hxx" #include "HexVertex.hxx" #include "HexEdge.hxx" #include "HexQuad.hxx" #include "HexHexa.hxx" -#include "HexShape.hxx" #include "HexElements.hxx" @@ -41,6 +40,11 @@ #include "HexLaw.hxx" #include "HexGroup.hxx" +#include "HexNewShape.hxx" +#include "HexVertexShape.hxx" +#include "HexEdgeShape.hxx" +#include "HexFaceShape.hxx" + #include "HexXmlWriter.hxx" #include "HexXmlTree.hxx" @@ -70,7 +74,7 @@ int parseName (XmlTree* node, const string& nom, EltBase* elt) int nroid = 0; for (int nc=1 ; ncsetId (nroid); const string& name = node->findValue ("name"); @@ -112,7 +116,7 @@ int Document::loadXml (cpchar ficname) { XmlTree xml(""); string filename = ficname; - doc_name = basename ((pchar)ficname); + el_name = basename ((pchar)ficname); static const int NbExt = 3; static cpchar t_ext [NbExt] = { ".xml", ".XML", ".Xml" }; @@ -120,17 +124,17 @@ int Document::loadXml (cpchar ficname) bool noext = true; for (int nx = 0; nx < NbExt && noext ; nx++) { - ici = doc_name.rfind (t_ext[nx]); - noext = ici < 0 || ici > doc_name.size(); + ici = el_name.rfind (t_ext[nx]); + noext = ici < 0 || ici > el_name.size(); } if (noext) - filename += ".xml"; + filename += ".xml"; else - doc_name.erase (ici, 4); + el_name.erase (ici, 4); int ier = xml.parseFile (filename); - if (ier!=HOK) + if (ier!=HOK) return ier; ier = parseXml (xml); @@ -139,29 +143,24 @@ int Document::loadXml (cpchar ficname) // ======================================================== setXml int Document::setXml (cpchar flux) { - XmlTree xml(""); - xml.parseFlow (flux); - - int ier = parseXml (xml); - if (ier==HOK) - doc_saved = true; + int posit = 0; + int ier = setXml (flux, posit); return ier; } -// ======================================================== parseShape -Shape* Document::parseShape (XmlTree* node) +// ======================================================== setXml +int Document::setXml (cpchar flux, int& posit) { - const string& ident = node->findValue ("ident"); - const string& inter = node->findValue ("interval"); - const string& brep = node->findValue ("brep"); + XmlTree xml(""); - double pdeb, pfin; - get_coords (inter, pdeb, pfin); - - Shape* shape = new Shape (brep); - shape->setBounds (pdeb, pfin); - shape->setName (ident); + int ier = xml.parseStream (flux, posit); + if (ier!=HOK) + return ier; - return shape; + ier = parseXml (xml); + if (ier==HOK) + doc_saved = true; + + return ier; } // ======================================================== parseXml int Document::parseXml (XmlTree& xml) @@ -175,31 +174,42 @@ int Document::parseXml (XmlTree& xml) map t_vector; vector tname; + const string& version = xml.findValue ("version"); + if (version == "") + { + cout << " **** Format du fichier XML perime" + << endl; + return HERR; + } const string& name = xml.findValue ("name"); - if (name != "") - doc_name = name; + if (name != el_name) + setName (name.c_str()); + + parseShapes (xml); XmlTree* rubrique = xml.findChild ("ListVertices"); int nbrelts = rubrique->getNbrChildren (); + Vertex* vertex = NULL; for (int nro=0 ; nro < nbrelts ; nro++) { XmlTree* node = rubrique->getChild (nro); + const string& type = node->getName(); double px, py, pz; - const string& nom = node->findValue ("id"); - const string& coords = node->findValue ("coord"); - const string& brep = node->findValue ("shape"); - get_coords (coords, px, py, pz); + if (type=="Vertex") + { + const string& nom = node->findValue ("id"); + const string& coords = node->findValue ("coord"); + get_coords (coords, px, py, pz); - Vertex* vertex = addVertex (px, py, pz); - parseName (node, nom, vertex); - Shape* shape = NULL; - if (brep != "" ) + vertex = addVertex (px, py, pz); + parseName (node, nom, vertex); + t_vertex [nom] = vertex; + } + else if (type=="Asso") { - shape = new Shape (brep); - vertex->setAssociation (shape); + parseAssociation (node, vertex); } - t_vertex [nom] = vertex; } rubrique = xml.findChild ("ListEdges"); @@ -219,10 +229,9 @@ int Document::parseXml (XmlTree& xml) t_edge [nom] = edge; parseName (node, nom, edge); } - else if (type=="Shape" && edge!=NULL) + else if (type=="Asso") { - Shape* shape = parseShape (node); - edge->addAssociation (shape); + parseAssociation (node, edge); } } @@ -245,10 +254,9 @@ int Document::parseXml (XmlTree& xml) t_quad [nom] = quad; parseName (node, nom, quad); } - else if (type=="Shape" && quad!=NULL) + else if (type=="Asso") { - Shape* shape = parseShape (node); - quad->addAssociation (shape); + parseAssociation (node, quad); } } @@ -315,7 +323,7 @@ int Document::parseXml (XmlTree& xml) const string& nmedge = node->findValue ("edge"); const string& nmlaw = node->findValue ("law"); // const string& nmway = node->findValue ("way"); - + edge = t_edge [nmedge]; Law* law = findLaw (nmlaw.c_str()); // bool way = nmway == "true"; @@ -328,7 +336,7 @@ int Document::parseXml (XmlTree& xml) { rubrique = pipe ? xml.findChild ("ListPipes") : xml.findChild ("ListCylinders"); - + nbrelts = rubrique == NULL ? 0 : rubrique->getNbrChildren (); for (int nro=0 ; nro < nbrelts ; nro++) @@ -338,7 +346,7 @@ int Document::parseXml (XmlTree& xml) const string& cdir = node->findValue ("c_dir" ); const string& cradius = node->findValue ("c_radius"); const string& cheight = node->findValue ("c_height"); - + Vertex* base = t_vertex [cbase]; Vector* dir = t_vector [cdir]; double radius = atof (cradius.c_str()); @@ -376,7 +384,7 @@ int Document::parseXml (XmlTree& xml) { node = ndgroup ->getChild (nelt); const string& id = node->findValue ("id"); - switch (type) + switch (type) { case EL_HEXA : groupe->addElement (t_hexa [id]); break; @@ -387,8 +395,8 @@ int Document::parseXml (XmlTree& xml) case EL_VERTEX : default : groupe->addElement (t_vertex [id]); break; - } - } + } + } } @@ -397,21 +405,44 @@ int Document::parseXml (XmlTree& xml) // ======================================================== save int Document::save (const char* ficxml) { - int ier = genXml (ficxml); + if (doc_xml==NULL) + doc_xml = new XmlWriter (); + + int ier = doc_xml->setFileName (ficxml); + if (ier != HOK) + return ier; + + ier = genXml (); + return ier; +} +// ======================================================== appendXml +int Document::appendXml (pfile fstudy) +{ + if (doc_xml==NULL) + doc_xml = new XmlWriter (); + + doc_xml->setFile (fstudy); + + int ier = genXml (); return ier; } // ======================================================== getXml cpchar Document::getXml () { - int ier = genXml (NULL); + if (doc_xml==NULL) + doc_xml = new XmlWriter (); + + doc_xml->setStream (); + int ier = genXml (); if (ier!=HOK) return NULL; return doc_xml->getXml (); } // ======================================================== genXml -int Document::genXml (cpchar filename) +int Document::genXml () { + const int HexVersion = 1; // -- 1) Raz numerotation precedente markAll (NO_COUNTED); if (maj_propagation) @@ -420,12 +451,13 @@ int Document::genXml (cpchar filename) if (doc_xml==NULL) doc_xml = new XmlWriter (); - doc_xml->openXml (filename); + doc_xml->startXml (); doc_xml->openMark ("Document"); - doc_xml->addAttribute ("name", doc_name); + doc_xml->addAttribute ("name", el_name); + doc_xml->addAttribute ("version", HexVersion); doc_xml->endMark (); - cpchar balise [] = {"ListXXXX", + cpchar balise [] = {"ListXXXX", "ListVertices", "ListEdges", "ListQuads", "ListHexas", "ListVectors", "ListXXXX" }; @@ -467,6 +499,12 @@ int Document::genXml (cpchar filename) doc_xml->addMark ("ListGroups"); for (int nro=0 ; nrosaveXml (doc_xml); + doc_xml->closeMark (true); + + nombre = countShape (); + doc_xml->addMark ("ListShapes"); + for (int nro=0 ; nrosaveXml (doc_xml); doc_xml->closeMark (); doc_xml->closeMark (); @@ -490,7 +528,7 @@ void Document::markAll (int marque, int type) } } // ====================================================== saveVtk -int Document::saveVtk (cpchar nomfic) +int Document::saveVtk0 (cpchar nomfic) { // -- 1) Raz numerotation precedente markAll (NO_COUNTED, EL_VERTEX); @@ -564,6 +602,86 @@ int Document::saveVtk (cpchar nomfic) fclose (vtk); return HOK; } + +// ====================================================== saveVtk +// ==== Nouvelle formule +int Document::saveVtk (cpchar nomfic) +{ + int nbnodes = doc_nbr_elt [EL_VERTEX]; + int nbcells = countHexa (); + + pfile vtk = fopen (nomfic, "w"); + if (vtk==NULL) + { + cout << " ****" << endl; + cout << " **** Document::saveVtk : " << endl; + cout << " **** Can't open file " << endl; + cout << " ****" << endl; + + } + fprintf (vtk, "# vtk DataFile Version 3.1\n"); + fprintf (vtk, "%s \n", nomfic); + fprintf (vtk, "ASCII\n"); + fprintf (vtk, "DATASET UNSTRUCTURED_GRID\n"); + fprintf (vtk, "POINTS %d float\n", nbnodes); + + // -- 1) Les noeuds + Real3 koord; + static const double minvtk = 1e-30; +#define Koord(p) koord[p]-minvtk ? 0 : koord[p] + + int last_nro = 0; + for (EltBase* elt = doc_first_elt[EL_VERTEX]->next (); elt!=NULL; + elt = elt->next()) + { + Vertex* node = static_cast (elt); + if (node->isHere()) + { + int nro = node->getId (); + for (int np = last_nro ; np < nro ; np++) + fprintf (vtk, "0 0 0\n"); + + node->getPoint (koord); + fprintf (vtk, "%g %g %g\n", Koord(dir_x), Koord(dir_y), Koord(dir_z)); + last_nro = nro+1; + } + } + + for (int np = last_nro ; np < nbnodes ; np++) + fprintf (vtk, "0 0 0\n"); + + // -- 2) Les hexas + + fprintf (vtk, "CELLS %d %d\n", nbcells, nbcells*(HV_MAXI+1)); + + for (EltBase* elt = doc_first_elt[EL_HEXA]->next (); elt!=NULL; + elt = elt->next()) + { + Hexa* cell = static_cast (elt); + if (cell!=NULL && cell->isHere()) + cell->printHexaVtk (vtk); + } + + fprintf (vtk, "CELL_TYPES %d\n", nbcells); + for (int nro=0 ; nronext (); elt!=NULL; + elt = elt->next()) + { + Hexa* cell = static_cast (elt); + if (cell!=NULL && cell->isHere()) + cell->colorNodes (vtk); + } +*********************************/ + fclose (vtk); + return HOK; +} // ====================================================== purge void Document::purge () { @@ -647,7 +765,7 @@ void Document::majReferences () // ======================================================== dump void Document::dump () { - cpchar nom_type [] = { "Elments non classes", + cpchar nom_type [] = { "Elments non classes", "Sommets", "Aretes", "Faces", "Hexaedres", "Elements detruits" }; for (int type=EL_VERTEX ; type <= EL_HEXA ; type++) @@ -689,4 +807,92 @@ void Document::hputError (cpchar mess, EltBase* e1, EltBase* e2) putError (mess, name1, name2); } +// ======================================================== parseSubShape +SubShape* Document::parseSubShape (XmlTree* node) +{ + const string& name = node->findValue ("shape"); + int subid = node->findInteger ("subid"); + NewShape* shape = findShape (name); + if (shape==NULL) + return NULL; + + SubShape* sub_shape = shape->findSubShape (subid); + return sub_shape; +} +// ======================================================== parseAssociation (v) +void Document::parseAssociation (XmlTree* node, Vertex* vertex) +{ + SubShape* shape = parseSubShape (node); + if (shape==NULL || vertex==NULL) + return; + + if (shape->getDim()!=0) + return; + VertexShape* vshape = static_cast (shape); + vertex->setAssociation (vshape); +} +// ======================================================== parseAssociation (e) +void Document::parseAssociation (XmlTree* node, Edge* edge) +{ + SubShape* shape = parseSubShape (node); + if (shape==NULL || edge==NULL) + return; + + if (shape->getDim()!=1) + return; + + const string& inter = node->findValue ("interval"); + double pdeb, pfin; + get_coords (inter, pdeb, pfin); + + EdgeShape* line = static_cast (shape); + edge->addAssociation (line, pdeb, pfin); +} +// ======================================================== parseAssociation (q) +void Document::parseAssociation (XmlTree* node, Quad* quad) +{ + SubShape* shape = parseSubShape (node); + if (shape==NULL || quad==NULL) + return; + + if (shape->getDim()!=2) + return; + FaceShape* face = static_cast (shape); + quad->addAssociation (face); +} +// ======================================================== parseShapes +void Document::parseShapes (XmlTree& root) +{ + XmlTree* rubrique = root.findChild ("ListShapes"); + int nbrelts = rubrique->getNbrChildren (); + + for (int nro=0 ; nro < nbrelts ; nro++) + { + XmlTree* node = rubrique->getChild (nro); + const string& type = node->getName(); + if (type=="Shape") + { + const string& nom = node->findValue ("id" ); + int orig = node->findInteger ("type"); + const string& brep = node->findValue ("brep"); + NewShape* shape = new NewShape (this, (EnumShape)orig); + + parseName (node, nom, shape); + shape->setBrep (brep); + doc_tab_shape.push_back (shape); + } + else if (type=="Cloud") + { + int nbvert = node->getNbrChildren (); + for (int nv=0 ; nv < nbvert ; nv++) + { + Real3 point; + XmlTree* sommet = node->getChild (nv); + const string& coords = sommet->findValue ("coord"); + get_coords (coords, point[dir_x], point[dir_y], point[dir_z]); + doc_cloud->addPoint (point); + } + } + } +} END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexDocument_asso.cxx b/src/HEXABLOCK/HexDocument_asso.cxx index 23acae5..197c61b 100755 --- a/src/HEXABLOCK/HexDocument_asso.cxx +++ b/src/HEXABLOCK/HexDocument_asso.cxx @@ -1,5 +1,5 @@ -// C++ : Associatiosn dans le document +// C++ : Associations dans le document // Copyright (C) 2009-2012 CEA/DEN, EDF R&D // @@ -17,31 +17,201 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com // #include "HexDocument.hxx" #include "HexEdge.hxx" +#include "HexQuad.hxx" #include "HexDiagnostics.hxx" - +#include "HexNewShape.hxx" +#include "HexEdgeShape.hxx" BEGIN_NAMESPACE_HEXA -static bool db = false; +static bool db = on_debug (); // == getenv ("HEXA_DB") > 0 + + +int vertexInLine (Vertex* vfirst, Edges& mline, vector &tsens); +// ====================================================== vertexInLine +int vertexInLine (Vertex* vfirst, Edges& mline, vector &tsens) +{ + int nbseg = mline.size (); + + for (int ned = 0 ; nedgetVertex (ns) == vfirst) + { + tsens [ned] = ns; + return ned; + } + } + } + + return NOTHING; +} +// ====================================================== clearAssociation +void Document::clearAssociation () +{ + clearAssoVertices (); + clearAssoEdges (); + clearAssoQuads (); +} +// ====================================================== clearAssociation (t) +int Document::clearAssociation (EnumElt type) +{ + switch (type) + { + case EL_VERTEX : + clearAssoVertices (); + break; + case EL_EDGE : + clearAssoEdges (); + break; + case EL_QUAD : + clearAssoQuads (); + break; + default : return HERR; + } + + return HOK; +} +// ====================================================== clearAssoVertices +void Document::clearAssoVertices () +{ + for (EltBase* elt = doc_first_elt[EL_VERTEX]->next (); elt!=NULL; + elt = elt->next()) + { + Vertex* elem = static_cast (elt); + if (elem->isValid ()) + elem->clearAssociation (); + } +} +// ====================================================== clearAssoEdges +void Document::clearAssoEdges () +{ + for (EltBase* elt = doc_first_elt[EL_EDGE]->next (); elt!=NULL; + elt = elt->next()) + { + Edge* elem = static_cast (elt); + if (elem->isValid ()) + elem->clearAssociation (); + } +} +// ====================================================== clearAssoQuads +void Document::clearAssoQuads () +{ + for (EltBase* elt = doc_first_elt[EL_VERTEX]->next (); elt!=NULL; + elt = elt->next()) + { + Quad* elem = static_cast (elt); + if (elem->isValid ()) + elem->clearAssociation (); + } +} +// ====================================================== addShape (1) +NewShape* Document::addShape (TopoDS_Shape& topo, cpchar name) +{ + NewShape* shape = new NewShape (this); + doc_tab_shape.push_back (shape); + + shape->setName (name); + shape->setShape (topo); + return shape; +} +// ====================================================== addShape (2) +NewShape* Document::addShape (cpchar name, EnumShape type) +{ + NewShape* shape = new NewShape (this, type); + doc_tab_shape.push_back (shape); + + shape->setName (name); + return shape; +} +// ====================================================== addCloud +void Document::addCloud () +{ + doc_cloud = new NewShape (this, SH_CLOUD); + doc_cloud->setName ("cloud"); -int vertexInLine (Vertex* mfirst, Edges& mline, vector &tsens); -int associateShapes (Edges& mline, int msens[], Shape* gstart, Shapes& gline, - double pstart, double pend, bool closed, bool inv=false); + doc_tab_shape.push_back (doc_cloud); +} +// ====================================================== getShape +NewShape* Document::getShape (int nro) +{ + int nbre = doc_tab_shape.size (); + if (nro < 0 || nro >= nbre) + return NULL; + + return doc_tab_shape [nro]; +} +// ====================================================== findShape +NewShape* Document::findShape (rcstring nom) +{ + int nbre = doc_tab_shape.size (); + for (int nro=0 ; nrogetName()) + return doc_tab_shape [nro]; +} +// ====================================================== find_line +EdgeShape* find_line (EdgeShapes& gline, double* point, int& sens) +{ + int nbseg = gline.size (); + + for (int ned = 0 ; nedonExtremity (point); + if (sens >=0) + { + gline [ned] = NULL; + return edge; + } + } + } + return NULL; +} +// ====================================================== find_edge +Edge* find_edge (Edges& mline, Vertex* vfirst, int& sens) +{ + int nbseg = mline.size (); + for (int ned = 0 ; nedindex (vfirst); + if (sens >=0) + { + mline [ned] = NULL; + return edge; + } + } + } + return NULL; +} // ====================================================== associateOpenedLine -int Document::associateOpenedLine (Edge* mstart, Edges& mline, Shape* gstart, - double pstart, Shapes& gline, double pend) +int Document::associateOpenedLine (Edges& mline, NewShapes& gline, + IntVector& tabid, + double pstart, double pend) { - int ier = associateLine (NULL, mstart, mline, gstart, pstart, gline, pend); + cout << "_________________________________ Asso Open Line" + << " ed=" << mline.size() + << " sh=" << tabid.size() + << endl; + int ier = associateLine (NULL, mline, gline, tabid, pstart, pend, false); return ier; } // ====================================================== associateClosedLine -int Document::associateClosedLine (Vertex* vfirst, Edge* mstart, Edges& mline, - Shape* gstart, double pstart, bool inv, Shapes& gline) +int Document::associateClosedLine (Vertex* vfirst, Edges& mline, + NewShapes& gline, IntVector& tabid, + double pstart, bool inv) { if (vfirst == NULL) { @@ -49,55 +219,151 @@ int Document::associateClosedLine (Vertex* vfirst, Edge* mstart, Edges& mline, return HERR; } - int ier = associateLine (vfirst, mstart, mline, gstart, pstart, gline, - 1.0, inv); + cout << "_________________________________ Asso Closed Line" + << " first=" << vfirst->getName() + << " ed=" << mline.size() + << " sh=" << tabid.size() + << " inv=" << inv + << endl; + int ier = associateLine (vfirst, mline, gline, tabid, pstart, 1.0, inv); + PutData (ier); return ier; } -// ====================================================== associateClosedLine -int Document::associateLine (Vertex* vfirst, Edge* mstart, Edges& mline, - Shape* gstart, double pstart, Shapes& gline, double pend, - bool inv) +// ====================================================== associateLine +int Document::associateLine (Vertex* vfirst, Edges& mline, + NewShapes& tshapes, IntVector& subid, + double pstart, double pend, bool inv) { - db = on_debug (); - char buffer [16], cnum [8]; - int nbseg = mline.size (); - bool closed = vfirst != NULL; + EdgeShapes glines; + Edges tedges; + IntVector gsens, tsens; + double lgtotale; - if (mstart == NULL) - { - putError (W_ASSO_LINE4); - return HERR; - } - // Contour ferme : - // Le vertex de depart n'appartient pas a l'edge de depart - int istart = mstart->index (vfirst); - if (closed && istart == NOTHING) + bool closed = vfirst!=NULL; + int ier = sortShapes (tshapes, subid, closed, inv, pstart, pend, + glines, gsens, lgtotale); + if (ier != HOK) + return ier; + + ier = sortEdges (vfirst, mline, tedges, tsens); + if (ier != HOK) + return ier; + + int nbedges = tedges.size(); + int nblines = glines.size(); + + EdgeShape* gstart = glines [0]; + EdgeShape* gend = glines [nblines-1]; + bool boucle = closed && nblines==1; + + double abstart = inv ? (1-pstart) : pstart; + if (NOT closed) { - putError (W_ASSO_LINE2, vfirst->getName (buffer)); - return HERR; + bool rev = gsens [nblines-1]!=0; + double abend = rev ? pend : (1-pend); + lgtotale = lgtotale - abstart * gstart->getLength() + - abend * gend ->getLength(); } + // 1er point + Real3 point; + gstart->getPoint (pstart, point); + int vsid = doc_cloud->addPoint (point); + Vertex* node = tedges[0]->getVertex (tsens[0]); + node->setAssociation (doc_cloud, vsid); - if (db) - { - PutName (vfirst); - printf (" . : "); - mstart->printName (" = ("); - mstart->getVertex(V_AMONT)->printName (", "); - mstart->getVertex(V_AVAL) ->printName (")\n"); + double lgedge = lgtotale/nbedges; + double smin = 0; + double smax = gstart->getLength()*(1-abstart); + double emax = lgedge; + double pdeb = pstart; + double ablast = 0; + double tol = 1e-2; - for (int nro=0 ; nrogetLength (); + + double abscisse = std::min (emax, smax); + double decal = (abscisse-ablast) / lgshape; + if (grev) { - printf (" %2d : ", nro); - mline[nro]->printName(" = ("); - mline[nro]->getVertex(V_AMONT)->printName(", "); - mline[nro]->getVertex(V_AVAL )->printName(")\n"); + pfin = pdeb - decal; + if (pfin < 0.0) pfin = 0; } - } + else + { + pfin = pdeb + decal; + if (pfin > 1.0) pfin = 1; + } + + edge->addAssociation (shape, pdeb, pfin); + if (vassoc) + { + shape->getPoint (pfin, point); + vsid = doc_cloud->addPoint (point); + node = edge ->getVertex (1-tsens[ned]); - for (int ns = 0 ; ns < nbseg ; ns++) + node->setAssociation (doc_cloud, vsid); + } + ablast = abscisse; + pdeb = pfin; + // On incremente les edges + if (av_edge) + { + ned ++; + emax += lgedge; + } + // On incremente les shapes + if (av_shape) + { + pdeb = 0; + if (boucle) + { + smin = smax; + smax = shape->getLength (); + } + else + { + nsh ++; + if (nshgetLength(); + } + } + } + } + + return HOK; +} +// ====================================================== sortShapes +int Document::sortShapes (NewShapes& tshapes, IntVector& subid, bool closed, + bool inv, double pstart, double pend, + EdgeShapes& glines, IntVector& gsens, double& lgtotale) +{ + char cnum [8]; + int nblines = subid.size (); + int nombre = tshapes.size (); + + if (nblines==0 || nombre==0) + return HERR; + + if (nombre != 1 && nombre != nblines) + return HERR; + + for (int ns = 0 ; ns < nombre ; ns++) { - if (mline[ns] == NULL) + if (tshapes[ns] == NULL) { sprintf (cnum, "%d", ns); putError (W_ASSO_LINE5, cnum); @@ -105,137 +371,152 @@ int Document::associateLine (Vertex* vfirst, Edge* mstart, Edges& mline, } } - vector tab_sens (nbseg, V_TWO); - int sens = V_AMONT; - int nedge = NOTHING; - Vertex* pnode = mstart->getVertex (sens); + NewShape* geom = tshapes [0]; + EdgeShapes buf_lines; + glines.clear (); + gsens .clear (); + for (int ns = 0 ; ns < nblines ; ns++) + { + if (nombre > 1) + geom = tshapes [ns]; + EdgeShape* shape = geom->findEdge (subid[ns]); + if (shape==NULL) + { + sprintf (cnum, "%d", ns); + putError (W_ASSO_LINE5, cnum); + return HERR; + } + buf_lines.push_back (shape); + } + + Real3 pnext; + EdgeShape* gnext = buf_lines[0]; + buf_lines[0] = NULL; + int reste = nblines - 1; + int rev = inv; - if (nbseg==0) - { - nedge = 0; - } - else if (NOT closed) - { - pnode = mstart->getVertex (sens); - nedge = vertexInLine (pnode, mline, tab_sens); - if (nedge == NOTHING) - { - sens = V_AVAL; - pnode = mstart->getVertex (sens); - nedge = vertexInLine (pnode, mline, tab_sens); - } - } - // Closed : on recherche ou se trouve le 2e vertex de mstart - else - { - sens = 1-istart; - pnode = mstart->getVertex (sens); - nedge = vertexInLine (pnode, mline, tab_sens); - } + lgtotale = gnext->getLength(); + glines.push_back (gnext); + gsens .push_back (inv); - HexDisplay (nbseg); + for (int nro = 0 ; nro < reste ; nro++) + { + double param = 1-rev; + gnext->getPoint (param, pnext); + gnext = find_line (buf_lines, pnext, rev); + if (gnext == NULL) + return HERR; + lgtotale += gnext->getLength(); + glines.push_back (gnext); + gsens .push_back (rev); + } - if (nedge == NOTHING) + if (closed) { - putError (W_ASSO_LINE, mstart->getName (buffer)); - return HERR; + EdgeShape* gfirst = glines[0]; + gfirst->getPoint (1-inv, pnext); + int ext = gnext->onExtremity (pnext); + if (ext<0) + return HERR; } + return HOK; +} +// ====================================================== sortEdges +int Document::sortEdges (Vertex* vfirst, Edges& mline, Edges& tab_edge, + IntVector& tab_sens) +{ + char cnum [8]; + bool closed = vfirst!=NULL; + + int nbedges = mline.size (); + if (nbedges==0) + return HERR; - Edges les_edges; - vector les_orig; - les_edges.push_back (mstart); - les_orig .push_back (1-sens); - HexDisplay (nedge); - cout << " ........................................ Marque 1" << endl; - if (nbseg>0) + Edge* mstart = mline[0]; // Coherence ancienne version + // Contour ferme : + // Le vertex de depart n'appartient pas a l'edge de depart + int istart = mstart->index (vfirst); + if (closed && istart == NOTHING) { - les_edges.push_back (mline[nedge]); - les_orig. push_back (tab_sens[nedge]); + putError (W_ASSO_LINE2, vfirst->getName()); + return HERR; } - cout << " ........................................ Marque 2" << endl; - if (db) - printf (" mstart [%d] = mline[%d][%d] = %s\n", sens, nedge, - tab_sens [nedge], pnode->getName(buffer)); - - cout << " ........................................ Marque 3" << endl; - for (int ns = 1 ; ns < nbseg ; ns++) + tab_edge.clear(); + tab_sens.clear(); + Edges buf_edge; + for (int nro = 0 ; nro < nbedges ; nro++) { - Vertex* pnode = mline[nedge]->getVertex (1-tab_sens [nedge]); - int nro = vertexInLine (pnode, mline, tab_sens); - if (nro == NOTHING) + Edge* edge = mline[nro]; + if (edge == NULL) { - sprintf (cnum, "%d", nedge); - putError (W_ASSO_LINE2, cnum, mline[nedge]->getName (buffer)); + sprintf (cnum, "%d", nro); + putError (W_ASSO_LINE5, cnum); return HERR; } - if (db) - printf (" mline[%d][%d] = mline[%d][%d] = %s\n", nedge, - 1-tab_sens [nedge], nro, tab_sens [nro], pnode->getName(buffer)); - nedge = nro; - les_edges.push_back (mline [nedge]); - les_orig. push_back (tab_sens [nedge]); + buf_edge.push_back (edge); } - /******************** - if (db) - { - printf (" ... gstart = 0x%x, pstart=%g\n", gstart, pstart); - for (int ns = 0 ; ns < gline.size() ; ns++) - { - printf (" ... gline[%d] = 0x%x\n", ns, gline[ns]); - } - } - **************************/ - + Vertex* vnext = NULL; + Edge* enext = mstart; + int sens = istart; + int reste = nbedges - 1; + tab_edge.push_back (mstart); + buf_edge[0] = NULL; + if (closed) { - Vertex* tete = les_edges [0] ->getVertex (les_orig[0]); - Vertex* queue = les_edges [nbseg]->getVertex (1-les_orig[nbseg]); - if (tete != queue) + tab_sens.push_back (istart); + } + else + { + istart = V_AMONT; + vnext = mstart->getVertex (1-istart); + enext = find_edge (buf_edge, vnext, sens); + if (enext==NULL) { - HexDump (tete); - HexDump (queue); - HexDump (les_edges [0]); - HexDump (les_edges [nbseg]); - putError (W_ASSO_LINE6); - return HERR; + istart = 1-istart; + vnext = mstart->getVertex (1-istart); + enext = find_edge (buf_edge, vnext, sens); } + if (enext==NULL) + return HERR; + tab_sens.push_back (istart); + tab_edge.push_back (enext); + tab_sens.push_back (sens); + reste--; } - - int ier = associateShapes (les_edges, &les_orig[0], gstart, gline, pstart, - pend, closed, inv); - return ier; -} -// ====================================================== vertexInLine -int vertexInLine (Vertex* mfirst, Edges& mline, vector &tsens) -{ - int nbseg = mline.size (); - for (int ned = 0 ; nedgetVertex (ns) == mfirst) - { - tsens [ned] = ns; - return ned; - } - } + vnext = enext->getVertex (1 - sens); + enext = find_edge (buf_edge, vnext, sens); + if (enext == NULL) + return HERR; + tab_edge.push_back (enext); + tab_sens.push_back (sens); } - - return NOTHING; + + istart = tab_edge [nbedges-1]->index (vfirst); + if (closed && istart == NOTHING) + { + putError (W_ASSO_LINE2, vfirst->getName()); + return HERR; + } + + return HOK; } -// ====================================================== vertexInLine -void Document::clearAssociation () +// ====================================================== checkAssociations +int Document::checkAssociations () { - for (int nat=EL_VERTEX ; nat<=EL_QUAD ; nat++) + int nombre = countUsedEdge(); + for (int ned=0 ; nednext (); elt!=NULL; - elt = elt->next()) - clear_association (elt); + Edge* edge = getUsedEdge (ned); + int ier = edge->checkAssociation (); + // if (ier != HOK) return ier; } -} + return HOK; +} END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexDocument_quads.cxx b/src/HEXABLOCK/HexDocument_quads.cxx index 18a4caf..54979c1 100755 --- a/src/HEXABLOCK/HexDocument_quads.cxx +++ b/src/HEXABLOCK/HexDocument_quads.cxx @@ -48,7 +48,7 @@ static bool db = false; Document* Document::copyDocument () { string nom = "CopyOf_"; - nom += doc_name; + nom += el_name; Document* clone = new Document (nom.c_str()); @@ -786,20 +786,21 @@ bool only_in_hexas (Hexas& thexas, Quad* quad) // ========================================================= only_in_hexas bool only_in_hexas (Hexas& thexas, Edge* edge) { + return false; int nbp = edge->getNbrParents(); for (int nq=0 ; nq getParent (nq); if (NOT only_in_hexas (thexas, quad)) { - cout << " ... inMoreHexas " << edge->getName() << endl; + cout << " ... inMoreHexas " << edge->makeDefinition() << endl; return false; } } - cout << " ... only_in_hexas " << edge->getName() << endl; + cout << " ... only_in_hexas " << edge->makeDefinition() << endl; return true; } -// ========================================================= only_in_hexas +// ========================================================= replace_vertex void replace_vertex (Hexas& thexas, Vertex* node, Vertex* par) { int nbh = thexas.size(); diff --git a/src/HEXABLOCK/HexDocument_skin.cxx b/src/HEXABLOCK/HexDocument_skin.cxx new file mode 100755 index 0000000..e896e80 --- /dev/null +++ b/src/HEXABLOCK/HexDocument_skin.cxx @@ -0,0 +1,109 @@ + +// C++ : Reordonnancement des faces + +#include "HexDocument.hxx" + +#include "HexVertex.hxx" +#include "HexEdge.hxx" +#include "HexQuad.hxx" +#include "HexHexa.hxx" + +#include + +BEGIN_NAMESPACE_HEXA +// ---------------------------------------------------------------------- +struct OrientedQuad + { + Quad* quad; + Vertex* v1; + Vertex* v2; + }; + +void propagateOrientation (queue &queue_quads, Quad* orig); +void makeSkin (Quad* orig); + +// ========================================================= reorderFaces +// ==== Ordonner les faces externes +void Document::reorderQuads () +{ + majReferences (); + EltBase* elt = NULL; + + for (elt = doc_first_elt[EL_QUAD]->next (); elt!=NULL; elt = elt->next()) + if (elt!=NULL && elt->isHere()) + { + Quad* quad = static_cast (elt); + if (quad->getNbrParents()==1) quad->setOrientation (Q_UNDEFINED); + else quad->setOrientation (Q_INSIDE); + } + + for (elt = doc_first_elt[EL_HEXA]->next (); elt!=NULL; elt = elt->next()) + if (elt!=NULL && elt->isHere()) + { + Hexa* hexa = static_cast (elt); + for (int nq=0; nqgetQuad (nq); + if (quad->getOrientation()==Q_UNDEFINED) + makeSkin (quad); + } + } +} +// ========================================================= makeSkin +void makeSkin (Quad* orig) +{ + OrientedQuad triplet; + queue queue_quads; + + orig->setOrientation(); // Q_DIRECT=1, Q_INVERSE=2 + propagateOrientation (queue_quads, orig); + + while (NOT queue_quads.empty ()) + { + triplet = queue_quads.front (); + queue_quads.pop (); + int n1 = triplet.quad->indexVertex (triplet.v1); + int n2 = triplet.quad->indexVertex (triplet.v2); + int sens = Q_WAITING; + if (n2 == (n1+1) MODULO QUAD4) + sens = Q_DIRECT; + else if (n1 == (n2+1) MODULO QUAD4) + sens = Q_INVERSE; + else + printf (" **************** Orientation face impossible\n"); + + triplet.quad->setOrientation (sens); + propagateOrientation (queue_quads, triplet.quad); + } +} +// ==================================================== propagateOrientation +void propagateOrientation (queue &queue_quads, Quad* orig) +{ + OrientedQuad triplet; + // Q_DIRECT : le sens des vertex est l'exterieur + int sens = orig->getOrientation(); // Q_DIRECT=1, Q_INVERSE=2 + + for (int ned=0; nedgetVertex ( ned ); + triplet.v2 = orig->getVertex ((ned+1) MODULO QUAD4); + if (sens==Q_DIRECT) + { + Vertex* v3 = triplet.v1; + triplet.v1 = triplet.v2; + triplet.v2 = v3; + } + Edge* edge = orig->getEdge (ned); + int nbp = edge->getNbrParents (); + for (int np=0; npgetParent (np); + if (triplet.quad->getOrientation ()==Q_UNDEFINED) + { + triplet.quad->setOrientation (Q_WAITING); + queue_quads.push (triplet); + } + } + } +} +END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexDocument_trans.cxx b/src/HEXABLOCK/HexDocument_trans.cxx index f63b5f1..fe532f0 100755 --- a/src/HEXABLOCK/HexDocument_trans.cxx +++ b/src/HEXABLOCK/HexDocument_trans.cxx @@ -88,6 +88,7 @@ int Document::performSymmetryPlane (Elements* elts, Vertex* ver, Vector* vec) int ier = elts->transform (&matrice); return ier; } + // ==================================================== performSymmetryLine int Document::performSymmetryLine (Elements* elts, Vertex* ver, Vector* vec) { @@ -243,8 +244,6 @@ void Document::dumpPropagation () void Document::reorderFaces () { majReferences (); - Real3 cg, orig, pi, pj, vi, vj, vk; - for (EltBase* elt = doc_first_elt[EL_QUAD]->next (); elt!=NULL; elt = elt->next()) { diff --git a/src/HEXABLOCK/HexDumpStudy.cxx b/src/HEXABLOCK/HexDumpStudy.cxx new file mode 100755 index 0000000..81ec47c --- /dev/null +++ b/src/HEXABLOCK/HexDumpStudy.cxx @@ -0,0 +1,298 @@ + +// C++ : Dump python + +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "HexDumpStudy.hxx" +#include "HexEltBase.hxx" +#include "HexDocument.hxx" + +BEGIN_NAMESPACE_HEXA + +enum {EL_REAL=EL_NONE}; + +static cpchar + tab_name [EL_MAXI] = {"TReals", "TNodes", "TEdges", "TQuads", "THexas", + "TxxxA", "TxxxB", "TxxxC", "TxxxD", "TxxxE", "TxxxF" }; + +// =================================================== Constructeur +DumpStudy::DumpStudy () +{ + map_name [NULL] = "None"; + is_open = NOT DumpActif; + nbr_nulls = 0; + fic_dump = stdout; + + for (int nc=0 ; ncmakeVarName (name); + } + + declareVectors (); + right_part += ")"; + fprintf (fic_dump, "%s = %s\n", name, right_part.c_str()); +} +// =================================================== close +void DumpStudy::close (bool reactive) +{ + if (reactive) + is_open = false; + else + return; + + declareVectors (); + right_part += ")"; + fprintf (fic_dump, "%s\n", right_part.c_str()); +} +// =================================================== lock +bool DumpStudy::lock () +{ + if (is_open) + return false; + + is_open = true; + return is_open; +} +// =================================================== restore +void DumpStudy::restore (bool reactive) +{ + if (reactive) + is_open = false; +} +// ------------------------------------------------------------- +// ------------ Private +// ------------ For members only +// ------------------------------------------------------------- +// =================================================== addArgument +void DumpStudy::addArgument (cpchar arg) +{ + nbr_args ++; + if (nbr_args>1) + right_part += ", "; + + right_part += arg; +} +// =================================================== addArgVector +void DumpStudy::addArgVector (EnumElt type, TabElts& table) +{ + char name [20]; + sprintf (name, "%s%d", tab_name[type], ++tab_count[type]); + + addVector (name); + + int lg = table.size (); + + for (int nv=0 ; nv :: iterator iter = map_name.find (elt); + if (iter != map_name.end()) + name = iter->second.c_str(); + else + name = "Unknown"; + + return name; +} +END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexDumpStudy.hxx b/src/HEXABLOCK/HexDumpStudy.hxx new file mode 100755 index 0000000..96cb664 --- /dev/null +++ b/src/HEXABLOCK/HexDumpStudy.hxx @@ -0,0 +1,87 @@ + +// Class : Ecriture d'un dump python + +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com + +#ifndef __DUMP_STUDY_H_ +#define __DUMP_STUDY_H_ + +#include "hexa_base.hxx" +#include + +BEGIN_NAMESPACE_HEXA + + +#define DumpStart(p,args) bool actif=el_root->glob->dump.start(this, p); if (actif) el_root->glob->dump << args +#define DumpEnd el_root->glob->dump.close (actif) +#define DumpReturn(v) el_root->glob->dump.close (actif,v) + +#define DumpLock bool actif=el_root->glob->dump.lock () +#define DumpRestore el_root->glob->dump.restore (actif) + +class DumpStudy +{ +public : + DumpStudy (); + + DumpStudy& operator << (int val); + DumpStudy& operator << (double val); + DumpStudy& operator << (cpchar val); + DumpStudy& operator << (EltBase* elt); + DumpStudy& operator << (Edges& elt); + DumpStudy& operator << (Quads& elt); + DumpStudy& operator << (Hexas& elt); + DumpStudy& operator << (RealVector& elt); + + bool start (EltBase* obj, cpchar method); + bool start (cpchar obj, cpchar method); + void close (bool reactive); + void close (bool reactive, EltBase* retour); + + bool lock (); + void restore (bool reactive); + +private : + cpchar findName (EltBase* elt); + void addArgVector (EnumElt type, TabElts& table); + void addArgument (cpchar arg); + void addArgument (string& arg) { addArgument (arg.c_str()) ; } + void declareVectors (); + void addVector (cpchar name); + void majVector (cpchar value); + void closeVector (); + +private : + std::map map_name; + std::vector tab_declar; + + int tab_count [EL_MAXI]; + string curr_vector; + int nbr_values; + + FILE* fic_dump; + string this_name; + string right_part; + bool is_open; + int nbr_nulls; + int nbr_args; +}; +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexEdge.cxx b/src/HEXABLOCK/HexEdge.cxx index 7579acf..b276196 100755 --- a/src/HEXABLOCK/HexEdge.cxx +++ b/src/HEXABLOCK/HexEdge.cxx @@ -17,7 +17,8 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com // #include "HexEdge.hxx" #include "HexVertex.hxx" @@ -25,19 +26,22 @@ #include "HexPropagation.hxx" #include "HexXmlWriter.hxx" -#include "HexShape.hxx" +#include "HexNewShape.hxx" +#include "HexAssoEdge.hxx" static int niveau = 0; BEGIN_NAMESPACE_HEXA +static bool db = on_debug(); + void geom_dump_asso (Edge* edge); // ======================================================== Constructeur Edge::Edge (Vertex* va, Vertex* vb) : EltBase (va->dad(), EL_EDGE) { - e_vertex [V_AMONT] = va; + e_vertex [V_AMONT] = va; e_vertex [V_AVAL ] = vb; e_propag = NOTHING; @@ -88,12 +92,12 @@ int Edge::anaMerge (Vertex* orig, Vertex* tv1[]) tv1 [1] = e_vertex[V_AVAL]; else if (orig == e_vertex [V_AVAL]) tv1 [1] = e_vertex[V_AMONT]; - else + else return HERR; return HOK; } -// ========================================================= propager +// ========================================================= propager void Edge::propager (Propagation* prop, int groupe, int sens) { setPropag (groupe, sens>0); @@ -123,12 +127,12 @@ void Edge::propager (Propagation* prop, int groupe, int sens) } niveau --; } -// ========================================================= getParent +// ========================================================= getParent Quad* Edge::getParent (int nro) { return static_cast (getFather (nro)); } -// ========================================================= saveXml +// ========================================================= saveXml void Edge::saveXml (XmlWriter* xml) { char buffer[12]; @@ -139,21 +143,21 @@ void Edge::saveXml (XmlWriter* xml) xml->openMark ("Edge"); xml->addAttribute ("id", getName (buffer)); xml->addAttribute ("vertices", vertices); - if (el_name!=buffer) + if (el_name!=buffer) xml->addAttribute ("name", el_name); xml->closeMark (); int nbass = tab_assoc.size(); for (int nro=0 ; nrosaveXml (xml); + tab_assoc[nro]->saveXml (xml); } // ======================================================== replaceVertex void Edge::replaceVertex (Vertex* old, Vertex* par) { for (int nro=0 ; nrogetName(); + definition += ","; + definition += e_vertex [V_AVAL]->getName(); + definition += ")"; + + return definition; +} // ========================================================== addAssociation -int Edge::addAssociation (Shape* forme) +int Edge::addAssociation (EdgeShape* gline, double deb, double fin) { - if (forme == NULL) + if (gline == NULL) + return HERR; + + gline->addAssociation (this); + AssoEdge* asso = new AssoEdge (gline, deb, fin); + tab_assoc.push_back (asso); + + if (db) + { + cout << " Edge " << el_name + << " = (" << e_vertex[V_AMONT]->getName() + << " , " << e_vertex[V_AVAL ]->getName() + << ") addAssociation " << gline->getName () + << " (" << deb << ", " << fin << ")" + << endl; + PutCoord (asso->getOrigin ()); + PutCoord (asso->getExtrem ()); + } + is_associated = true; + return HOK; +} +// ========================================================== addAssociation +int Edge::addAssociation (NewShape* geom, int subid, double deb, double fin) +{ + if (geom == NULL) { if (el_root->debug ()) cout << " Edge " << el_name << " addAssociation of NULL ignored" @@ -228,17 +269,107 @@ int Edge::addAssociation (Shape* forme) return HERR; } - tab_assoc.push_back (forme); - if (el_root->debug (2)) - cout << " Edge " << el_name << " addAssociation" << endl; + EdgeShape* gline = geom->findEdge (subid); + int ier = addAssociation (gline, deb, fin); + return ier; +} +// ========================================================== clearAssociation +void Edge::clearAssociation () +{ + int nombre = tab_assoc.size (); + for (int nro=0 ; nro= tab_assoc.size()) + return NULL; + + return tab_assoc [nro]; } -END_NAMESPACE_HEXA +// ========================================================== checkAssociation +int Edge::checkAssociation () +{ + int nombre = tab_assoc.size(); + if (nombre==0) + return HOK; + Real3 ver_assoc [V_TWO]; + int arc [V_TWO], sens [V_TWO]; + for (int nro=0 ; nrogetAssoCoord (ver_assoc[nro]); + } + + int ier = HOK; + for (int nass=0 ; nassonExtremity (ver_assoc[nro]); + if (rep != NOTHING) + { + if (arc[nro] != NOTHING) + { + if (ier==HOK) cout << endl; + cout << " Association Edge " << el_name + << " : Le vertex " << e_vertex[nro]->getName() + << " : Le vertex " << e_vertex[nro]->getName() + << " Touche les lignes " << arc [nro] + << " et " << nass << endl; + ier = 112; + } + arc [nro] = nass; + sens [nro] = rep; + } + } + } + + for (int nro=0 ; nrogetName() + << " , " << e_vertex[V_AVAL ]->getName() + << ")" << endl; + + for (int nv=0 ; nv<2 ; ++nv) + { + Vertex* node = e_vertex[nv]; + cout << node->getName() << " = (" << node->getX() + << ", " << node->getY() << ", " << node->getZ() + << ") -> "<< ver_assoc [nv][0] << ", " << ver_assoc [nv][1] + << ", " << ver_assoc [nv][2] << ")" << endl; + } + + for (int nass=0 ; nassdump (); + } + + return ier; +} +END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexEdge.hxx b/src/HEXABLOCK/HexEdge.hxx index 56ee018..8b095e4 100755 --- a/src/HEXABLOCK/HexEdge.hxx +++ b/src/HEXABLOCK/HexEdge.hxx @@ -36,10 +36,7 @@ public: public: virtual void saveXml (XmlWriter* xml); virtual void replaceVertex (Vertex* old, Vertex* nouveau); - virtual void clearAssociation () { tab_assoc.clear() ; } - virtual void setAssociation (Shape* forme); - virtual bool isAssociated () { return tab_assoc.size() > 0 ; } - virtual int addAssociation (Shape* forme); + virtual void clearAssociation (); Edge (Vertex* va, Vertex* vb); Edge (Edge* other); @@ -74,11 +71,21 @@ public: void setScalar (double valeur); void setColor (double valeur) { setScalar (valeur) ; } - const Shapes & getAssociations () { return tab_assoc ; } + const Shapes & getAssociations () { return tab_shapes ; } virtual void duplicate (); - Edge* getClone () { return e_clone ; } + Edge* getClone () { return e_clone ; } double* getVector (double vecteur[]); + string makeDefinition (); + + virtual int addAssociation (Shape* forme) {return HOK;} // Perime Hexa5 + virtual void setAssociation (Shape* forme) {} // Perime Hexa5 + + int addAssociation (NewShape* geom, int subid, double deb, double fin); + int addAssociation (EdgeShape* gline, double deb, double fin); + int checkAssociation (); + int countAssociation () { return tab_assoc.size () ; } + AssoEdge* getAssociation (int nro); private: friend class Cloner; @@ -88,7 +95,8 @@ private: bool e_way; // Sens de propagation Law* e_law; // Le soleil brille, brille, brille - Shapes tab_assoc; + Shapes tab_shapes; + AssoEdges tab_assoc; }; // ----------------------------------------------- Inlining @@ -173,7 +181,8 @@ inline void Edge::duplicate () e_clone = new Edge (GetClone (e_vertex [V_AMONT]), GetClone (e_vertex [V_AVAL ])); - e_clone->tab_assoc = tab_assoc; + e_clone->tab_shapes = tab_shapes; + e_clone->tab_assoc = tab_assoc; } // =============================================================== getVector inline double* Edge::getVector (double vecteur[]) diff --git a/src/HEXABLOCK/HexEdgeShape.cxx b/src/HEXABLOCK/HexEdgeShape.cxx new file mode 100755 index 0000000..f0cf986 --- /dev/null +++ b/src/HEXABLOCK/HexEdgeShape.cxx @@ -0,0 +1,223 @@ + +// C++ : Gestion des soous-shapes + +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com +// +//--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 + +#include "HexEdgeShape.hxx" + +#ifndef NO_CASCADE + +#include +#include +#include + +#include +#include + +#include + +#include + +BEGIN_NAMESPACE_HEXA + +static bool db = on_debug (); // == getenv ("HEXA_DB") > 0 + +// ====================================================== Constructeur +EdgeShape::EdgeShape (NewShape* dad, int id) + : SubShape (dad, id, 1) +{ + maj_curve = true; + lin_curve = NULL; + lin_length = 0; + lin_start [dir_x] = lin_start [dir_y] = lin_start [dir_z] = 0; + lin_end [dir_x] = lin_end [dir_y] = lin_end [dir_z] = 0; + par_mini = 0; + par_maxi = 0; +} +// ====================================================== getCurve +BRepAdaptor_Curve* EdgeShape::getCurve () +{ + if (maj_curve) + updateCurve (); + + return lin_curve; +} +// ====================================================== makeCurve +BRepAdaptor_Curve* EdgeShape::makeCurve () +{ + if (maj_shape) + updateShape (); + + TopoDS_Edge geo_line = TopoDS::Edge (geo_shape); + BRepAdaptor_Curve* curve = new BRepAdaptor_Curve (geo_line); + return curve; +} +// ====================================================== getCoords +void EdgeShape::getCoords (double* pstart, double* pend) +{ + if (maj_curve) + updateCurve (); + + for (int nc=0 ; nc 1.01) + { + point [dir_x] = point [dir_y] = point [dir_z] = 0; + return HERR; + } + else if (param < 0.01) + param = 0; + else if (param > 0.99) + param = 1; + + if (maj_curve) + updateCurve (); + + GCPnts_AbscissaPoint s1 (*lin_curve, param*lin_length, + lin_curve->FirstParameter()); + + double para1 = s1.Parameter (); + gp_Pnt gpnt = lin_curve->Value (para1); + + point [dir_x] = gpnt.X(); + point [dir_y] = gpnt.Y(); + point [dir_z] = gpnt.Z(); + return HOK; +} +// ========================================================= samePoints +bool EdgeShape::samePoints (double* point1, double* point2) +{ + const double Epsilon2 = 1e-4; + bool rep = same_coords (point1, point2, Epsilon2); + return rep; +} +// ========================================================= onExtremity +int EdgeShape::onExtremity (double* point) +{ + if (maj_curve) + updateCurve (); + + if (samePoints (point, lin_start)) + return V_AMONT; + else if (samePoints (point, lin_end)) + return V_AVAL; + else + return NOTHING; +} +// ========================================================= getParam +double EdgeShape::getParam (double* coord) +{ + if (maj_curve) + updateCurve (); + + if (samePoints (coord, lin_start)) + return 0.0; + else if (samePoints (coord, lin_end)) + return 1.0; + + double umin = 0, umax = 0; + gp_Pnt gpoint (coord[dir_x], coord[dir_y], coord[dir_z]); + + TopoDS_Edge geo_line = TopoDS::Edge (geo_shape); + Handle(Geom_Curve) handle = BRep_Tool::Curve (geo_line, umin, umax); + + GeomAPI_ProjectPointOnCurve projector (gpoint, handle); + if ( projector.NbPoints() == 0 ) + return -1.0; + + double gparam = projector.LowerDistanceParameter(); + if (gparam par_maxi) + return -1.0; + + gp_Pnt rpoint = lin_curve->Value (gparam); + Real3 rcoord = { rpoint.X(), rpoint.Y(), rpoint.Z() }; + + if (NOT samePoints (coord, rcoord)) + return -1.0; + + GeomAdaptor_Curve adapt_curve (handle); + double abscis = GCPnts_AbscissaPoint::Length (adapt_curve, umin, gparam); + double hparam = abscis/lin_length; + + // gparam = (gparam-par_mini) / (par_maxi-par_mini); + return hparam; +} +// ====================================================== getAssociation +Edge* EdgeShape::getAssociation (int nro) +{ + if (nro>0 && nroFirstParameter()); + GCPnts_AbscissaPoint s2(*lin_curve, lin_length, lin_curve->FirstParameter()); + + par_mini = s1.Parameter (); + par_maxi = s2.Parameter (); + // Extremites + getPoint (0, lin_start); + getPoint (1, lin_end); +} +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexEdgeShape.hxx b/src/HEXABLOCK/HexEdgeShape.hxx new file mode 100644 index 0000000..e68c38a --- /dev/null +++ b/src/HEXABLOCK/HexEdgeShape.hxx @@ -0,0 +1,44 @@ + +// class : Gestion des Sous-shapes categorie Edge + +#ifndef __LIBE_SHAPE_H_ +#define __LIBE_SHAPE_H_ + +#include "HexSubShape.hxx" + +BEGIN_NAMESPACE_HEXA + +class EdgeShape : public SubShape +{ +public : + EdgeShape (NewShape* dad, int id); + + void addAssociation (Edge* elt); + int countAssociation () { return tab_assoc.size(); } + Edge* getAssociation (int nro); + + BRepAdaptor_Curve* getCurve (); + BRepAdaptor_Curve* makeCurve (); + void getCoords (double pstart[], double pend[]); + int getPoint (double param, double point[]); + double getParam (double point[]); + double getLength (); + int onExtremity (double point[]); + + static bool samePoints (double point1[], double point2[]); + + // void saveXml (XmlWriter* xml); +private : + void updateCurve (); + +private : + BRepAdaptor_Curve* lin_curve; + Real3 lin_start; + Real3 lin_end; + double lin_length, par_mini, par_maxi; + + bool maj_curve; + Edges tab_assoc; +}; +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexElements.cxx b/src/HEXABLOCK/HexElements.cxx index 730771f..8879c56 100755 --- a/src/HEXABLOCK/HexElements.cxx +++ b/src/HEXABLOCK/HexElements.cxx @@ -36,7 +36,7 @@ static bool db=false; BEGIN_NAMESPACE_HEXA // ====================================================== Constructeur -Elements::Elements (Document* doc) : EltBase (doc) +Elements::Elements (Document* doc) : EltBase (doc, EL_GRID) { glob = Globale::getInstance (); @@ -56,7 +56,8 @@ Elements::Elements (Document* doc) : EltBase (doc) prism_vec = false; } // ====================================================== Constructeur -Elements::Elements (Document* doc, int nx, int ny, int nz) : EltBase (doc) +Elements::Elements (Document* doc, int nx, int ny, int nz) + : EltBase (doc, EL_GRID) { glob = Globale::getInstance (); @@ -132,7 +133,7 @@ void Elements::resize (EnumGrid type, int nx, int ny, int nz, int nplus) return; case GR_JOINT : - nbr_orig = std::max (nx, 1); + nbr_orig = std::max (nx, 1); gr_hauteur = std::max (ny, 1); size_hx = nbr_orig; size_hy = 1; @@ -147,7 +148,7 @@ void Elements::resize (EnumGrid type, int nx, int ny, int nz, int nplus) case GR_REPLACE : nbr_orig = std::max (nx, 1); // nb quads du pattern - gr_hauteur = ny + 1; // Hauteur des hexas + gr_hauteur = ny + 1; // Hauteur des hexas pat_nbvertex = std::max (nz, 1); // nb vertex du pattern pat_nbedges = std::max (nplus, 1); // nb edges du pattern size_hx = nbr_orig; @@ -191,7 +192,7 @@ void Elements::resize (EnumGrid type, int nx, int ny, int nz, int nplus) } // ====================================================== makeCartesianGrid -int Elements::makeCartesianGrid (Vertex* orig, Vector* v1, Vector* v2, +int Elements::makeCartesianGrid (Vertex* orig, Vector* v1, Vector* v2, Vector* v3, int px, int py, int pz, int mx, int my, int mz) { if (BadElement (orig) || BadElement(v1) || BadElement(v2) || BadElement(v3) @@ -211,11 +212,11 @@ int Elements::makeCartesianGrid (Vertex* orig, Vector* v1, Vector* v2, return HOK; } // ====================================================== makeCylindricalGrid -int Elements::makeCylindricalGrid (Vertex* c, Vector* b, Vector* h, +int Elements::makeCylindricalGrid (Vertex* c, Vector* b, Vector* h, double dr, double da, double dl, int nr, int na, int nl, bool fill) { if (BadElement (c) || BadElement(b) || BadElement(h) - || nr<=0 || na<=0 || nl <= 0 || dr < Epsil || da < Epsil || dl < Epsil + || nr<=0 || na<=0 || nl <= 0 || dr < Epsil || da < Epsil || dl < Epsil || b->getNorm () <= Epsil || h->getNorm () <= Epsil) { setError (); @@ -231,8 +232,8 @@ int Elements::makeCylindricalGrid (Vertex* c, Vector* b, Vector* h, // ====================================================== makeSphericalGrid int Elements::makeSphericalGrid (Vertex* c, Vector* dv, int nb, double k) { - if (BadElement (c) || BadElement(dv) - || nb<=0 || k < Epsil + if (BadElement (c) || BadElement(dv) + || nb<=0 || k < Epsil || dv->getDx()<=Epsil || dv->getDy()<=Epsil || dv->getDz()<=Epsil) { setError (); @@ -251,7 +252,7 @@ int Elements::makeSphericalGrid (Vertex* c, Vector* dv, int nb, double k) double dy = glob->CoordVertex (nro, dir_y) * dv->getDy(); double dz = glob->CoordVertex (nro, dir_z) * dv->getDz(); - i_node [nro] = el_root->addVertex (c->getX ()+dx, c->getY ()+dy, + i_node [nro] = el_root->addVertex (c->getX ()+dx, c->getY ()+dy, c->getZ ()+dz); } @@ -264,20 +265,20 @@ int Elements::makeSphericalGrid (Vertex* c, Vector* dv, int nb, double k) if (db) { char nm0[8], nm1 [8], nm2 [8]; - printf (" %2d : %s = %s = [%s, %s] = [%d,%d] = [%s,%s]\n", nro, - glob->namofHexaEdge(nro), i_edge[nro]->getName(nm0), + printf (" %2d : %s = %s = [%s, %s] = [%d,%d] = [%s,%s]\n", nro, + glob->namofHexaEdge(nro), i_edge[nro]->getName(nm0), glob->namofHexaVertex(v1), glob->namofHexaVertex(v2), v1, v2, i_node[v1]->getName(nm1), i_node[v2]->getName(nm2)); } } - + for (int nro=0 ; nroQuadEdge (nro, E_A)], - i_edge[glob->QuadEdge (nro, E_B)], - i_edge[glob->QuadEdge (nro, E_C)], + i_quad[nro] = newQuad (i_edge[glob->QuadEdge (nro, E_A)], + i_edge[glob->QuadEdge (nro, E_B)], + i_edge[glob->QuadEdge (nro, E_C)], i_edge[glob->QuadEdge (nro, E_D)]); - tab_hexa.push_back (newHexa (i_quad[Q_A], i_quad[Q_B], i_quad[Q_C], + tab_hexa.push_back (newHexa (i_quad[Q_A], i_quad[Q_B], i_quad[Q_C], i_quad[Q_D], i_quad[Q_E], i_quad[Q_F])); double lambda = 1; double dcell = 1; @@ -288,11 +289,11 @@ int Elements::makeSphericalGrid (Vertex* c, Vector* dv, int nb, double k) lambda += dcell; addStrate (i_quad, i_edge, i_node, c, lambda/lambda0); } - + return HOK; } // ====================================================== addStrate -int Elements::addStrate (Quad* i_quad[], Edge* i_edge[], Vertex* i_node[], +int Elements::addStrate (Quad* i_quad[], Edge* i_edge[], Vertex* i_node[], Vertex* center, double lambda) { Vertex* e_node [HV_MAXI]; // Les noeuds de l'hexa englobant @@ -322,7 +323,7 @@ int Elements::addStrate (Quad* i_quad[], Edge* i_edge[], Vertex* i_node[], int nv0 = glob->EdgeVertex (nro, V_AMONT); int nv1 = glob->EdgeVertex (nro, V_AVAL ); e_edge[nro] = newEdge (e_node [nv0], e_node [nv1]); - d_quad[nro] = newQuad (i_edge [nro], d_edge [nv0], + d_quad[nro] = newQuad (i_edge [nro], d_edge [nv0], e_edge [nro], d_edge [nv1]); } // Les faces exterieures @@ -335,9 +336,9 @@ int Elements::addStrate (Quad* i_quad[], Edge* i_edge[], Vertex* i_node[], int ne2 = glob->QuadEdge (nro, E_C); int ne3 = glob->QuadEdge (nro, E_D); - e_quad[nro] = newQuad (e_edge[ne0], e_edge[ne1], + e_quad[nro] = newQuad (e_edge[ne0], e_edge[ne1], e_edge[ne2], e_edge[ne3]); - strate = newHexa (i_quad[nro], e_quad[nro], d_quad[ne0], + strate = newHexa (i_quad[nro], e_quad[nro], d_quad[ne0], d_quad[ne2], d_quad[ne1], d_quad[ne3]); tab_hexa.push_back (strate); } @@ -409,7 +410,7 @@ int Elements::saveVtk (cpchar nomfic) // ====================================================== newEdge Edge* Elements::newEdge (Vertex* v1, Vertex* v2) { - if (v1==NULL || v2==NULL) + if (v1==NULL || v2==NULL) return NULL; Edge* elt = new Edge (v1, v2); @@ -425,7 +426,7 @@ Quad* Elements::newQuad (Edge* e1, Edge* e2, Edge* e3, Edge* e4) return elt; } // ====================================================== newHexa -Hexa* Elements::newHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, +Hexa* Elements::newHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, Quad* qf) { if (qa==NULL || qb==NULL || qc==NULL|| qd==NULL || qe==NULL|| qf==NULL) @@ -435,7 +436,7 @@ Hexa* Elements::newHexa (Quad* qa, Quad* qb, Quad* qc, Quad* qd, return elt; } // ====================================================== joinQuads -int Elements::joinQuads (Quads& orig, int nb, Vertex* v1, Vertex* v2, +int Elements::joinQuads (Quads& orig, int nb, Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4, Quad* cible) { resize (GR_JOINT, orig.size(), nb); @@ -443,7 +444,7 @@ int Elements::joinQuads (Quads& orig, int nb, Vertex* v1, Vertex* v2, el_root->markAll (IS_NONE); db = on_debug(); // db = el_root->debug (); - + gr_hauteur = nb; nbr_orig = orig.size(); @@ -462,7 +463,7 @@ int Elements::joinQuads (Quads& orig, int nb, Vertex* v1, Vertex* v2, { printf ("\n"); printf (" *** joinQuads : donnees incorrectes\n"); - printf (" *** le %deme quadrangle de depart n'est pas une " + printf (" *** le %deme quadrangle de depart n'est pas une " "face externe\n", nro); face->dump (); setError (); @@ -527,20 +528,20 @@ int Elements::coupler (int nquad, Quad* dest, StrOrient* orient) int n12 = orig->indexVertex (orient->v12); int n21 = dest->indexVertex (orient->v21); int n22 = dest->indexVertex (orient->v22); - + // ---------------- Les 4 sommets initiaux - Vertex* vorig[QUAD4] = { orient->v11, orient->v12, + Vertex* vorig[QUAD4] = { orient->v11, orient->v12, orig->getVertex((n11+2) MODULO QUAD4), orig->getVertex((n12+2) MODULO QUAD4) }; - Vertex* vdest[QUAD4] = { orient->v21, orient->v22, + Vertex* vdest[QUAD4] = { orient->v21, orient->v22, dest->getVertex((n21+2) MODULO QUAD4), dest->getVertex((n22+2) MODULO QUAD4) }; if (db) { printf ("Quad nro %d : ", nquad); - orig->printName (" est couple avec "); - dest->printName ("\n"); + orig->printName (" est couple avec "); + dest->printName ("\n"); printf ("Orientation : ("); for (int ii=0 ; iigetName()); printf (")\n"); @@ -576,15 +577,15 @@ int Elements::coupler (int nquad, Quad* dest, StrOrient* orient) Vertex* ndp = nd; if (nh == gr_hauteur-1) nd = nd2 ; - else - nd = el_root->addVertex (px0 + nh1*dx, py0 + nh1*dy, + else + nd = el_root->addVertex (px0 + nh1*dx, py0 + nh1*dy, pz0 + nh1*dz); int nv = indVertex (nquad, ns, nh); tab_vertex [nv] = nd; tab_edge [nv] = el_root->addEdge (ndp, nd); if (db) - printf (" Edge vertical nro %d = %s = (%s, %s)\n", nv, - tab_edge[nv]->getName(), + printf (" Edge vertical nro %d = %s = (%s, %s)\n", nv, + tab_edge[nv]->getName(), ndp->getName(), nd->getName()); } } @@ -625,7 +626,7 @@ int Elements::coupler (int nquad, Quad* dest, StrOrient* orient) eb = tab_edge [nvb]; if (nh==gr_hauteur-1) ea = dest->findEdge (vdest[ns], vdest[next]); - else + else ea = el_root->addEdge (tab_vertex [nva], tab_vertex [nvb]); propagateAssociation (ec, ea, eb); @@ -660,7 +661,7 @@ int Elements::coupler (int nquad, Quad* dest, StrOrient* orient) if (nh == gr_hauteur-1) fb = dest; else - fb = newQuad (tab_edge [nroEdgeH (nquad, E_A, nh)], + fb = newQuad (tab_edge [nroEdgeH (nquad, E_A, nh)], tab_edge [nroEdgeH (nquad, E_B, nh)], tab_edge [nroEdgeH (nquad, E_C, nh)], tab_edge [nroEdgeH (nquad, E_D, nh)]); @@ -677,7 +678,7 @@ int Elements::coupler (int nquad, Quad* dest, StrOrient* orient) return HOK; } // ====================================================== makeCartesianNodes -int Elements::makeCartesianNodes (Vertex* orig, Vector* v1, Vector* v2, +int Elements::makeCartesianNodes (Vertex* orig, Vector* v1, Vector* v2, Vector* v3, int px, int py, int pz, int mx, int my, int mz) { double dx = v1->getDx() + v2->getDx() + v3->getDx(); @@ -696,7 +697,7 @@ int Elements::makeCartesianNodes (Vertex* orig, Vector* v1, Vector* v2, { Vertex* node = orig; if (nx!=mx || ny!=my || nz!=mz) - node = el_root->addVertex (px0 + nx*dx, py0 + ny*dy, + node = el_root->addVertex (px0 + nx*dx, py0 + ny*dy, pz0 + nz*dz); setVertex (node, nx, ny, nz); nbre++; @@ -704,11 +705,11 @@ int Elements::makeCartesianNodes (Vertex* orig, Vector* v1, Vector* v2, return HOK; } // ====================================================== makeCylindricalNodes -int Elements::makeCylindricalNodes (Vertex* orig, Vector* base, Vector* haut, +int Elements::makeCylindricalNodes (Vertex* orig, Vector* base, Vector* haut, double dr, double da, double dl, int nr, int na, int nl, bool fill) { int ier = makeBasicCylinder (dr, da, dl, nr, na, nl, fill); - if (ier!=HOK) + if (ier!=HOK) return ier; transfoVertices (orig, base, haut); @@ -722,19 +723,19 @@ void Elements::transfoVertices (Vertex* orig, Vector* base, Vector* haut) Vector* kprim = new Vector (haut); int ier = kprim->renormer (); - if (ier!=HOK) + if (ier!=HOK) return; jprim->vectoriel (kprim, base); ier = jprim->renormer (); - if (ier!=HOK) + if (ier!=HOK) return; iprim->vectoriel (jprim, kprim); transfoVertices (orig, iprim, jprim, kprim); } // ====================================================== transfoVertices -void Elements::transfoVertices (Vertex* orig, Vector* iprim, Vector* jprim, +void Elements::transfoVertices (Vertex* orig, Vector* iprim, Vector* jprim, Vector* kprim) { double matrice[DIM3][DIM3]={{iprim->getDx(),jprim->getDx(),kprim->getDx()}, @@ -748,7 +749,7 @@ void Elements::transfoVertices (Vertex* orig, Vector* iprim, Vector* jprim, int nbre = tab_vertex.size (); for (int nro=0 ; nrosetMark (NO_USED); } @@ -763,7 +764,7 @@ void Elements::transfoVertices (Vertex* orig, Vector* iprim, Vector* jprim, for (int ni=0 ; nisetCoord (result[dir_x], result[dir_y], result[dir_z]); node->setMark (IS_USED); } @@ -821,7 +822,7 @@ int Elements::cutHexas (const Edges& t_edges, int nbcuts) Edge* arete = t_edges [nro]; v_amont [nro] = arete->getAmont (); v_aval [nro] = arete->getAval (); - if (db) + if (db) { printf (" %3d : Edge = (", nro); v_amont[nro]->printName (", "); @@ -842,14 +843,14 @@ int Elements::cutHexas (const Edges& t_edges, int nbcuts) for (int nh=0 ; nhgetParent (nh); - if (hexa->getMark () != IS_USED) + if (hexa->getMark () != IS_USED) { hexa->setMark (IS_USED); int namont = hexa->getBase (v_amont[nro], arete); int naval = glob->getOpposedQuad (namont); q_amont.push_back (hexa->getQuad (namont)); q_aval .push_back (hexa->getQuad (naval )); - + if (db) { printf (" %3d : Quad = ", nbfaces); @@ -869,7 +870,7 @@ int Elements::cutHexas (const Edges& t_edges, int nbcuts) nbr_vertex = nbnodes*(nbcuts+2); int nbpiliers = nbnodes*(nbcuts+1); // aretes verticales int nbpoutres = nbcells*(nbcuts+2)*QUAD4; // aretes horizontales - nbr_edges = nbpoutres; + nbr_edges = nbpoutres; nbr_quads = nbcells*(nbcuts+1)*QUAD4; // faces Verticales nbr_hexas = nbcells*(nbcuts+1); @@ -897,8 +898,8 @@ int Elements::cutHexas (const Edges& t_edges, int nbcuts) for (int nc=0; ncaddVertex (ndamont->getX() + nc1*dx, - ndamont->getY() + nc1*dy, + Vertex* nd1 = el_root->addVertex (ndamont->getX() + nc1*dx, + ndamont->getY() + nc1*dy, ndamont->getZ() + nc1*dz); tab_vertex [nc1*nbnodes + ned] = nd1; tab_pilier [nc *nbnodes + ned] = newEdge (nd0, nd1); @@ -930,9 +931,9 @@ int Elements::cutHexas (const Edges& t_edges, int nbcuts) { tab_edge [nc*sizelig + nmur] = tab_edge [nc*sizelig + nmur0]; tab_quad [nc*sizelig + nmur] = tab_quad [nc *sizelig + nmur0]; - if (db) + if (db) { - printf (" %2d : %d quad_vertical [%02d] =", nro, ns, + printf (" %2d : %d quad_vertical [%02d] =", nro, ns, nc*sizelig + nmur); printf (" quad_vertical [%02d]\n", nc*sizelig + nmur0); } @@ -963,7 +964,7 @@ int Elements::cutHexas (const Edges& t_edges, int nbcuts) { v1 = vis_a_vis [vs1]; v2 = vis_a_vis [vs2]; - ed2 = toit->findEdge (v1, v2); + ed2 = toit->findEdge (v1, v2); } tab_edge [nc1*sizelig + nmur] = ed2; @@ -971,9 +972,9 @@ int Elements::cutHexas (const Edges& t_edges, int nbcuts) tab_pilier [nc*nbnodes + nd1], ed2, tab_pilier [nc*nbnodes + nd2]); ed0 = ed2; - if (db) + if (db) { - printf (" %2d : %d quad_vertical [%02d] = ", nro, ns, + printf (" %2d : %d quad_vertical [%02d] = ", nro, ns, nc*sizelig + nmur); PrintName (tab_quad [nc *sizelig + nmur]); printf ("\n"); @@ -984,7 +985,7 @@ int Elements::cutHexas (const Edges& t_edges, int nbcuts) } // ------------------- Les faces horizontales // ------------------- Les hexas - // Rappel : sizelig = nbcells*QUAD4 + // Rappel : sizelig = nbcells*QUAD4 for (int nro=0; nro& table) { int nbelts = table.size(); for (int nro=0 ; nroisValid()) + elt->clearAssociation (); + } } // ====================================================== clear_associations void clear_associations (std::vector& table) { int nbelts = table.size(); for (int nro=0 ; nroisValid()) + elt->clearAssociation (); + } } // ====================================================== clear_associations void clear_associations (std::vector& table) { int nbelts = table.size(); for (int nro=0 ; nroisValid()) + elt->clearAssociation (); + } } // ====================================================== clearAssociation void Elements::clearAssociation () { -// clear_associations (tab_hexa); clear_associations (tab_quad); clear_associations (tab_edge); clear_associations (tab_vertex); - // clear_associations (tab_orig); clear_associations (ker_hquad); clear_associations (ker_vquad); clear_associations (ker_hedge); clear_associations (ker_vedge); - -/* *********************************************** - nbelts = tab_hexa.size(); - for (int nro=0 ; nroisValid()) - elt->clearAssociation (); - } - *********************************************** */ } // ============================================================ findVertex int Elements::findVertex (double vx, double vy, double vz) diff --git a/src/HEXABLOCK/HexElements.hxx b/src/HEXABLOCK/HexElements.hxx index e34d88d..b3fd2ca 100755 --- a/src/HEXABLOCK/HexElements.hxx +++ b/src/HEXABLOCK/HexElements.hxx @@ -29,7 +29,7 @@ BEGIN_NAMESPACE_HEXA -class Elements : public EltBase +class Elements : public EltBase { public: virtual Hexa* getHexa (int nro); @@ -78,22 +78,22 @@ public: void addVertex (Vertex* element); int transform (Matrix* matrice); - int saveVtk (cpchar nomfic); - int saveVtk (cpchar nomfic, int& nro); + int saveVtk (cpchar nomfic); + int saveVtk (cpchar nomfic, int& nro); - int makeCartesianGrid (Vertex* orig, Vector* v1, Vector* v2, Vector* v3, + int makeCartesianGrid (Vertex* orig, Vector* v1, Vector* v2, Vector* v3, int px, int py, int pz, int mx=0, int my=0, int mz=0); int makeCylinder (Cylinder* cyl, Vector* base, int nr, int na, int nl); int makePipe (Cylinder* cyl, Vector* base, int nr, int na, int nl); - int makeCylindricalGrid (Vertex* c, Vector* b, Vector* h, + int makeCylindricalGrid (Vertex* c, Vector* b, Vector* h, double dr, double da, double dl, int nr, int na, int nl, bool fill); int makeSphericalGrid (Vertex* v, Vector* dv, int nb, double k=1); // perime int makeSphericalGrid (Vertex* v, double rayon, int nb, double k=1); - int joinQuads (Quads& q0, int nb, Vertex* v1, Vertex* v2, Vertex* v3, + int joinQuads (Quads& q0, int nb, Vertex* v1, Vertex* v2, Vertex* v3, Vertex* v4, Quad* dest); int coupler (int nro, Quad* other, StrOrient* orient); @@ -115,45 +115,45 @@ public: int nroVertex (int nsommet, int nquad, int nh); - // Evols Hexa3 + // Evols Hexa3 int getCylPoint (int nr, int na, int nh, double& px, double& py, double& pz); - int revolutionQuads (Quads& start, Vertex* center, Vector* axis, + int revolutionQuads (Quads& start, Vertex* center, Vector* axis, RealVector &angles); - int makeRind (EnumGrid type, Vertex* center, Vector* vx, Vector* vz, + int makeRind (EnumGrid type, Vertex* center, Vector* vx, Vector* vz, double rext, double rint, double radhole, Vertex* plorig, double angle, int nrad, int nang, int nhaut); - static int controlRind (EnumGrid type, Vertex* cx, Vector* vx, Vector* vz, + static int controlRind (EnumGrid type, Vertex* cx, Vector* vx, Vector* vz, double rext, double rint, double radhole, - Vertex* plorig, double angle, - int nrad, int nang, int nhaut, + Vertex* plorig, double angle, + int nrad, int nang, int nhaut, double &phi0, double &phi1); - int makeCylindricalGrid (Vertex* c, Vector* b, Vector* h, - RealVector& tdr, RealVector& tda, RealVector& tdh, + int makeCylindricalGrid (Vertex* c, Vector* b, Vector* h, + RealVector& tdr, RealVector& tda, RealVector& tdh, bool fill=false); - int replaceHexas (Quads& pattern, Vertex* p1, Vertex* c1, + int replaceHexas (Quads& pattern, Vertex* p1, Vertex* c1, Vertex* p2, Vertex* c2, Vertex* p3, Vertex* c3); int replaceHexa (int nh, Pattern* pat, Hexa* hexa); int replaceQuad (int nh, Pattern* pat, Quad* quad, Vertex* tvert[]); int extrudeQuad (Pattern* pat); - void repVertex (int nh, int nro, Vertex* node); - void repEdgeH (int nh, int nro, Edge* node); - void repEdgeV (int nh, int nro, Edge* node); - void repQuadH (int nh, int nro, Quad* node); - void repQuadV (int nh, int nro, Quad* node); + void repVertex (int nh, int nro, Vertex* node); + void repEdgeH (int nh, int nro, Edge* node); + void repEdgeV (int nh, int nro, Edge* node); + void repQuadH (int nh, int nro, Quad* node); + void repQuadV (int nh, int nro, Quad* node); Vertex* repVertex (int nh, int nro, double px, double py, double pz); Edge* repEdgeV (int nh, int nro, Vertex* v1, Vertex*v2); Edge* repEdgeH (int nh, int nro, Vertex* v1, Vertex*v2); Quad* repQuadH (int nh, int nro, Edge* ea, Edge* eb, Edge* ec, Edge* ed); Quad* repQuadV (int nh, int nro, Edge* ea, Edge* eb, Edge* ec, Edge* ed); - Hexa* repHexa (int nh, int nro, Quad* qa, Quad* qb, Quad* qc, + Hexa* repHexa (int nh, int nro, Quad* qa, Quad* qb, Quad* qc, Quad* qd, Quad* qe, Quad* qf); Vertex* repVertex (int nh, int nro); @@ -171,27 +171,28 @@ public: void moveDisco (Hexa* hexa); protected : - // Evols Hexa3 + // Evols Hexa3 void cutAssociation (Shapes& tshapes, Edges& tedges, bool exist=true); void assoCylinder (Vertex* center, Vector* vz, double rayon); void assoCylinders (Vertex* center, Vector* vz, double ray, RealVector& ta); - void assoRind (double* center, double* vx, int nx); + void assoRind (double* center, double* vx, int nx, NewShape* geom); + void assoSphere (Vertex* center, Edge* t_edge[], Quad* t_quad[]); - void assoCircle (double* center, Edge* ed1, Edge* ed2); + void assoCircle (double* center, Edge* ed1, Edge* ed2, NewShape* geom); void assoResiduelle (); - int makeBasicCylinder (RealVector& tdr, RealVector& tda, RealVector& tdh, + int makeBasicCylinder (RealVector& tdr, RealVector& tda, RealVector& tdh, bool fill=false); int propagateAssociation (Edge* orig, Edge* dest, Edge* dir1); int prismAssociation (Edge* orig, Edge* dest, int nh, Edge* dir); - // Evols Hexa4 + // Evols Hexa4 void updateMatrix (int hauteur); void endPrism (); protected : - + int fillGrid (); void fillCenter (); void fillCenter4 (); @@ -211,16 +212,16 @@ protected : void resize (EnumGrid type, int nx, int ny=0, int nz=0, int nplus=0); - int makeCartesianNodes (Vertex* orig, Vector* v1, Vector* v2, Vector* v3, + int makeCartesianNodes (Vertex* orig, Vector* v1, Vector* v2, Vector* v3, int px, int py, int pz, int mx=0, int my=0, int mz=0); - int makeCylindricalNodes (Vertex* c, Vector* b, Vector* h, + int makeCylindricalNodes (Vertex* c, Vector* b, Vector* h, double dr, double da, double dl, int nr, int na, int nl, bool fill); - int makeBasicCylinder (double dr, double da, double dl, int nr, int na, + int makeBasicCylinder (double dr, double da, double dl, int nr, int na, int nl, bool fill); - int addStrate (Quad* i_quad[], Edge* i_edge[], Vertex* i_node[], + int addStrate (Quad* i_quad[], Edge* i_edge[], Vertex* i_node[], Vertex* center, double lambda); int indVertex (int nsommet, int nquad, int nh); @@ -229,7 +230,7 @@ protected : int nroEdgeH (int nsommet, int nquad, int nh); int nroHexa (int nquad, int nh); - void copyVertex (Elements* other, int px, int py, int pz, + void copyVertex (Elements* other, int px, int py, int pz, int nx, int ny, int nz); void completerGrille (double hauteur); @@ -269,7 +270,7 @@ protected : RealVector gen_values; // Angle pour la revolution Matrix gen_matrix; // Evols Hexa4 - bool prism_vec ; + bool prism_vec ; Real3 prism_dir; // EnumGrid grid_type; // deja la @@ -277,7 +278,7 @@ protected : double cyl_length; double cyl_radhole, cyl_radext, cyl_radint; double cyl_dtheta; // angle = na*dtheta - double cyl_phi0, cyl_dphi; // angle = phi0 + nh*dphi; + double cyl_phi0, cyl_dphi; // angle = phi0 + nh*dphi; int pat_nbedges; int pat_nbvertex; @@ -288,7 +289,7 @@ protected : }; // =================================================== getStrate inline Hexa* Elements::getStrate (int couche, EnumHQuad nroface) -{ +{ Hexa* cell = NULL; int nro = couche <= 0 ? 0 : (couche-1)*HQ_MAXI + nroface + 1; @@ -297,16 +298,16 @@ inline Hexa* Elements::getStrate (int couche, EnumHQuad nroface) else cell = tab_hexa [nro]; - return cell; + return cell; } // ============================================================ setHexa -inline void Elements::setHexa (Hexa* elt, int nro) +inline void Elements::setHexa (Hexa* elt, int nro) { if (nro >=0 && nro < nbr_hexas) tab_hexa [nro] = elt; } // ============================================================ setQuad -inline void Elements::setQuad (Quad* elt, int nro) +inline void Elements::setQuad (Quad* elt, int nro) { if (nro >=0 && nro < nbr_quads) tab_quad [nro] = elt; @@ -331,19 +332,19 @@ inline Hexa* Elements::getHexa (int nro) Hexa* elt = NULL; int nombre=tab_hexa.size(); // if (nro >=0 && nro < nbr_hexas && el_status == HOK Abu 2010/05/06 - if (nro >=0 && nro < nombre && el_status == HOK + if (nro >=0 && nro < nombre && el_status == HOK && tab_hexa [nro] != NULL && tab_hexa [nro]->isValid()) - elt = tab_hexa [nro]; + elt = tab_hexa [nro]; return elt; } // ============================================================ getQuad -inline Quad* Elements::getQuad (int nro) +inline Quad* Elements::getQuad (int nro) { Quad* elt = NULL; - if (nro >=0 && nro < nbr_quads && el_status == HOK + if (nro >=0 && nro < nbr_quads && el_status == HOK && tab_quad [nro] != NULL && tab_quad [nro]->isValid()) - elt = tab_quad [nro]; + elt = tab_quad [nro]; return elt; } @@ -351,9 +352,9 @@ inline Quad* Elements::getQuad (int nro) inline Edge* Elements::getEdge (int nro) { Edge* elt = NULL; - if (nro >=0 && nro < nbr_edges && el_status == HOK + if (nro >=0 && nro < nbr_edges && el_status == HOK && tab_edge [nro] != NULL && tab_edge [nro]->isValid()) - elt = tab_edge [nro]; + elt = tab_edge [nro]; return elt; } @@ -361,9 +362,9 @@ inline Edge* Elements::getEdge (int nro) inline Vertex* Elements::getVertex (int nro) { Vertex* elt = NULL; - if (nro >=0 && nro < nbr_vertex && el_status == HOK + if (nro >=0 && nro < nbr_vertex && el_status == HOK && tab_vertex [nro] != NULL && tab_vertex [nro]->isValid()) - elt = tab_vertex [nro]; + elt = tab_vertex [nro]; return elt; } diff --git a/src/HEXABLOCK/HexElements_asso.cxx b/src/HEXABLOCK/HexElements_asso.cxx index f561573..1fc055d 100755 --- a/src/HEXABLOCK/HexElements_asso.cxx +++ b/src/HEXABLOCK/HexElements_asso.cxx @@ -22,6 +22,7 @@ #include "HexElements.hxx" #include "HexEdge.hxx" +#include "HexDocument.hxx" #ifndef NO_CASCADE #include "HexKasBiCylinder.hxx" @@ -49,9 +50,9 @@ // HEXABLOCK includes #include "HexVertex.hxx" -#include "HexShape.hxx" +#include "HexOldShape.hxx" #include "HexDiagnostics.hxx" - // Cercles + // Cercles #include #include @@ -88,11 +89,11 @@ void Elements::cutAssociation (Shapes& tshapes, Edges& tedges, bool exist) char foo[18]; int nbedges = tedges.size(); int nbshapes = tshapes.size (); - if (nbshapes==0) + if (nbshapes==0) return; std::vector tab_gline (nbshapes); - + Vertex* prems = tedges [0] -> getVertex (V_AMONT); Vertex* derns = tedges [nbedges-1] -> getVertex (V_AVAL); @@ -107,13 +108,13 @@ void Elements::cutAssociation (Shapes& tshapes, Edges& tedges, bool exist) el_root->putError (W_ASSO_CUT1, prems->getName (foo)); return; } - else if (pnt_last.isBad ()) + else if (pnt_last.isBad ()) { el_root->putError (W_ASSO_CUT2, derns->getName (foo)); return; } } - // ----------- Define + longueur totale + // ----------- Define + longueur totale double longueur = 0; for (int ns = 0 ; nsputError (W_ASSO_CUT3, derns->getName (foo)); @@ -172,11 +173,11 @@ void Elements::cutAssociation (Shapes& tshapes, Edges& tedges, bool exist) double delta = longueur / nbedges; for (int ned = 0 ; nedgetAssociation() != NULL) return; - + Real3 koord = { node->getX(), node->getY(), node->getZ() }; KasPoint asso_point ; asso_point.definePoint (koord); asso_point.associate (node); } -// ====================================================== geom_create_circle -void geom_create_circle (double* milieu, double rayon, double* normale, +// ====================================================== geom_create_circle +void geom_create_circle (double* milieu, double rayon, double* normale, double* base, string& brep) { db = on_debug (); - if (db) printf ("geom_create_circle c=(%g,%g,%g), r=%g\n", + if (db) printf ("geom_create_circle c=(%g,%g,%g), r=%g\n", milieu[0], milieu[1], milieu[2], rayon); if (db) printf (" -------- base=(%g,%g,%g)\n", base[0], base[1], base[2]); - if (db) printf (" -------- norm=(%g,%g,%g)\n", normale[0], normale[1], + if (db) printf (" -------- norm=(%g,%g,%g)\n", normale[0], normale[1], normale[2]); gp_Pnt gp_center (milieu [dir_x], milieu [dir_y], milieu [dir_z]); @@ -250,12 +251,12 @@ void geom_create_circle (double* milieu, double rayon, double* normale, geom_curve.FirstParameter()); double u1 = s1.Parameter (); gp_Pnt point = geom_curve.Value (u1); - if (db) + if (db) printf ( " ..... pnt%d = (%g, %g, %g)\n", pk, point.X(), point.Y(), point.Z()); } } -// ====================================================== geom_create_sphere +// ====================================================== geom_create_sphere void geom_create_sphere (double* milieu, double radius, string& brep) { gp_Pnt gp_center (milieu [dir_x], milieu [dir_y], milieu [dir_z]); @@ -266,7 +267,7 @@ void geom_create_sphere (double* milieu, double radius, string& brep) make_sphere.Build(); ostringstream stream_shape; - TopoDS_Shape geom_sphere = make_sphere.Face(); + TopoDS_Shape geom_sphere = make_sphere.Face(); BRepTools::Write (geom_sphere, stream_shape); brep = stream_shape.str(); } @@ -286,20 +287,20 @@ void geom_dump_asso (Edge* edge) edge->printName(" = ("); edge->getVertex (V_AMONT)-> printName (", "); edge->getVertex (V_AVAL) -> printName (")\n"); - + KasPoint asso_point; for (int nro=0 ; nrogetVertex (nro); vertex->printName (""); - printf (" = (%g, %g, %g)", vertex->getX(), vertex->getY(), + printf (" = (%g, %g, %g)", vertex->getX(), vertex->getY(), vertex->getZ()); int ier = asso_point.definePoint (vertex); if (ier==HOK) { double* coord = asso_point.getCoord(); - printf (", pnt_asso = (%g, %g, %g)", coord[dir_x], coord[dir_y], + printf (", pnt_asso = (%g, %g, %g)", coord[dir_x], coord[dir_y], coord[dir_z]); } printf ("\n"); @@ -322,9 +323,9 @@ void geom_dump_asso (Edge* edge) double* fin = asso_line.getEnd (); double lg = asso_line.getLength (); printf (" Longueur = %g\n", lg); - printf (" Debut = %g = (%g, %g, %g)\n", shape->debut, + printf (" Debut = %g = (%g, %g, %g)\n", shape->getStart(), deb[0], deb[1], deb[2]); - printf (" Fin = %g = (%g, %g, %g)\n", shape->fin, + printf (" Fin = %g = (%g, %g, %g)\n", shape->getEnd(), fin[0], fin[1], fin[2]); } } @@ -341,7 +342,7 @@ void translate_brep (string& brep, double dir[], string& trep) transfo.SetTranslation (vecteur); istringstream stream_brep (brep); BRepTools::Read (orig, stream_brep, builder); - + TopLoc_Location loc_orig = orig.Location(); gp_Trsf trans_orig = loc_orig.Transformation(); TopLoc_Location loc_result (transfo * trans_orig); @@ -360,12 +361,12 @@ void transfo_brep (string& brep, Matrix* matrice, string& trep) double a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34; matrice->getCoeff (a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34); - transfo.SetValues (a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, + transfo.SetValues (a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, Epsil2, Epsil2); istringstream stream_brep (brep); BRepTools::Read (shape_orig, stream_brep, builder); - + BRepBuilderAPI_Transform brep_transfo (shape_orig, transfo, Standard_True); TopoDS_Shape result = brep_transfo.Shape(); @@ -381,11 +382,11 @@ void clear_associations (Edge* edge) edge->getVertex(V_AVAL )->clearAssociation(); } // ====================================================== associateShapes -int associateShapes (Edges& mline, int msens[], Shape* gstart, Shapes& gline, +int associateShapes (Edges& mline, int msens[], Shape* gstart, Shapes& gline, double pstart, double pend, bool closed, bool inv) { db = on_debug (); - if (db) + if (db) { cout << "____________________________________________" << " associateShapes" << endl; @@ -397,9 +398,9 @@ int associateShapes (Edges& mline, int msens[], Shape* gstart, Shapes& gline, } int nbshapes = gline.size (); - int nblines = nbshapes + 1; + int nblines = nbshapes + 1; - vector buff_line (nblines); // car nblines != 0 + vector buff_line (nblines); // car nblines != 0 vector geom_line (nblines); // -------- Bufferisation des shapes @@ -414,12 +415,12 @@ int associateShapes (Edges& mline, int msens[], Shape* gstart, Shapes& gline, if (closed) { if (pstart > UnEpsil) - { + { inv = true; pstart = 0; } else if (pstart < Epsil) - { + { inv = false; } } @@ -461,7 +462,7 @@ int associateShapes (Edges& mline, int msens[], Shape* gstart, Shapes& gline, sdepart = V_AMONT; pfin0 = pend; } - else + else { sdepart = V_AVAL; pfin0 = pend; @@ -507,7 +508,7 @@ int associateShapes (Edges& mline, int msens[], Shape* gstart, Shapes& gline, int ntlines = geom_line.size(); int nbedges = mline.size (); - if (db) + if (db) cout << "==============================================================" << endl; // -------- Menage @@ -535,24 +536,38 @@ void set_debug_asso (bool boule) if (db) printf (" ... Traces actives dans HexAssoElements_asso.cxx\n"); } +// ====================================================== clean_brep +void clean_brep (string& brep) +{ + TopoDS_Shape shape; + BRep_Builder builder; + istringstream stream_brep (brep); + + BRepTools::Read (shape, stream_brep, builder); + BRepTools::Clean (shape); + + ostringstream stream_shape; + BRepTools::Write (shape, stream_shape); + brep = stream_shape.str(); +} END_NAMESPACE_HEXA - + // ------------------------------------------------------------------------ #else // #ifndef NO_CASCADE // ------------------------------------------------------------------------ BEGIN_NAMESPACE_HEXA -// ====================================================== geom_create_circle -void geom_create_circle (double* milieu, double rayon, double* normale, +// ====================================================== geom_create_circle +void geom_create_circle (double* milieu, double rayon, double* normale, double* base, string& brep) { char buffer [80]; - sprintf (buffer, "(Cercle c=(%g,%g,%g), r=%g", + sprintf (buffer, "(Cercle c=(%g,%g,%g), r=%g", milieu[0], milieu[1], milieu[2], rayon); brep = buffer; } -// ====================================================== geom_create_sphere +// ====================================================== geom_create_sphere void geom_create_sphere (double* milieu, double radius, string& brep) { } @@ -614,5 +629,9 @@ int geom_asso_cylcyl (Edge* edge) { return HOK; } +// ====================================================== clean_brep +void clean_brep (string& brep) +{ +} END_NAMESPACE_HEXA #endif diff --git a/src/HEXABLOCK/HexElements_bis.cxx b/src/HEXABLOCK/HexElements_bis.cxx index 77658c3..ceb671e 100755 --- a/src/HEXABLOCK/HexElements_bis.cxx +++ b/src/HEXABLOCK/HexElements_bis.cxx @@ -30,14 +30,14 @@ #include "HexGlobale.hxx" #include "HexCylinder.hxx" -#include "HexShape.hxx" +#include "HexOldShape.hxx" #include BEGIN_NAMESPACE_HEXA void geom_dump_asso (Edge* edge); -void geom_create_circle (double* milieu, double rayon, double* normale, +void geom_create_circle (double* milieu, double rayon, double* normale, double* base, string& brep); // ====================================================== getHexaIJK @@ -50,9 +50,11 @@ Hexa* Elements::getHexaIJK (int nx, int ny, int nz) else if (grid_nocart) return NULL; - int nro = nx + size_hx*ny + size_hx*size_hy*nz; + int nro = nx + size_hx*ny + size_hx*size_hy*nz; - return tab_hexa [nro]; + DumpStart ("getHexaIJK", nx << ny << nz); + DumpReturn (tab_hexa [nro]); + return tab_hexa [nro]; } // ====================================================== getQuadIJ Quad* Elements::getQuadIJ (int nx, int ny, int nz) @@ -64,9 +66,12 @@ Quad* Elements::getQuadIJ (int nx, int ny, int nz) else if (grid_nocart) return NULL; - int nro = nx + size_qx*ny + size_qx*size_qy*nz + int nro = nx + size_qx*ny + size_qx*size_qy*nz + size_qx*size_qy*size_qz*dir_z; - return tab_quad [nro]; + + DumpStart ("getQuadIJ", nx << ny << nz); + DumpReturn (tab_quad [nro]); + return tab_quad [nro]; } // ====================================================== getQuadJK Quad* Elements::getQuadJK (int nx, int ny, int nz) @@ -80,7 +85,9 @@ Quad* Elements::getQuadJK (int nx, int ny, int nz) int nro = nx + size_qx*ny + size_qx*size_qy*nz; // + dir_x*... - return tab_quad [nro]; + DumpStart ("getQuadJK", nx << ny << nz); + DumpReturn (tab_quad [nro]); + return tab_quad [nro]; } // ====================================================== getQuadIK Quad* Elements::getQuadIK (int nx, int ny, int nz) @@ -94,7 +101,9 @@ Quad* Elements::getQuadIK (int nx, int ny, int nz) int nro = nx + size_qx*ny + size_qx*size_qy*nz + size_qx*size_qy*size_qz; - return tab_quad [nro]; + DumpStart ("getQuadIK", nx << ny << nz); + DumpReturn (tab_quad [nro]); + return tab_quad [nro]; } // ====================================================== getEdgeI Edge* Elements::getEdgeI (int nx, int ny, int nz) @@ -108,7 +117,9 @@ Edge* Elements::getEdgeI (int nx, int ny, int nz) int nro = nx + size_ex*ny + size_ex*size_ey*nz; - return tab_edge [nro]; + DumpStart ("getEdgeI", nx << ny << nz); + DumpReturn (tab_edge [nro]); + return tab_edge [nro]; } // ====================================================== getEdgeJ Edge* Elements::getEdgeJ (int nx, int ny, int nz) @@ -122,7 +133,9 @@ Edge* Elements::getEdgeJ (int nx, int ny, int nz) int nro = nx + size_ex*ny + size_ex*size_ey*nz + size_ex*size_ey*size_ez; - return tab_edge [nro]; + DumpStart ("getEdgeJ", nx << ny << nz); + DumpReturn (tab_edge [nro]); + return tab_edge [nro]; } // ====================================================== getEdgeK Edge* Elements::getEdgeK (int nx, int ny, int nz) @@ -134,9 +147,12 @@ Edge* Elements::getEdgeK (int nx, int ny, int nz) else if (grid_nocart) return NULL; - int nro = nx + size_ex*ny + size_ex*size_ey*nz + int nro = nx + size_ex*ny + size_ex*size_ey*nz + size_ex*size_ey*size_ez*dir_z; - return tab_edge [nro]; + + DumpStart ("getEdgeK", nx << ny << nz); + DumpReturn (tab_edge [nro]); + return tab_edge [nro]; } // ====================================================== getVertexIJK Vertex* Elements::getVertexIJK (int nx, int ny, int nz) @@ -148,25 +164,27 @@ Vertex* Elements::getVertexIJK (int nx, int ny, int nz) else if (grid_nocart) return NULL; - int nro = nx + size_vx*ny + size_vx*size_vy*nz; + int nro = nx + size_vx*ny + size_vx*size_vy*nz; - return tab_vertex [nro]; + DumpStart ("getVertexIJK", nx << ny << nz); + DumpReturn (tab_vertex [nro]); + return tab_vertex [nro]; } // ====================================================== setVertex void Elements::setVertex (Vertex* elt, int nx, int ny, int nz) { - if ( nx < 0 || nx >= size_vx || ny < 0 || ny >= size_vy - || nz < 0 || nz >= size_vz) return; + if ( nx < 0 || nx >= size_vx || ny < 0 || ny >= size_vy + || nz < 0 || nz >= size_vz) return; int nro = nx + size_vx*ny + size_vx*size_vy*nz; tab_vertex [nro] = elt; } // ====================================================== setVertex (2) -void Elements::setVertex (int nx, int ny, int nz, double px, double py, +void Elements::setVertex (int nx, int ny, int nz, double px, double py, double pz) { - if ( nx < 0 || nx >= size_vx || ny < 0 || ny >= size_vy - || nz < 0 || nz >= size_vz) return; + if ( nx < 0 || nx >= size_vx || ny < 0 || ny >= size_vy + || nz < 0 || nz >= size_vz) return; Vertex* node = el_root->addVertex (px, py, pz); setVertex (node, nx, ny, nz); @@ -179,7 +197,7 @@ void Elements::setEdge (Edge* elt, EnumCoord dir, int nx, int ny, int nz) return; int nro = nx + size_ex*ny + size_ex*size_ey*nz + size_ex*size_ey*size_ez*dir; - tab_edge [nro] = elt; + tab_edge [nro] = elt; } // ====================================================== setQuad void Elements::setQuad (Quad* elt, EnumCoord dir, int nx, int ny, int nz) @@ -189,13 +207,13 @@ void Elements::setQuad (Quad* elt, EnumCoord dir, int nx, int ny, int nz) return; int nro = nx + size_ex*ny + size_ex*size_ey*nz + size_ex*size_ey*size_ez*dir; - tab_quad [nro] = elt; + tab_quad [nro] = elt; } // ====================================================== setHexa void Elements::setHexa (Hexa* elt, int nx, int ny, int nz) { - if ( nx < 0 || nx >= size_hx || ny < 0 || ny >= size_hy - || nz < 0 || nz >= size_hz) return; + if ( nx < 0 || nx >= size_hx || ny < 0 || ny >= size_hy + || nz < 0 || nz >= size_hz) return; int nro = nx + size_hx*ny + size_hx*size_hy*nz; tab_hexa [nro] = elt; @@ -223,10 +241,10 @@ int Elements::makeCylinder (Cylinder* cyl, Vector* vx, int nr, int na, int nl) Vector* dir = cyl->getDirection (); double ray = cyl->getRadius (); double haut = cyl->getHeight (); - + resize (GR_CYLINDRIC, nr, na, nl); cyl_closed = true; - makeCylindricalNodes (orig, vx, dir, ray/(nr+1), 360, haut/nl, + makeCylindricalNodes (orig, vx, dir, ray/(nr+1), 360, haut/nl, nr, na, nl, true); fillGrid (); assoCylinder (orig, dir, 360); @@ -246,7 +264,7 @@ int Elements::makePipe (Cylinder* cyl, Vector* vx, int nr, int na, int nl) Vector* dir = cyl->getDirection (); double ray = cyl->getRadius (); double haut = cyl->getHeight (); - + resize (GR_CYLINDRIC, nr, na, nl); cyl_closed = true; makeCylindricalNodes (orig, vx, dir, ray, 360, haut, nr, na, nl, false); @@ -254,7 +272,7 @@ int Elements::makePipe (Cylinder* cyl, Vector* vx, int nr, int na, int nl) assoCylinder (orig, dir, 360); return HOK; } -// +// // ---------------------------------------- prism Quads // // ====================================================== prismQuads @@ -293,7 +311,7 @@ int Elements::prismQuads (Quads& tstart, Vector* dir, int nbiter) return HOK; } // ====================================================== prismQuadsVec -int Elements::prismQuadsVec (Quads& tstart, Vector* dir, RealVector& tlen, +int Elements::prismQuadsVec (Quads& tstart, Vector* dir, RealVector& tlen, int mode) { int nbiter = tlen.size(); @@ -403,7 +421,7 @@ int Elements::prismHexas (int nro, Quad* qbase, int hauteur) Real3 ph, hm; for (int dd=dir_x; dd<=dir_z ; dd++) { - ph [dd] = centre [dd] + oh*vk[dd]; + ph [dd] = centre [dd] + oh*vk[dd]; hm [dd] = point [dd] - ph[dd]; rayon += hm[dd] * hm[dd]; } @@ -431,7 +449,7 @@ int Elements::prismHexas (int nro, Quad* qbase, int hauteur) if (revo_lution) { double alpha = beta; - beta = alpha + gen_values[nh]; + beta = alpha + gen_values[nh]; Shape* shape = new Shape (c_rep); shape->setBounds (alpha/360, beta/360); pilier->addAssociation (shape); @@ -460,7 +478,7 @@ int Elements::prismHexas (int nro, Quad* qbase, int hauteur) for (int nh=0 ; nh #include diff --git a/src/HEXABLOCK/HexElements_ter.cxx b/src/HEXABLOCK/HexElements_ter.cxx index cf1a35e..23f5e9c 100755 --- a/src/HEXABLOCK/HexElements_ter.cxx +++ b/src/HEXABLOCK/HexElements_ter.cxx @@ -1,4 +1,3 @@ - // C++ : Table d'hexaedres (Evol Versions 3) // Copyright (C) 2009-2012 CEA/DEN, EDF R&D @@ -22,31 +21,29 @@ #include "HexElements.hxx" +#include "HexDocument.hxx" #include "HexVector.hxx" #include "HexVertex.hxx" #include "HexEdge.hxx" #include "HexHexa.hxx" #include "HexMatrix.hxx" -#include "HexShape.hxx" #include "HexGlobale.hxx" +#include "HexNewShape.hxx" +#include "HexEdgeShape.hxx" + #include BEGIN_NAMESPACE_HEXA -void geom_create_circle (double* milieu, double rayon, double* normale, - double* base, string& brep); -void geom_create_sphere (double* milieu, double radius, string& brep); - void translate_brep (string& brep, double vdir[], string& trep); void transfo_brep (string& brep, Matrix* matrice, string& trep); -void geom_asso_point (Vertex* node); static bool db=false; // ====================================================== makeRind -int Elements::makeRind (EnumGrid type, Vertex* center, Vector* vx, Vector* vz, - double radext, double radint, double radhole, +int Elements::makeRind (EnumGrid type, Vertex* center, Vector* vx, Vector* vz, + double radext, double radint, double radhole, Vertex* plorig, double angle, int nr, int na, int nl) { double phi1; @@ -77,7 +74,7 @@ int Elements::makeRind (EnumGrid type, Vertex* center, Vector* vx, Vector* vz, Vertex* node = el_root->addVertex (px, py, pz); setVertex (node, nx, ny, nz); } - if (cyl_closed) + if (cyl_closed) for (int nx=0 ; nx= rext) + if (rint >= rext) return HERR; - if (rhole > rint) + if (rhole > rint) return HERR; double nvx = vx->getNorm(); double nvz = vz->getNorm(); - if (nvx < Epsil1 || nvz < Epsil1) + if (nvx < Epsil1 || nvz < Epsil1) return HERR; double alpha = asin (rhole/rext); double beta = -M_PI*DEMI; - if (type==GR_HEMISPHERIC || type==GR_PART_SPHERIC) + if (type==GR_HEMISPHERIC || type==GR_PART_SPHERIC) alpha = 2*alpha; if (px!=NULL) @@ -167,17 +164,17 @@ int Elements::controlRind (EnumGrid type, Vertex* cx, Vector* vx, Vector* vz, double oh = ((px->getX() - cx->getX()) * vz->getDx() + (px->getY() - cx->getY()) * vz->getDy() + (px->getZ() - cx->getZ()) * vz->getDz()) / nvz; - if (oh > rext) + if (oh > rext) return HERR; - else if (oh > -rext) + else if (oh > -rext) beta = asin (oh/rext); } phi0 = std::max (alpha - M_PI*DEMI, beta); phi1 = M_PI*DEMI - alpha; - return HOK; + return HOK; } -// ====================================================== getHexas +// ====================================================== getHexas int Elements::getHexas (Hexas& liste) { liste.clear (); @@ -189,16 +186,21 @@ int Elements::getHexas (Hexas& liste) } return HOK; } -// ====================================================== assoCylinder +// ====================================================== assoCylinder void Elements::assoCylinder (Vertex* ori, Vector* normal, double angle) { RealVector tangles; assoCylinders (ori, normal, angle, tangles); } -// ====================================================== assoCylinders -void Elements::assoCylinders (Vertex* ori, Vector* normal, double angle, +// ====================================================== assoCylinders +void Elements::assoCylinders (Vertex* ori, Vector* normal, double angle, RealVector& t_angles) { + char name [12]; + sprintf (name, "grid_%02d", el_id); + NewShape* geom = el_root->addShape (name, SH_CYLINDER); + geom -> openShape(); + int na = t_angles.size(); bool regul = na == 0; double alpha = angle/size_hy; @@ -211,9 +213,9 @@ void Elements::assoCylinders (Vertex* ori, Vector* normal, double angle, { for (int nx=0 ; nxgetX() - ori->getX(), - pm->getY() - ori->getY(), + Vertex* pm = getVertexIJK (nx, 0, nz); + Real3 om = { pm->getX() - ori->getX(), + pm->getY() - ori->getY(), pm->getZ() - ori->getZ() }; double oh = prod_scalaire (om, vk); @@ -221,28 +223,28 @@ void Elements::assoCylinders (Vertex* ori, Vector* normal, double angle, Real3 ph, hm; for (int dd=dir_x; dd<=dir_z ; dd++) { - ph [dd] = ori->getCoord(dd) + oh*vk[dd]; + ph [dd] = ori->getCoord(dd) + oh*vk[dd]; hm [dd] = pm ->getCoord(dd) - ph[dd]; rayon += hm[dd] * hm[dd]; } rayon = sqrt (rayon); - geom_create_circle (ph, rayon, vk, hm, brep); + int subid = geom->addCircle (ph, rayon, vk, hm); double pmax = 0; for (int ny=0 ; ny setBounds (pmin, pmax); - edge->addAssociation (shape); + geom->addAssociation (edge, subid, pmin, pmax); + // Shape* shape = new Shape (brep); + // shape-> setBounds (pmin, pmax); + // edge->addAssociation (shape); } } } - // Association automatique des vertex non associes -> bph // Traitement des faces spheriques @@ -253,75 +255,62 @@ void Elements::assoCylinders (Vertex* ori, Vector* normal, double angle, { case GR_HEMISPHERIC : // Pour l'exterieur case GR_PART_SPHERIC : - assoRind (po, vi, size_vx-1); + assoRind (po, vi, size_vx-1, geom); break; case GR_PART_RIND : // Exterieur + interieur case GR_RIND : - assoRind (po, vi, 0); - assoRind (po, vi, size_vx-1); + assoRind (po, vi, 0, geom); + assoRind (po, vi, size_vx-1, geom); break; default : break; } - assoResiduelle (); // Association des sommets residuels + // assoResiduelle (); // Association des sommets residuels + geom->closeShape (); } -// ====================================================== assoRind +// ====================================================== assoRind // Association des meridiennes // Creation sphere geometrique + association faces -void Elements::assoRind (double* ori, double* vi, int nx) +void Elements::assoRind (double* ori, double* vi, int nx, NewShape* geom) { Real3 vk; - Edges contour; - string c_brep, s_brep; - Shape shape (c_brep); - Shapes t_shape; - t_shape.push_back (&shape); - - double radius = nx==0 ? cyl_radint : cyl_radext; - double paramin = (cyl_phi0 + M_PI/2) / (2*M_PI); - double paramax = paramin + size_hz*cyl_dphi/(2*M_PI); - - paramin = std::max (paramin, 0.0); - paramax = std::min (paramax, 1.0); - geom_create_sphere (ori, radius, s_brep); + double radius = nx==0 ? cyl_radint : cyl_radext; + double paramin = std::max ((cyl_phi0 + M_PI/2) / (2*M_PI), 0.0); + int sphid = geom->addSphere (ori, radius); int nz1 = size_vz/2; int nb_secteurs = cyl_closed ? size_vy-1 : size_vy; for (int ny=0 ; nygetX(), pm->getY(), pm->getZ() }; prod_vectoriel (vi, vj, vk); double rayon = cyl_radint + nx*(cyl_radext-cyl_radint)/size_hx; - geom_create_circle (ori, rayon, vk, vi, c_brep); - shape.setBrep (c_brep); - shape.setBounds (paramin, paramax); - contour.clear (); + int subid = geom->addCircle (ori, rayon, vk, vi); + double pmax = paramin; for (int nz=0 ; nzaddAssociation (sshape); - } + Edge* edge = getEdgeK (nx, ny, nz); + double pmin = pmax; + pmax = pmin + cyl_dphi/(2*M_PI); + geom->addAssociation (edge, subid, pmin, pmax); + geom->addAssociation (quad, sphid); } - cutAssociation (t_shape, contour, false); } } -// ====================================================== assoCircle +// ====================================================== assoCircle // ==== utilise pour les spheres carrees -void Elements::assoCircle (double* center, Edge* ed1, Edge* ed2) +void Elements::assoCircle (double* center, Edge* ed1, Edge* ed2, NewShape* geom) { Real3 oa, ob, normal; Real3 pta, ptb, ptc, ptd; string brep; // Les 2 edges dont les petits cotes d'un rectangle de rapport L/l=sqrt(2) -// Soit le cercle circonscrit a ce rectangle. +// Soit le cercle circonscrit a ce rectangle. // * la largeur est balayee par l'angle alpha // * la longueur par l'angle beta = pi -alpha @@ -342,46 +331,48 @@ void Elements::assoCircle (double* center, Edge* ed1, Edge* ed2) calc_vecteur (center, pta, oa); calc_vecteur (center, ptb, ob); prod_vectoriel (oa, ob, normal); - double rayon = calc_norme (oa); - geom_create_circle (center, rayon, normal, oa, brep); + double rayon = calc_norme (oa); + int subid = geom->addCircle (center, rayon, normal, oa); - Shape* asso1 = new Shape (brep); - Shape* asso2 = new Shape (brep); + // Shape* asso1 = new Shape (brep); + // Shape* asso2 = new Shape (brep); const double alpha = atan (sqrt(2)/2)/M_PI; // angle proche de 70.528 degres - asso1->setBounds (0, alpha); - asso2->setBounds (0.5, alpha + 0.5); + // asso1->setBounds (0, alpha); + // asso2->setBounds (0.5, alpha + 0.5); - ed1->addAssociation (asso1); - ed2->addAssociation (asso2); + geom->addAssociation (ed1, subid, 0.0, alpha); + geom->addAssociation (ed2, subid, 0.5, alpha+0.5); } -// ====================================================== assoSphere +// ====================================================== assoSphere void Elements::assoSphere (Vertex* ori, Edge* t_edge[], Quad* t_quad[]) { + char name [12]; + sprintf (name, "grid_%02d", el_id); + NewShape* geom = el_root->addShape (name, SH_SPHERE); + geom -> openShape (); + Real3 center, sommet; ori->getPoint(center); - assoCircle (center, t_edge [E_AC], t_edge [E_BD]); - assoCircle (center, t_edge [E_AD], t_edge [E_BC]); - assoCircle (center, t_edge [E_AE], t_edge [E_BF]); - assoCircle (center, t_edge [E_AF], t_edge [E_BE]); - assoCircle (center, t_edge [E_CE], t_edge [E_DF]); - assoCircle (center, t_edge [E_CF], t_edge [E_DE]); + assoCircle (center, t_edge [E_AC], t_edge [E_BD], geom); + assoCircle (center, t_edge [E_AD], t_edge [E_BC], geom); + assoCircle (center, t_edge [E_AE], t_edge [E_BF], geom); + assoCircle (center, t_edge [E_AF], t_edge [E_BE], geom); + assoCircle (center, t_edge [E_CE], t_edge [E_DF], geom); + assoCircle (center, t_edge [E_CF], t_edge [E_DE], geom); t_edge[E_AC]->getVertex(V_AMONT)->getPoint (sommet); double radius = calc_distance (center, sommet);; - string brep; - geom_create_sphere (center, radius, brep); + int sphid = geom -> addSphere (center, radius); + geom->closeShape(); for (int nf=0 ; nf < HQ_MAXI ; nf++) - { - Shape* shape = new Shape (brep); - t_quad [nf]->addAssociation (shape); - } + t_quad[nf]->addAssociation (geom, sphid); - assoResiduelle (); // Association des sommets residuels + // assoResiduelle (); // Association des sommets residuels } // ====================================================== makeSphericalGrid int Elements::makeSphericalGrid (Vertex* c, double rayon, int nb, double k) @@ -404,7 +395,7 @@ int Elements::makeSphericalGrid (Vertex* c, double rayon, int nb, double k) double dy = glob->CoordVertex (nro, dir_y) * rayon; double dz = glob->CoordVertex (nro, dir_z) * rayon; - i_node [nro] = el_root->addVertex (c->getX ()+dx, c->getY ()+dy, + i_node [nro] = el_root->addVertex (c->getX ()+dx, c->getY ()+dy, c->getZ ()+dz); } @@ -417,20 +408,20 @@ int Elements::makeSphericalGrid (Vertex* c, double rayon, int nb, double k) if (db) { char nm0[8], nm1 [8], nm2 [8]; - printf (" %2d : %s = %s = [%s, %s] = [%d,%d] = [%s,%s]\n", nro, - glob->namofHexaEdge(nro), i_edge[nro]->getName(nm0), + printf (" %2d : %s = %s = [%s, %s] = [%d,%d] = [%s,%s]\n", nro, + glob->namofHexaEdge(nro), i_edge[nro]->getName(nm0), glob->namofHexaVertex(v1), glob->namofHexaVertex(v2), v1, v2, i_node[v1]->getName(nm1), i_node[v2]->getName(nm2)); } } - + for (int nro=0 ; nroQuadEdge (nro, E_A)], - i_edge[glob->QuadEdge (nro, E_B)], - i_edge[glob->QuadEdge (nro, E_C)], + i_quad[nro] = newQuad (i_edge[glob->QuadEdge (nro, E_A)], + i_edge[glob->QuadEdge (nro, E_B)], + i_edge[glob->QuadEdge (nro, E_C)], i_edge[glob->QuadEdge (nro, E_D)]); - tab_hexa.push_back (newHexa (i_quad[Q_A], i_quad[Q_B], i_quad[Q_C], + tab_hexa.push_back (newHexa (i_quad[Q_A], i_quad[Q_B], i_quad[Q_C], i_quad[Q_D], i_quad[Q_E], i_quad[Q_F])); double lambda = 1; double dcell = 1; @@ -441,13 +432,15 @@ int Elements::makeSphericalGrid (Vertex* c, double rayon, int nb, double k) lambda += dcell; addStrate (i_quad, i_edge, i_node, c, lambda/lambda0); } - + assoSphere (c, i_edge, i_quad); return HOK; } // ==================================================== propagateAssociation int Elements::propagateAssociation (Edge* orig, Edge* dest, Edge* dir) { + return HERR; +#if 0 if (revo_lution || orig==NULL || dest==NULL || dir==NULL) return HERR; @@ -482,9 +475,9 @@ int Elements::propagateAssociation (Edge* orig, Edge* dest, Edge* dir) { string brep = shape->getBrep(); translate_brep (brep, vdir1, trep); - Shape* tshape = new Shape (trep); - tshape->setBounds (shape->debut, shape->fin); - dest->addAssociation (tshape); + // Shape* tshape = new Shape (trep); + // tshape->setBounds (shape->getStart(), shape->getEnd()); + // dest->addAssociation (tshape); } } } @@ -497,8 +490,8 @@ int Elements::propagateAssociation (Edge* orig, Edge* dest, Edge* dir) { string brep = shape->getBrep(); translate_brep (brep, vdir, trep); - Shape* tshape = new Shape (trep); - vd1->setAssociation (tshape); + // Shape* tshape = new Shape (trep); + // vd1->setAssociation (tshape); } vo1 = vo2; vd1 = vd2; @@ -506,15 +499,18 @@ int Elements::propagateAssociation (Edge* orig, Edge* dest, Edge* dir) } return HOK; +#endif } // ==================================================== prismAssociation int Elements::prismAssociation (Edge* orig, Edge* dest, int nh, Edge* dir) { + return HERR; +#if 0 if (orig==NULL || dest==NULL || dir==NULL) return HERR; updateMatrix (nh); - + const Shapes& tab_shapes = orig->getAssociations (); const Shapes& tab_dest = dest->getAssociations (); int nbdest = tab_dest.size(); @@ -532,7 +528,7 @@ int Elements::prismAssociation (Edge* orig, Edge* dest, int nh, Edge* dir) vo1->getPoint (porig); vd1->getPoint (pdest); calc_vecteur (porig, pdest, vdir); - + if (on_edge) { for (int nro=0 ; nrogetBrep(); // translate_brep (brep, vdir, trep); transfo_brep (brep, &gen_matrix, trep); - Shape* tshape = new Shape (trep); - tshape->setBounds (shape->debut, shape->fin); - dest->addAssociation (tshape); + // Shape* tshape = new Shape (trep); + // tshape->setBounds (shape->getStart(), shape->getEnd()); + // dest->addAssociation (tshape); } } } @@ -558,22 +554,23 @@ int Elements::prismAssociation (Edge* orig, Edge* dest, int nh, Edge* dir) string brep = shape->getBrep(); // translate_brep (brep, vdir, trep); transfo_brep (brep, &gen_matrix, trep); - Shape* tshape = new Shape (trep); - vd1->setAssociation (tshape); + // Shape* tshape = new Shape (trep); + // vd1->setAssociation (tshape); } vo1 = orig->opposedVertex (vo1); vd1 = dest->opposedVertex (vd1); } return HOK; +#endif } // ====================================================== assoResiduelle void Elements::assoResiduelle () { - int nbre = tab_vertex.size(); - for (int nv=0 ; nvisHere()) - elt->remove (); - } + elt->remove (); + } } // =================================================== suppress void EltBase::suppress () @@ -98,62 +98,32 @@ void EltBase::suppress () el_root->setDeprecated (2); el_type = EL_REMOVED; } -// ========================================================= replaceAssociation -void EltBase::replaceAssociation (EltBase* orig) -{ - if ( orig == NULL || orig->el_assoc == NULL - || orig == this || orig->el_assoc == el_assoc) - return; - - if (el_assoc==NULL) - el_assoc = orig->el_assoc; - else - el_root->hputError (W_REPL_ASSOC, this, orig); -} -// ========================================================= copyAssociation -void EltBase::copyAssociation (EltBase* orig) -{ - if ( orig == NULL || orig->el_assoc == NULL - || orig == this || orig->el_assoc == el_assoc) - return; - - el_assoc = orig->el_assoc; - el_root->hputError (W_DISCO_ASSOC, orig); -} -// ========================================================= getName +// ========================================================= getName cpchar EltBase::getName () { return el_name.c_str() ; } -// ========================================================= getName +// ========================================================= getName char* EltBase::getName (pchar buffer) +{ + return makeName (el_type, el_id, buffer); +} +// ========================================================= makeName +char* EltBase::makeName (int type, int id, char* name) { // EL_NONE, EL_VERTEX, EL_EDGE, EL_QUAD, EL_HEXA, EL_REMOVED - sprintf (buffer, "%c%04d", ABR_TYPES[el_type], el_id); - return buffer; + sprintf (name, "%c%04d", ABR_TYPES[type], id); + return name; } -// ========================================================= printName + +// ========================================================= printName void EltBase::printName (cpchar sep) { char nom[12]; printf ("%s%s", getName(nom), sep); } -// ========================================================= setAssociation -void EltBase::setAssociation (Shape* forme) -{ - el_assoc = forme; - - if (el_root->debug (2)) - cout << " Vertex " << el_name << " : setAssociation" << endl; -} -// ========================================================= addAssociation -int EltBase::addAssociation (Shape* forme) -{ - setAssociation (forme); - return HOK; -} -// ========================================================= dumpRef +// ========================================================= dumpRef void EltBase::dumpRef () { int nbp = el_parent.size(); @@ -164,11 +134,11 @@ void EltBase::dumpRef () printf ("\n"); } - for (int nro=0 ; nroisHere ()) { - if (prems) + if (prems) printf ("\t isin "); prems = false; el_parent[nro]->printName(", "); @@ -177,14 +147,7 @@ void EltBase::dumpRef () printf ("\n"); } -// ========================================================= addAssociation -bool EltBase::canBeAssociated () -{ - bool rep = isValid() && isHere() - && (el_type==EL_VERTEX || el_type==EL_EDGE || el_type==EL_QUAD); - return rep; -} -// ========================================================= addAssociation +// ========================================================= setId void EltBase::setId (int ln) { char buffer [16]; @@ -194,9 +157,22 @@ void EltBase::setId (int ln) int maxid = std::max (el_root->doc_nbr_elt[el_type], ln+1); el_root->doc_nbr_elt[el_type] = maxid; - if (defname) + if (defname) el_name = getName (buffer); } - +// ========================================================= makeVarName +char* EltBase::makeVarName (char* nom) +{ + static cpchar PREFIX[] = {"Undef", "Node", "Edge", "Quad", "Hexa", + "Vect", "Grid", "Cyl", "Pipe", "Group", "Law", + "Xxxx", "Xxxx", "Xxxx" }; + sprintf (nom, "%s%d", PREFIX[el_type], el_id); + return nom; +} +// ========================================================= debug +bool EltBase::debug (int niv) +{ + return el_root != NULL && el_root->getLevel() > niv ; +} END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexEltBase.hxx b/src/HEXABLOCK/HexEltBase.hxx index dadda0c..87bde12 100755 --- a/src/HEXABLOCK/HexEltBase.hxx +++ b/src/HEXABLOCK/HexEltBase.hxx @@ -1,5 +1,5 @@ -// Class : Element de base des Vertex/Edge/Quad, etc... +// Class : Element de base des Vertex/Edge/Quad, etc... // Copyright (C) 2009-2012 CEA/DEN, EDF R&D // @@ -24,7 +24,6 @@ #define __ELT_BASE_H #include "hexa_base.hxx" -#include "HexDocument.hxx" #include #define HexDump(x) {printf(#x " = "); if (x) x->dump(); else printf("NULL\n");} @@ -33,18 +32,12 @@ #define GetClone(elt) ((elt)==NULL ? NULL : elt->getClone()) #define BadElement(elt) (elt)==NULL || (elt)->isBad() -#define ABR_TYPES "xveqhwgcp????" BEGIN_NAMESPACE_HEXA -class EltBase +class EltBase { public : - virtual Hexa* getHexa (int nro) { return NULL; } - virtual Quad* getQuad (int nro) { return NULL; } - virtual Edge* getEdge (int nro) { return NULL; } - virtual Vertex* getVertex (int nro) { return NULL; } - virtual int countHexa () { return 0; } virtual int countQuad () { return 0; } virtual int countEdge () { return 0; } @@ -55,21 +48,16 @@ public : virtual bool isValid () { return el_status==HOK; } virtual bool isBad () { return el_status!=HOK; } - virtual void setAssociation (Shape* forme); - virtual int addAssociation (Shape* forme); - virtual void clearAssociation () { el_assoc = NULL ; } virtual void duplicate () {} - virtual Shape* getAssociation () { return el_assoc ; } - virtual bool isAssociated () { return el_assoc != NULL ; } + virtual void clearAssociation () {} - void copyAssociation (EltBase* orig); - void replaceAssociation (EltBase* orig); - bool canBeAssociated (); + // void copyAssociation (EltBase* orig); + // void replaceAssociation (EltBase* orig); public : - virtual void replaceEdge (Edge* old, Edge* nouveau) + virtual void replaceEdge (Edge* old, Edge* nouveau) { printf ("rep-edge\n") ; } - virtual void replaceVertex (Vertex* old, Vertex* nouveau) + virtual void replaceVertex (Vertex* old, Vertex* nouveau) { printf ("rep-vertex\n") ; } EltBase (Document* doc, EnumElt type=EL_NONE); @@ -81,6 +69,9 @@ public : virtual void dump (); virtual void saveXml (XmlWriter* xml) {} virtual void majReferences () { } + virtual char* makeVarName (char* nom); + + static char* makeName (int type, int id, char* name); EltBase* next () { return el_next; } void setNext (EltBase* suivant) { el_next = suivant; } @@ -90,14 +81,14 @@ public : EnumElt getType () { return el_type; } bool isHere () { return el_type!=EL_REMOVED; } bool isDeleted () { return el_type==EL_REMOVED; } - - // On s'occupe des parents + + // On s'occupe des parents void razReferences () { el_parent.clear() ; } void addParent (EltBase* dad) { if (dad) el_parent.push_back(dad) ; } int getNbrParents () { return el_parent.size() ; } bool hasParents (); - EltBase* getFather (int nro); + EltBase* getFather (int nro); int getMark () { return el_mark; } void setMark (int ln) { el_mark = ln ; } @@ -109,52 +100,47 @@ public : void setName (const string& nom) { el_name = nom ; } void setName (cpchar nom) { el_name = nom ; } - bool debug (int niv=0) { return el_root->getLevel() > niv ; } + bool debug (int niv=0); + bool isAssociated () { return is_associated ; } protected : EnumElt el_type; EltBase* el_next; int el_id; Document* el_root; - Shape* el_assoc; string el_name; int el_status; int el_mark; + bool is_associated; std::vector el_parent; }; // ========================================================= dump inline void EltBase::dump () { printf ("Elt%d Nro=%04d", el_type, el_id); - dumpRef() ; + dumpRef() ; } -// ========================================================= getFather +// ========================================================= getFather inline EltBase* EltBase::getFather (int nro) { EltBase* elt = NULL; - if (nro >= 0 && nro < (int) el_parent.size() && isHere() + if (nro >= 0 && nro < (int) el_parent.size() && isHere() && el_parent[nro]->isHere()) elt = el_parent[nro]; return elt; } -// ========================================================= hasParents +// ========================================================= hasParents inline bool EltBase::hasParents () { int nbp = el_parent.size(); - for (int nro=0 ; nroisHere()) return true; return false; } -// ========================================================= clear_association -inline void clear_association (EltBase* elt) -{ - if (elt != NULL && elt->isHere() && elt->isValid()) - elt -> clearAssociation (); -} END_NAMESPACE_HEXA #endif diff --git a/src/HEXABLOCK/HexFaceShape.cxx b/src/HEXABLOCK/HexFaceShape.cxx new file mode 100755 index 0000000..4260770 --- /dev/null +++ b/src/HEXABLOCK/HexFaceShape.cxx @@ -0,0 +1,54 @@ + +// C++ : Gestion des soous-shapes + +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com +// + +#include "HexFaceShape.hxx" + +#ifndef NO_CASCADE + + +BEGIN_NAMESPACE_HEXA + +static bool db = on_debug (); // == getenv ("HEXA_DB") > 0 + +// ====================================================== Constructeur +FaceShape::FaceShape (NewShape* dad, int id) + : SubShape (dad, id, 2) +{ +} +// ========================================================== addAssociation +void FaceShape::addAssociation (Quad* quad) +{ + tab_assoc.push_back (quad); + is_associated = true; +} +// ====================================================== getAssociation +Quad* FaceShape::getAssociation (int nro) +{ + if (nro>0 && nro= 0; } - cpchar getArg (int nro) { return nro>=nbr_args ? NULL : tab_args[nro]; } + cpchar getArg (int nro) { return nro>=nbr_args ? NULL : tab_args[nro]; } + +public : + DumpStudy dump; private : Globale (); // Constructeur prive @@ -87,6 +93,7 @@ private : private : int nbr_args; cpchar* tab_args; + bool dump_study; int coord_vertex [HV_MAXI] [DIM3]; EnumHVertex edge_vertex [HE_MAXI] [V_TWO]; diff --git a/src/HEXABLOCK/HexGroup.cxx b/src/HEXABLOCK/HexGroup.cxx index 3c3afc9..1333f26 100755 --- a/src/HEXABLOCK/HexGroup.cxx +++ b/src/HEXABLOCK/HexGroup.cxx @@ -44,7 +44,7 @@ Group::Group (cpchar nom, EnumGroup grp) else { char buffer [16]; sprintf (buffer, "g%04d", grp_id); - grp_name = std::string(buffer); + grp_name = std::string(buffer); } grp_kind = grp; @@ -128,6 +128,14 @@ void Group::saveXml (XmlWriter* xml) } xml->closeMark (); } + +// ========================================================= getNextName +char* Group::getNextName (pchar buffer) +{ + sprintf (buffer, "g%04d", last_grp_id); + return buffer; +} + // ======================================================== getKind EnumGroup Group::getKind (cpchar kind) { diff --git a/src/HEXABLOCK/HexGroup.hxx b/src/HEXABLOCK/HexGroup.hxx index 10e0e71..e75315b 100755 --- a/src/HEXABLOCK/HexGroup.hxx +++ b/src/HEXABLOCK/HexGroup.hxx @@ -35,6 +35,7 @@ public : void setName (cpchar nom) { grp_name = nom ; } cpchar getName () { return grp_name.c_str () ; } + char* getNextName (pchar buffer); EnumGroup getKind () { return grp_kind ; } int addElement (EltBase* elt); int removeElement (EltBase* elt); diff --git a/src/HEXABLOCK/HexHexa.cxx b/src/HEXABLOCK/HexHexa.cxx index 66d7242..d6cd095 100755 --- a/src/HEXABLOCK/HexHexa.cxx +++ b/src/HEXABLOCK/HexHexa.cxx @@ -339,6 +339,23 @@ void Hexa::printHexa (pfile vtk) fprintf (vtk, "\n"); } +// ======================================================= printHexaVtk +void Hexa::printHexaVtk (pfile vtk) +{ + fprintf (vtk, "%d", HV_MAXI); + + fprintf (vtk, " %d", h_vertex[V_ACE]->getId ()); + fprintf (vtk, " %d", h_vertex[V_ACF]->getId ()); + fprintf (vtk, " %d", h_vertex[V_ADF]->getId ()); + fprintf (vtk, " %d", h_vertex[V_ADE]->getId ()); + + fprintf (vtk, " %d", h_vertex[V_BCE]->getId ()); + fprintf (vtk, " %d", h_vertex[V_BCF]->getId ()); + fprintf (vtk, " %d", h_vertex[V_BDF]->getId ()); + fprintf (vtk, " %d", h_vertex[V_BDE]->getId ()); + + fprintf (vtk, "\n"); +} // ======================================================== hasFreEdges bool Hexa::hasFreeEdges () { diff --git a/src/HEXABLOCK/HexHexa.hxx b/src/HEXABLOCK/HexHexa.hxx index b1d2d05..91c18b5 100755 --- a/src/HEXABLOCK/HexHexa.hxx +++ b/src/HEXABLOCK/HexHexa.hxx @@ -80,6 +80,7 @@ public: void moveNodes (Matrix* matrice); // transfo controlee ds un ensemble void transform (Matrix* matrice); // transfo indivituelle void printHexa (pfile vtk); // Impression de la cellule + void printHexaVtk (pfile vtk); // Impression de la cellule virtual void majReferences(); // M.A.J relation "utilise par" bool hasFreeEdges (); diff --git a/src/HEXABLOCK/HexKasBiCylinder.cxx b/src/HEXABLOCK/HexKasBiCylinder.cxx index 1312b4b..52c61e8 100755 --- a/src/HEXABLOCK/HexKasBiCylinder.cxx +++ b/src/HEXABLOCK/HexKasBiCylinder.cxx @@ -48,9 +48,9 @@ // HEXABLOCK includes #include "HexVertex.hxx" #include "HexEdge.hxx" -#include "HexShape.hxx" +#include "HexOldShape.hxx" #include "HexDiagnostics.hxx" - // Cercles + // Cercles #include #include @@ -84,7 +84,7 @@ void KasBiCylinder::purge () no_inter = true; inter_line.clear (); } -// ====================================================== defineCyls +// ====================================================== defineCyls int KasBiCylinder::defineCyls (double* borig, double* bnorm, double* bbase, double brayon, double bhaut, double* sorig, double* snorm, double* sbase, @@ -165,9 +165,11 @@ int KasBiCylinder::defineCyls (double* borig, double* bnorm, double* bbase, // TopoDS_Edge ligne = explo.Current(); explo.Next (); - cout << "____________________________________ Ligne suivante" << endl; + if (db) + cout << "____________________________________ Ligne suivante" + << endl; geom_make_brep (ligne, crep); - if (db) + if (db) { cout << "---- save_brep inter" << nbrep+1 << ".brep" << endl; save_brep ("inter", crep, nbrep); @@ -184,7 +186,7 @@ int KasBiCylinder::defineCyls (double* borig, double* bnorm, double* bbase, // === Trouve le(s) ligne(s) contenant ce vertex et le(s) parametre(s) int KasBiCylinder::anaVertex (Vertex* node, int* tline, double* tpara) { - Real3 point; + Real3 point; node->getPoint (point); int nbsol = 0; int nblines = inter_line.size(); @@ -194,10 +196,10 @@ int KasBiCylinder::anaVertex (Vertex* node, int* tline, double* tpara) double param = inter_line[nl]->findParam (point); if (param>=0) { - if (db) - cout << " ... findParam " << node->getName() - << ", point=(" << point[0] << ", " << point[1] - << ", " << point[2] + if (db) + cout << " ... findParam " << node->getName() + << ", point=(" << point[0] << ", " << point[1] + << ", " << point[2] << "), nl=" << nl << ", param=" << param << endl; if (nbsol>=2) return nbsol; @@ -241,7 +243,7 @@ int KasBiCylinder::associate (Edge* edge) if (sol1==0 || sol2==0) return HERR; - // Ligne commune ? + // Ligne commune ? for (int ns1=0 ; ns1assoEdge (edge, 0.0, param2, V_AVAL); } return HOK; - } + } } } - + inter_line[tline1[0]]->assoEdge (edge, tparam1[0], 1.0, V_AMONT); inter_line[tline2[0]]->assoEdge (edge, 0, tparam2[0], V_AVAL); return HOK; @@ -285,10 +287,11 @@ int geom_create_cylcyl (double* borig, double* bnorm, double* bbase, // ====================================================== geom_asso_cylcyl int geom_asso_cylcyl (Edge* edge) { - cout << " ___________________________________ geom_asso_cylcyl " - << edge->getName () << " = (" << edge->getVertex(0)->getName () - << "," << edge->getVertex(1)->getName () - << ")" << endl; + if (db) + cout << " ___________________________________ geom_asso_cylcyl " + << edge->getName () << " = (" << edge->getVertex(0)->getName () + << "," << edge->getVertex(1)->getName () + << ")" << endl; int ier = current_bicyl.associate (edge); return ier; diff --git a/src/HEXABLOCK/HexKasLine.cxx b/src/HEXABLOCK/HexKasLine.cxx index 815d9b8..c371fd3 100755 --- a/src/HEXABLOCK/HexKasLine.cxx +++ b/src/HEXABLOCK/HexKasLine.cxx @@ -48,14 +48,14 @@ // HEXABLOCK includes #include "HexVertex.hxx" #include "HexEdge.hxx" -#include "HexShape.hxx" +#include "HexOldShape.hxx" #include "HexDiagnostics.hxx" #include BEGIN_NAMESPACE_HEXA -static bool db = false; +static bool db = on_debug (); static const double TolAsso = 1e-2; // Tolerance pour les associations void arrondir (double &val); @@ -63,7 +63,6 @@ void arrondir (double &val); // ======================================================= Constructeur KasLine::KasLine () { - db = on_debug (); lig_brep = ""; lig_debut = 0; lig_fin = 1; @@ -91,24 +90,24 @@ KasLine::~KasLine () delete geom_curve; } // ========================================================= defineLine -// === Creation de la quincaillerie associee a une shape +// === Creation de la quincaillerie associee a une shape void KasLine::defineLine (Shape* asso, double deb, double fin) { - lig_brep = asso->getBrep (); - lig_ident = asso->getName (); - lig_ior = asso->getIor (); + lig_brep = asso->getBrep (); + lig_ident = asso->getIdent (); + lig_ior = asso->getIor (); if (fin<0.0) { - lig_debut = asso->debut; - lig_fin = asso->fin; + lig_debut = asso->getStart();; + lig_fin = asso->getEnd();; } else if (deb >= UnEpsil) { lig_debut = fin; lig_fin = deb ; } - else + else { lig_debut = deb; lig_fin = fin; @@ -135,9 +134,9 @@ void KasLine::defineLine (Shape* asso, double deb, double fin) geom_length = geom_total_length * fabs (lig_fin-lig_debut); // Extremites - GCPnts_AbscissaPoint s1 (*geom_curve, geom_total_length*lig_debut, + GCPnts_AbscissaPoint s1 (*geom_curve, geom_total_length*lig_debut, geom_curve->FirstParameter()); - GCPnts_AbscissaPoint s2 (*geom_curve, geom_total_length*lig_fin, + GCPnts_AbscissaPoint s2 (*geom_curve, geom_total_length*lig_fin, geom_curve->FirstParameter()); par_mini = s1.Parameter (); @@ -146,7 +145,7 @@ void KasLine::defineLine (Shape* asso, double deb, double fin) end_gpoint = geom_curve->Value (par_maxi); majCoord (); - if (db) + if (db) { Echo (" ____________________________________ KasLine::defineLine"); HexDisplay (deb); @@ -165,7 +164,7 @@ void KasLine::defineLine (Shape* asso, double deb, double fin) // ========================================================= assoPoint void KasLine::assoPoint (double abscis, Vertex* node) { - GCPnts_AbscissaPoint s1 (*geom_curve, abscis, + GCPnts_AbscissaPoint s1 (*geom_curve, abscis, geom_curve->FirstParameter()); double gparam = s1.Parameter (); gp_Pnt pnt_asso = geom_curve->Value (gparam); @@ -182,7 +181,7 @@ void KasLine::assoPoint (double abscis, Vertex* node) car= ' '; printf (" ... assoPoint%c: v=%s (%g,%g,%g), p=%g", car, node->getName(), node->getX(), node->getY(), node->getZ(), abscis); - + printf (" -> (%g,%g,%g)\n", coord[dir_x], coord[dir_y], coord[dir_z]); } } @@ -192,7 +191,7 @@ void KasLine::associate (Edge* edge, double sm1, double sm2, int vorig) if (sm2 < start_absc) return; if (sm1 > end_absc) return; - Vertex* segment[V_TWO] = { edge->getVertex (vorig), + Vertex* segment[V_TWO] = { edge->getVertex (vorig), edge->getVertex (1-vorig) }; double vpara1 = lig_debut + (sm1-start_absc)/geom_total_length; @@ -216,8 +215,8 @@ void KasLine::associate (Edge* edge, double sm1, double sm2, int vorig) cout << " ligpara = [ " << lig_debut << ", " << lig_fin << " ]" << endl; cout << " absc = [ " << start_absc << ", " << end_absc << " ]\n" ; - cout << " Edge = " << edge->getName() << - " = [ " << segment[0]->getName() << ", " + cout << " Edge = " << edge->getName() << + " = [ " << segment[0]->getName() << ", " << "," << segment[1]->getName() << endl; cout << " smx = [ " << sm1 << ", " << sm2 << " ]" << endl; cout << " vparam = [ " << vpara1 << ", " << vpara2 << " ]" << endl; @@ -234,7 +233,7 @@ void KasLine::associate (Edge* edge, double sm1, double sm2, int vorig) lpara1, lpara2); } - // ---------------Association du vertex + // ---------------Association du vertex double hparam = geom_inverse ? vpara2 : vpara1; double smx = sm1; double absc1 = start_absc - TolAsso*geom_total_length; @@ -250,7 +249,7 @@ void KasLine::associate (Edge* edge, double sm1, double sm2, int vorig) // ..... Coordonnees du point double abscis = geom_total_length*hparam; - GCPnts_AbscissaPoint s1 (*geom_curve, abscis, + GCPnts_AbscissaPoint s1 (*geom_curve, abscis, geom_curve->FirstParameter()); double gparam = s1.Parameter (); gp_Pnt pnt_asso = geom_curve->Value (gparam); @@ -262,7 +261,7 @@ void KasLine::associate (Edge* edge, double sm1, double sm2, int vorig) if (db) { double* ass = gpoint.getCoord(); - printf (" Asso Point %s (%g,%g,%g) -> (%g,%g,%g) p=%g s=%g\n", + printf (" Asso Point %s (%g,%g,%g) -> (%g,%g,%g) p=%g s=%g\n", node->getName(), node->getX(), node->getY(), node->getZ(), ass[dir_x], ass[dir_y], ass[dir_z], hparam, smx); } @@ -270,7 +269,7 @@ void KasLine::associate (Edge* edge, double sm1, double sm2, int vorig) else if (db) { double abscis = geom_total_length*hparam; - GCPnts_AbscissaPoint s1 (*geom_curve, abscis, + GCPnts_AbscissaPoint s1 (*geom_curve, abscis, geom_curve->FirstParameter()); double gparam = s1.Parameter (); gp_Pnt pnt_asso = geom_curve->Value (gparam); @@ -280,14 +279,14 @@ void KasLine::associate (Edge* edge, double sm1, double sm2, int vorig) gpoint.definePoint (pnt_asso); double* ass = gpoint.getCoord(); // gpoint.associate (node); - printf (" Asso Point %s (%g,%g,%g) -> (%g,%g,%g) p=%g s=%g\n", + printf (" Asso Point %s (%g,%g,%g) -> (%g,%g,%g) p=%g s=%g\n", node->getName(), node->getX(), node->getY(), node->getZ(), ass[dir_x], ass[dir_y], ass[dir_z], hparam, smx); gpoint.definePoint (node); ass = gpoint.getCoord(); - printf (" ignore car deja associe a (%g,%g, %g)\n", + printf (" ignore car deja associe a (%g,%g, %g)\n", ass[dir_x], ass[dir_y], ass[dir_z]); } } @@ -299,17 +298,17 @@ void KasLine::associate (Edge* edge, double sm1, double sm2, int vorig) void KasLine::assoEdge (Edge* edge, double para1, double para2, int vass) { Shape* shape = new Shape (lig_brep); - shape->setName (lig_ident); + shape->setIdent (lig_ident); shape->setIor (lig_ior); shape->setBounds (para1, para2); edge ->addAssociation (shape); - if (db) printf (" ... Asso Edge %s -> (%g,%g)\n", + if (db) printf (" ... Asso Edge %s -> (%g,%g)\n", edge->getName(), para1, para2); double lg = geom_total_length; - switch (vass) + switch (vass) { case V_AMONT : assoPoint (para1*lg, edge->getVertex (V_AMONT)); @@ -353,13 +352,15 @@ void KasLine::inverser () { lig_fin = lig_debut; lig_debut = 0; - cout << " ... inverser : fin = debut = " << lig_fin << endl; + if (db) + cout << " ... inverser : fin = debut = " << lig_fin << endl; } else if (lig_fin > Epsil && lig_fin < UnEpsil) { lig_debut = lig_fin; lig_fin = 1; - cout << " ... inverser : debut = fin = " << lig_debut << endl; + if (db) + cout << " ... inverser : debut = fin = " << lig_debut << endl; } geom_inverse = NOT geom_inverse; @@ -377,7 +378,7 @@ void KasLine::setRank (int nro, int sens, double& abscisse) if (db) { - cout << "KasLine::setRank : nro = " << nro << " sens=" << sens + cout << "KasLine::setRank : nro = " << nro << " sens=" << sens << " = (" << start_absc << ", " << end_absc << ")" << endl; } } @@ -406,11 +407,11 @@ double KasLine::findParam (double* coord) double gparam = projector.LowerDistanceParameter(); if (gparam par_maxi) { - // cout << " Rejet : " << gparam << " not in (" << par_mini + // cout << " Rejet : " << gparam << " not in (" << par_mini // << ", " << par_maxi << ")" << endl; return -1.0; } - + gp_Pnt rpoint = geom_curve->Value (gparam); if (NOT same_coords (gpoint, rpoint)) { @@ -422,8 +423,8 @@ double KasLine::findParam (double* coord) GeomAdaptor_Curve adapt_curve (handle); double abscis = GCPnts_AbscissaPoint::Length (adapt_curve, umin, gparam); double hparam = abscis/geom_total_length; - - // gparam = (gparam-par_mini) / (par_maxi-par_mini); + + // gparam = (gparam-par_mini) / (par_maxi-par_mini); return hparam; } // ========================================================= arrondir diff --git a/src/HEXABLOCK/HexKasPoint.cxx b/src/HEXABLOCK/HexKasPoint.cxx index 3668cf9..7736e93 100755 --- a/src/HEXABLOCK/HexKasPoint.cxx +++ b/src/HEXABLOCK/HexKasPoint.cxx @@ -22,7 +22,7 @@ #include "HexKasPoint.hxx" #include "HexVertex.hxx" -#include "HexShape.hxx" +#include "HexOldShape.hxx" #ifndef NO_CASCADE @@ -58,6 +58,8 @@ void KasPoint::razPoint () // ======================================================= definePoint (vertex) int KasPoint::definePoint (Vertex* node) { + return HERR; +#if 0 razPoint (); if (node==NULL) @@ -66,7 +68,7 @@ int KasPoint::definePoint (Vertex* node) Shape* asso = node->getAssociation(); if (asso==NULL) return HERR; - + b_rep = asso->getBrep (); TopoDS_Shape topo; @@ -81,10 +83,11 @@ int KasPoint::definePoint (Vertex* node) g_vertex = TopoDS::Vertex (topo); g_point = BRep_Tool::Pnt( g_vertex ); - g_coord [dir_x] = g_point.X(); - g_coord [dir_y] = g_point.Y(); - g_coord [dir_z] = g_point.Z(); + g_coord [dir_x] = g_point.X(); + g_coord [dir_y] = g_point.Y(); + g_coord [dir_z] = g_point.Z(); return HOK; +#endif } // ======================================================= definePoint (xyz) void KasPoint::definePoint (Real3 coord) @@ -120,6 +123,7 @@ void KasPoint::definePoint (gp_Pnt& gpoint) // ======================================================= associate void KasPoint::associate (Vertex* node) { +/**************** if (db) cout << " ++ KasPoint::associate " << endl; if (db) PutName (node); if (node==NULL) @@ -127,6 +131,8 @@ void KasPoint::associate (Vertex* node) Shape* vshape = new Shape (b_rep); node->setAssociation (vshape); + +*********************/ } END_NAMESPACE_HEXA #endif diff --git a/src/HEXABLOCK/HexKas_functions.cxx b/src/HEXABLOCK/HexKas_functions.cxx index f6eeedd..683c59f 100755 --- a/src/HEXABLOCK/HexKas_functions.cxx +++ b/src/HEXABLOCK/HexKas_functions.cxx @@ -17,19 +17,29 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com // +#include "HexKas_functions.hxx" + #ifndef NO_CASCADE -#include "HexKas_functions.hxx" +#include +#include +#include + +#include +#include + +#include BEGIN_NAMESPACE_HEXA // ====================================================== same_coords bool same_coords (gp_Pnt& pa, gp_Pnt& pb, double epsilon) { - double d2 = carre (pb.X()-pa.X()) + carre (pb.Y()-pa.Y()) + double d2 = carre (pb.X()-pa.X()) + carre (pb.Y()-pa.Y()) + carre (pb.Z()-pa.Z()) ; return d2 < epsilon; } @@ -47,12 +57,54 @@ void save_brep (cpchar nom, string brep, int& compteur) fprintf (fic, "%s\n", brep.c_str()); fclose (fic); } -// ====================================================== geom_make_brep +// ====================================================== geom_make_brep void geom_make_brep (TopoDS_Shape& shape, string& brep) { ostringstream stream_shape; BRepTools::Write (shape, stream_shape); brep = stream_shape.str(); } +// ====================================================== geom_brep2shape (F) +TopoDS_Shape geom_brep2shape (rcstring brep) +{ + TopoDS_Shape topo; + istringstream streamBrep(brep); + BRep_Builder aBuilder; + BRepTools::Read (topo, streamBrep, aBuilder); + return topo; +} +// ====================================================== geom_brep2shape +int geom_brep2shape (rcstring brep, TopoDS_Shape& shape) +{ + istringstream streamBrep(brep); + BRep_Builder aBuilder; + BRepTools::Read (shape, streamBrep, aBuilder); + return HOK; +} +// ====================================================== geom_brep2point +int geom_brep2point (rcstring brep, double& px, double& py, double& pz) +{ + TopoDS_Shape topo; + geom_brep2shape (brep, topo); + + if (topo.ShapeType() != TopAbs_VERTEX) + return HERR; + + TopoDS_Vertex g_vertex = TopoDS::Vertex (topo); + gp_Pnt g_point = BRep_Tool::Pnt( g_vertex ); + + px = g_point.X(); + py = g_point.Y(); + pz = g_point.Z(); + return HOK; +} +END_NAMESPACE_HEXA + +#else // *************************************************** NO_CASCADE + +BEGIN_NAMESPACE_HEXA +int geom_brep2point (rcstring b, double& x, double& y, double& z) {return HOK;} +int geom_brep2shape (rcstring brep, TopoDS_Shape& shape) {return HOK ; } +TopoDS_Shape geom_brep2shape (rcstring brep) {return O ; } END_NAMESPACE_HEXA #endif diff --git a/src/HEXABLOCK/HexKas_functions.hxx b/src/HEXABLOCK/HexKas_functions.hxx index 42213b8..42bb1f0 100755 --- a/src/HEXABLOCK/HexKas_functions.hxx +++ b/src/HEXABLOCK/HexKas_functions.hxx @@ -23,15 +23,10 @@ #ifndef _KAS_FUNCTIONS_HXX #define _KAS_FUNCTIONS_HXX -#ifndef NO_CASCADE +class gp_Pnt; #include "HexGlobale.hxx" -#include -#include -#include -#include - BEGIN_NAMESPACE_HEXA int geom_create_cylcyl (double* borig, double* bnorm, double* bbase, @@ -42,9 +37,13 @@ int geom_asso_cylcyl (Edge* edge); bool same_coords (gp_Pnt& pa, gp_Pnt& pb, double epsil2=1e-6); void save_brep (cpchar nom, string brep, int& nro); -void geom_make_brep (TopoDS_Shape& shape, string& brep); +void clean_brep (string& brep); + +void geom_make_brep (TopoDS_Shape& shape, string& brep); +int geom_brep2point (rcstring brep, double& px, double& py, double& pz); +int geom_brep2shape (rcstring brep, TopoDS_Shape& shape); + +TopoDS_Shape geom_brep2shape (rcstring brep); END_NAMESPACE_HEXA #endif -#else // NO_CASCADE -#endif // NO_CASCADE diff --git a/src/HEXABLOCK/HexLaw.cxx b/src/HEXABLOCK/HexLaw.cxx index b163739..c4db230 100644 --- a/src/HEXABLOCK/HexLaw.cxx +++ b/src/HEXABLOCK/HexLaw.cxx @@ -25,7 +25,7 @@ BEGIN_NAMESPACE_HEXA int Law::last_law_id = 0; // ================================================== Constructeur -Law::Law (cpchar name, int nbnodes) +Law::Law (Document* dad, cpchar name, int nbnodes) : EltBase (dad, EL_LAW) { nbr_nodes = nbnodes; law_id = last_law_id++; @@ -37,14 +37,15 @@ Law::Law (cpchar name, int nbnodes) if (!_nom.empty()) law_name = _nom; else { - char buffer [16]; - sprintf (buffer, "l%04d", law_id); - law_name = std::string(buffer); + char buffer [16]; + sprintf (buffer, "l%04d", law_id); + law_name = std::string(buffer); } law_type = Uniform; law_coefficient = 0.0; } + // ================================================== Constructeur 2 Law::Law (Law* other) { @@ -52,6 +53,14 @@ Law::Law (Law* other) law_name = other->law_name ; law_type = other->law_type ; law_coefficient = other->law_coefficient; + el_root = other->el_root; +} + +// ========================================================= getNextName +char* Law::getNextName (pchar buffer) +{ + sprintf (buffer, "l%04d", last_law_id); + return buffer; } END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexLaw.hxx b/src/HEXABLOCK/HexLaw.hxx index 19f7105..6ade5fa 100755 --- a/src/HEXABLOCK/HexLaw.hxx +++ b/src/HEXABLOCK/HexLaw.hxx @@ -22,14 +22,16 @@ #ifndef __LAW_H_ #define __LAW_H_ +#include "HexEltBase.hxx" #include "HexXmlWriter.hxx" BEGIN_NAMESPACE_HEXA -class Law +class Law : public EltBase { public: const char* getName () { return law_name.c_str() ; } + char* getNextName (pchar buffer); int getNodes () { return nbr_nodes ; } double getCoefficient () { return law_coefficient ; } KindLaw getKind () { return law_type ; } @@ -40,7 +42,7 @@ public: void setKind (cpchar type); int setName (cpchar nom); - Law (cpchar name, int nbnodes); + Law (Document* dad, cpchar name, int nbnodes); Law (Law* other); void saveXml (XmlWriter* xml); diff --git a/src/HEXABLOCK/HexNewShape.cxx b/src/HEXABLOCK/HexNewShape.cxx new file mode 100755 index 0000000..38f89ca --- /dev/null +++ b/src/HEXABLOCK/HexNewShape.cxx @@ -0,0 +1,560 @@ + +// C++ : Gestion des Shapes (Hexa v5) + +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com + +#include "HexNewShape.hxx" +#include "HexSubShape.hxx" +#include "HexVertexShape.hxx" +#include "HexEdgeShape.hxx" +#include "HexFaceShape.hxx" + +#include "HexQuad.hxx" +#include "HexEdge.hxx" + +#include "HexKas_functions.hxx" + +#include "HexXmlWriter.hxx" +#include "HexXmlTree.hxx" + +#ifndef NO_CASCADE +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + + +#include +#include +#include +#include +#include + + +BEGIN_NAMESPACE_HEXA + +static bool db = on_debug (); // == getenv ("HEXA_DB") > 0 +static bool db0 = true; + +// ====================================================== Constructeur +NewShape::NewShape (Document* dad, EnumShape type) + : EltBase (dad, EL_SHAPE) +{ + sh_origin = type; + brep_defined = shape_defined = false; + + sh_level = sh_indice = 0; + sh_face_max = sh_edge_max = sh_vertex_max = 0; + + curr_subid = 2; +} +// ====================================================== setShape +void NewShape::setShape (const TopoDS_Shape& shape, EnumShape type) +{ + sh_origin = type; + geo_shape = shape; + geo_brep = ""; + + shape_defined = true; + brep_defined = false; + + map_shape .Clear (); + tab_face .clear (); + tab_edge .clear (); + tab_vertex.clear (); + + sh_level = sh_indice = 0; + sh_face_max = sh_edge_max = sh_vertex_max = 0; + + if (db) + cout << " ------------------- setShape " << el_name << endl; + parseShape (geo_shape); +} +// ====================================================== setBrep +void NewShape::setBrep (rcstring brep) +{ + geo_brep = brep; + brep_defined = true; + updateShape (); +} +// ====================================================== getGeoShape +const TopoDS_Shape& NewShape::getGeoShape (int id) +{ + const TopoDS_Shape& shape = map_shape.FindKey (id); + return shape; +} +// ====================================================== getShape +const TopoDS_Shape& NewShape::getShape () +{ + return geo_shape; +} +// ====================================================== openShape +void NewShape::openShape () +{ + geo_builder.MakeCompound (geo_compound); + curr_subid = 2; + + asso_edge.clear (); + asso_pmin.clear (); + asso_pmax.clear (); + asso_edid.clear (); + asso_quad.clear (); + asso_quid.clear (); +} +// ====================================================== addCircle +int NewShape::addCircle (double* milieu, double rayon, double* normale, + double* base) +{ + gp_Pnt gp_center (milieu [dir_x], milieu [dir_y], milieu [dir_z]); + gp_Vec gp_vx (base [dir_x], base [dir_y], base [dir_z]); + gp_Vec gp_norm (normale[dir_x], normale[dir_y], normale[dir_z]); + + gp_Ax2 gp_axes (gp_center, gp_norm, gp_vx); + gp_Circ gp_circ (gp_axes, rayon); + + TopoDS_Edge geom_circ = BRepBuilderAPI_MakeEdge(gp_circ).Edge(); + geo_builder.Add (geo_compound, geom_circ); + + if (db) + cout << " .... AddCircle subid " << curr_subid << " : rayon=" << rayon + << " centre = " << milieu[dir_x] << "," << milieu[dir_y] + << "," << milieu[dir_z] + << " norm = " << normale[dir_x] << "," << normale[dir_y] + << "," << normale[dir_z] + << endl; + + int subid = curr_subid; + curr_subid += 2; + return subid; +} +// ====================================================== addSphere +int NewShape::addSphere (double* milieu, double radius) +{ + gp_Pnt gp_center (milieu [dir_x], milieu [dir_y], milieu [dir_z]); + gp_Ax2 gp_axis (gp_center, gp_Dir(0,0,1), gp_Dir(1,0,0)); + + BRepPrimAPI_MakeSphere make_sphere (gp_axis, radius); + make_sphere.Build(); + TopoDS_Shape geom_sphere = make_sphere.Face(); + geo_builder.Add (geo_compound, geom_sphere); + + if (db) + cout << " .... AddSphere subid " << curr_subid << " : rayon=" << radius + << " centre = " << milieu[dir_x] << "," << milieu[dir_y] + << "," << milieu[dir_z] << endl; + + int subid = curr_subid; + curr_subid += 7; + return subid; +} +// ====================================================== addAssociation +void NewShape::addAssociation (Vertex* vertex, int subid, double param) +{ + if (vertex==NULL) + return; + + asso_vertex.push_back (vertex); + asso_param .push_back (param); + asso_vxid .push_back (subid); +} +// ====================================================== addAssociation +void NewShape::addAssociation (Edge* edge, int subid, double pmin, double pmax) +{ + if (edge==NULL) + return; + + asso_edge.push_back (edge); + asso_pmin.push_back (pmin); + asso_pmax.push_back (pmax); + asso_edid.push_back (subid); +} +// ====================================================== addAssociation +void NewShape::addAssociation (Quad* quad, int subid) +{ + if (quad==NULL) + return; + + asso_quad.push_back (quad); + asso_quid.push_back (subid); +} +// ====================================================== closeShape +void NewShape::closeShape () +{ + geo_shape = geo_compound; + shape_defined = true; + if (db) + cout << " ------------------- closeShape " << el_name << endl; + parseShape (geo_shape); + + int nombre = asso_edge.size (); + for (int nro = 0 ; nro < nombre ; ++nro) + asso_edge[nro]->addAssociation (this, asso_edid[nro], asso_pmin[nro], + asso_pmax[nro]); + nombre = asso_quad.size (); + for (int nro = 0 ; nro < nombre ; ++nro) + asso_quad[nro]->addAssociation (this, asso_quid[nro]); + + Real3 point; + nombre = asso_vertex.size (); + for (int nro = 0 ; nro < nombre ; ++nro) + { + EdgeShape* line = findEdge (asso_vxid[nro]); + Vertex* vertex = asso_vertex[nro]; + if (line!=NULL && vertex!=NULL && NOT vertex->isAssociated()) + { + line->getPoint (asso_param[nro], point); + asso_vertex[nro]->setAssociation (point); + } + } + +} +//--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 +// ====================================================== findVertex +VertexShape* NewShape::findVertex (int shid) +{ + int nbre = tab_vertex.size (); + for (int nro=0 ; nro < nbre ; nro++) + { + VertexShape* shape = tab_vertex [nro]; + if (shape->getIdent() == shid) + return shape; + } + return NULL; +} +// ====================================================== findEdge +EdgeShape* NewShape::findEdge (int shid) +{ + int nbre = tab_edge.size (); + for (int nro=0 ; nro < nbre ; nro++) + { + EdgeShape* shape = tab_edge [nro]; + if (shape->getIdent() == shid) + return shape; + } + return NULL; +} +// ====================================================== findFace +FaceShape* NewShape::findFace (int shid) +{ + int nbre = tab_face.size (); + for (int nro=0 ; nro < nbre ; nro++) + { + FaceShape* shape = tab_face [nro]; + if (shape->getIdent() == shid) + return shape; + } + return NULL; +} +// ====================================================== findSubShape +SubShape* NewShape::findSubShape (int shid) +{ + SubShape* shape = findEdge (shid); + if (shape==NULL) + shape = findVertex (shid); + if (shape==NULL) + shape = findFace (shid); + + return shape; +} +// ====================================================== getVertex +int NewShape::getVertex (int nro) +{ + if (nro <0 || nro >= tab_vertex.size()) + return 0; + + SubShape* shape = tab_vertex [nro]; + return shape->getIdent() ; +} +// ====================================================== getEdge +int NewShape::getEdge (int nro) +{ + if (nro <0 || nro >= tab_edge.size()) + return 0; + + SubShape* shape = tab_edge [nro]; + return shape->getIdent() ; +} +// ====================================================== getFace +int NewShape::getFace (int nro) +{ + if (nro <0 || nro >= tab_face.size()) + return 0; + + SubShape* shape = tab_face [nro]; + return shape->getIdent() ; +} + +// ====================================================== getNameVertex +cpchar NewShape::getNameVertex (int nro) +{ + if (nro <0 || nro >= tab_vertex.size()) + return "?"; + + SubShape* shape = tab_vertex [nro]; + return shape->getName() ; +} +// ====================================================== getNameEdge +cpchar NewShape::getNameEdge (int nro) +{ + if (nro <0 || nro >= tab_edge.size()) + return "?"; + + SubShape* shape = tab_edge [nro]; + return shape->getName() ; +} +// ====================================================== getNameFace +cpchar NewShape::getNameFace (int nro) +{ + if (nro <0 || nro >= tab_face.size()) + return "?"; + + SubShape* shape = tab_face [nro]; + return shape->getName() ; +} +// ====================================================== getFaceShape +FaceShape* NewShape::getFaceShape (int nro) +{ + if (nro <0 || nro >= tab_face.size()) + return 0; + + FaceShape* shape = tab_face [nro]; + return shape; +} +// ====================================================== getEdgeShape +EdgeShape* NewShape::getEdgeShape (int nro) +{ + if (nro <0 || nro >= tab_edge.size()) + return 0; + + EdgeShape* shape = tab_edge [nro]; + return shape; +} +// ====================================================== getVertexShape +VertexShape* NewShape::getVertexShape (int nro) +{ + if (nro <0 || nro >= tab_vertex.size()) + return 0; + + VertexShape* shape = tab_vertex [nro]; + return shape; +} +// ====================================================== addPoint +int NewShape::addPoint (double* point) +{ + char suffix [32]; + int subid = tab_vertex.size() + 1; + + sprintf (suffix, ":vertex%02d", subid); + string name = el_name + suffix; + + VertexShape* sub_shape = new VertexShape (this, subid, point); + sub_shape->setName (name); + tab_vertex.push_back (sub_shape); + return subid; +} +// ===================================================== saveBrep +int NewShape::saveBrep () +{ + string filename = el_name + ".brep"; + + int ier = updateBrep (); + if (ier != HOK) + return ier; + + pfile fic = fopen (filename.c_str(), "w"); + if (fic==NULL) + return HERR; + + fprintf (fic, "%s\n", geo_brep.c_str()); + fclose (fic); +} +// ====================================================== saveXml +void NewShape::saveXml (XmlWriter* xml) +{ + if (sh_origin==SH_CLOUD) + { + int nbre = tab_vertex.size(); + xml->addMark ("Cloud"); + for (int nro=0 ; nrosaveXml (xml); + xml->closeMark (); + return; + } + + char buffer [32]; + int ya1brep = updateBrep (); + + xml->openMark ("Shape"); + xml->addAttribute ("id", getName (buffer)); + xml->addAttribute ("type", sh_origin); + if (el_name!=buffer) + xml->addAttribute ("name", el_name); + + if (ya1brep == HOK) + { + clean_brep (geo_brep); + xml->addAttribute ("brep", geo_brep.c_str()); + } + xml->closeMark (); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// ===================================================== parseShape +void NewShape::parseShape (const TopoDS_Shape& shape) +{ + push_level (); + addSubShape (shape); + + TopoDS_Iterator iter (shape); + for (; iter.More(); iter.Next()) + { + TopoDS_Shape sub_shape = iter.Value(); + parseShape (sub_shape); + } + + pop_level (); +} +// ===================================================== addSubShape +void NewShape::addSubShape (const TopoDS_Shape& shape) +{ + char chnum [32]; + string name; + sh_indice ++; + + int subid = map_shape.Add (shape); + int type = shape.ShapeType(); + + switch (type) + { + case TopAbs_FACE : + sprintf (chnum, ":face_%02d", subid); + name = el_name + chnum; + if (subid > sh_face_max) + { + FaceShape* sub_shape = new FaceShape (this, subid); + sub_shape->setName (name); + tab_face.push_back (sub_shape); + sh_face_max = subid; + } + break; + case TopAbs_EDGE : + sprintf (chnum, ":edge_%02d", subid); + name = el_name + chnum; + if (subid > sh_edge_max) + { + EdgeShape* sub_shape = new EdgeShape (this, subid); + sub_shape->setName (name); + tab_edge.push_back (sub_shape); + sh_edge_max = subid; + } + break; + case TopAbs_VERTEX : + sprintf (chnum, ":vertex_%02d", subid); + name = el_name + chnum; + if (subid > sh_vertex_max) + { + VertexShape* sub_shape = new VertexShape (this, subid); + sub_shape->setName (name); + tab_vertex.push_back (sub_shape); + sh_vertex_max = subid; + } + break; + default : ; + sprintf (chnum, "type=%d, subid=%02d", type, subid); + name = chnum; + } + + if (db0) + { + sprintf (chnum, "%4d : ", sh_indice); + cout << chnum; + for (int nro=1; nro +#include +#include +#include +#endif + +BEGIN_NAMESPACE_HEXA + +class NewShape : public EltBase +{ +public : // for TUI + virtual int countVertex () { return tab_vertex.size (); } + virtual int countEdge () { return tab_edge.size (); } + virtual int countFace () { return tab_face.size (); } + + int getVertex (int nro); + int getEdge (int nro); + int getFace (int nro); + + cpchar getNameVertex (int nro); + cpchar getNameEdge (int nro); + cpchar getNameFace (int nro); + + const string& getBrep (); + const TopoDS_Shape& getShape (); + +public : // for GUI + EnumShape getOrigin () { return sh_origin ; } + VertexShape* getVertexShape (int nro); + EdgeShape* getEdgeShape (int nro); + FaceShape* getFaceShape (int nro); + +public : // for Others + NewShape (Document* dad, EnumShape type=SH_NONE); + void setShape (const TopoDS_Shape& shape, EnumShape type=SH_IMPORT); + void setBrep (rcstring brep); + int addPoint (double* coord); + void addAssociation (Vertex* elt, int subid, double param); + void addAssociation (Edge* elt, int subid, double pmin, double pmax); + void addAssociation (Quad* elt, int subid); + + VertexShape* findVertex (int subid); + EdgeShape* findEdge (int subid); + FaceShape* findFace (int subid); + + SubShape* findSubShape (int subid); + + const TopoDS_Shape& getGeoShape (int subid); + + int saveBrep (); + void saveXml (XmlWriter* xml); + + void openShape (); + int addCircle (double* center, double rad, double* norm, double* base); + int addSphere (double* center, double radius); + void closeShape(); + +private : + int updateShape (); + int updateBrep (); + // ---------------------------- Parcours + void parseShape (const TopoDS_Shape& shape); + void push_level () { sh_level ++ ; } + void pop_level () { sh_level -- ; } + void addSubShape (const TopoDS_Shape& shape); + +private : // ________________________________________________________ + TopoDS_Shape geo_shape; + + EnumShape sh_origin; + string geo_brep; + bool brep_defined, shape_defined; + + TopTools_IndexedMapOfShape map_shape; + std::vector tab_face; + std::vector tab_edge; + std::vector tab_vertex; + + // Pour Construire les shapes internes + int curr_subid; + TopoDS_Compound geo_compound; + BRep_Builder geo_builder; + + std::vector asso_vertex; + Quads asso_quad; + Edges asso_edge; + RealVector asso_pmin, asso_pmax, asso_param; + IntVector asso_edid, asso_quid, asso_vxid; + // Pour le parsing + int sh_level; + int sh_indice; + int sh_face_max; + int sh_edge_max; + int sh_vertex_max; +}; +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexOldShape.hxx b/src/HEXABLOCK/HexOldShape.hxx new file mode 100755 index 0000000..109632a --- /dev/null +++ b/src/HEXABLOCK/HexOldShape.hxx @@ -0,0 +1,25 @@ + +// class : Gestion des formes associees + +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef __OLD_SHAPE_H_ +#define __OLD_SHAPE_H_ +#include "HexShape.hxx" +#endif diff --git a/src/HEXABLOCK/HexPipe.cxx b/src/HEXABLOCK/HexPipe.cxx index dbe0755..5b60f6b 100755 --- a/src/HEXABLOCK/HexPipe.cxx +++ b/src/HEXABLOCK/HexPipe.cxx @@ -20,6 +20,8 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "HexPipe.hxx" + +#include "HexDocument.hxx" #include "HexVertex.hxx" #include "HexVector.hxx" #include "HexXmlWriter.hxx" diff --git a/src/HEXABLOCK/HexQuad.cxx b/src/HEXABLOCK/HexQuad.cxx index a075aa0..e5ab815 100755 --- a/src/HEXABLOCK/HexQuad.cxx +++ b/src/HEXABLOCK/HexQuad.cxx @@ -24,12 +24,16 @@ #include "HexDocument.hxx" #include "HexHexa.hxx" #include "HexElements.hxx" +#include "HexGlobale.hxx" #include "HexXmlWriter.hxx" -#include "HexShape.hxx" +#include "HexNewShape.hxx" +#include "HexFaceShape.hxx" BEGIN_NAMESPACE_HEXA +bool db = false; + // ======================================================== Constructeur Quad::Quad (Vertex* va, Vertex* vb, Vertex* vc, Vertex* vd) : EltBase (va->dad(), EL_QUAD) @@ -43,7 +47,7 @@ Quad::Quad (Vertex* va, Vertex* vb, Vertex* vc, Vertex* vd) for (int nro=0 ; nro inter (q_edge[prec]); if (nc>=0) node = q_edge[nro]->getVertex (nc); - else + else setError (888); } q_vertex [prec] = node; @@ -96,7 +100,7 @@ Quad::Quad (Edge* ea, Edge* eb, Edge* ec, Edge* ed) dump (); printf (" +++++++++++++++++++++++++++++++++++++++++++ \n"); // el_root->dump (); - for (int ned=0; neddumpPlus (); } @@ -111,7 +115,7 @@ Quad::Quad (Edge* ea, Edge* eb, Edge* ec, Edge* ed) majReferences (); } -// ======================================================== Constructeur bis +// ======================================================== Constructeur ter Quad::Quad (Quad* other) : EltBase (other->dad(), EL_QUAD) { @@ -123,13 +127,35 @@ Quad::Quad (Quad* other) q_orientation = Q_UNDEFINED; q_clone = NULL; } -// ========================================================= majReferences +// ============================================================ getEdge +Edge* Quad::getEdge (int nro) +{ + Edge* elt = NULL; + if (nro >=0 && nro < QUAD4 && el_status == HOK && q_edge [nro]->isValid()) + elt = q_edge [nro]; + + DumpStart ("getEdge", nro); + DumpReturn (elt); + return elt; +} +// ============================================================ getVertex +Vertex* Quad::getVertex (int nro) +{ + Vertex* elt = NULL; + if (nro >=0 && nro < QUAD4 && el_status == HOK && q_vertex [nro]->isValid()) + elt = q_vertex [nro]; + + DumpStart ("getVertex", nro); + DumpReturn (elt); + return elt; +} +// ========================================================= majReferences void Quad::majReferences () { for (int nro=0 ; nro addParent (this); } -// ========================================================= getParent +// ========================================================= getParent Hexa* Quad::getParent (int nro) { return static_cast (getFather (nro)); @@ -148,7 +174,7 @@ int Quad::anaMerge (Vertex* v1, Vertex* v2, Vertex* tv1[], Edge* te1[]) int nsp1 = (orig+1) MODULO QUAD4; int nsm1 = (orig+QUAD4-1) MODULO QUAD4; - if (q_vertex [nsp1] == v2) + if (q_vertex [nsp1] == v2) { for (int nro=0 ; nro < QUAD4 ; nro++) { @@ -156,7 +182,7 @@ int Quad::anaMerge (Vertex* v1, Vertex* v2, Vertex* tv1[], Edge* te1[]) te1 [nro] = q_edge [(orig+nro) MODULO QUAD4]; } } - else if (q_vertex [nsm1] == v2) + else if (q_vertex [nsm1] == v2) { for (int nro=0 ; nro < QUAD4 ; nro++) { @@ -164,7 +190,7 @@ int Quad::anaMerge (Vertex* v1, Vertex* v2, Vertex* tv1[], Edge* te1[]) te1 [nro] = q_edge [(orig+QUAD4-nro) MODULO QUAD4]; } } - else + else return 588; return HOK; @@ -183,17 +209,17 @@ int Quad::ordoVertex (Vertex* v1, Vertex* v2, Vertex* tv1[]) int nsp1 = (orig+1) MODULO QUAD4; int nsm1 = (orig+QUAD4-1) MODULO QUAD4; - if (q_vertex [nsp1] == v2) + if (q_vertex [nsp1] == v2) { for (int nro=0 ; nro < QUAD4 ; nro++) tv1 [nro] = q_vertex [(orig+nro) MODULO QUAD4]; } - else if (q_vertex [nsm1] == v2) + else if (q_vertex [nsm1] == v2) { for (int nro=0 ; nro < QUAD4 ; nro++) tv1 [nro] = q_vertex [(orig+QUAD4-nro) MODULO QUAD4]; } - else + else return 588; return HOK; @@ -224,8 +250,8 @@ Quad* Quad::getBrother (StrOrient* orient) break; case OR_RIGHT : n21 = n22 + sens; break; - case OR_FRONT : n21 += 2; - n22 += 2; + case OR_FRONT : n21 += 2; + n22 += 2; break; default : ; } @@ -262,7 +288,7 @@ Quad* Quad::getBrother (StrOrient* orient) // ======================================================== coupler int Quad::coupler (Quad* other, StrOrient* orient, Elements* table) { - if (other==NULL) + if (other==NULL) return HERR; Hexa* hexa = other->getParent(0); @@ -274,8 +300,8 @@ int Quad::coupler (Quad* other, StrOrient* orient, Elements* table) for (int ned = 0 ; ned < QUAD4 ; ned++) { - Edge* arete = q_edge[ned]; - int nbfreres = arete ->getNbrParents (); + Edge* arete = q_edge[ned]; + int nbfreres = arete ->getNbrParents (); for (int nq = 0 ; nq < nbfreres ; nq++) { Quad* next = arete->getParent (nq); @@ -283,8 +309,8 @@ int Quad::coupler (Quad* other, StrOrient* orient, Elements* table) { StrOrient new_ori (orient); new_ori.dir = OR_FRONT; - Vertex* va = arete->getVertex (V_AMONT); - Vertex* vb = arete->getVertex (V_AVAL); + Vertex* va = arete->getVertex (V_AMONT); + Vertex* vb = arete->getVertex (V_AVAL); // On voit si un point de repere est conserve if (va == orient->v11) @@ -371,6 +397,7 @@ Edge* Quad::getOpposEdge (Edge* start, int& sens) } // TODO : traiter l'erreur cout << " ... Probleme dans Quad::getOpposedEdge :" << endl; + HexDisplay (el_name); PutName (start); PutName (vaprim); PutName (vbprim); @@ -398,21 +425,21 @@ void Quad::saveXml (XmlWriter* xml) xml->openMark ("Quad"); xml->addAttribute ("id", getName (buffer)); xml->addAttribute ("edges", edges); - if (el_name!=buffer) + if (el_name!=buffer) xml->addAttribute ("name", el_name); xml->closeMark (); int nbass = tab_assoc.size(); for (int nro=0 ; nrosaveXml (xml); + tab_assoc[nro]->saveXml (xml); } // ======================================================== replaceEdge void Quad::replaceEdge (Edge* old, Edge* par) { for (int nro=0 ; nro ZEROR ? Q_DIRECT : Q_INVERSE; - printf (" %s = %s\n", el_name.c_str(), t_ori [ q_orientation ]); + if (db) + printf (" %s = %s\n", el_name.c_str(), t_ori [ q_orientation ]); return q_orientation; } -// ========================================================== setAssociation -void Quad::setAssociation (Shape* forme) +// ========================================================== clearAssociation +void Quad::clearAssociation () { - clearAssociation (); - addAssociation (forme); + tab_assoc.clear (); + is_associated = false; } -END_NAMESPACE_HEXA +// ========================================================== addAssociation +int Quad::addAssociation (NewShape* geom, int subid) +{ + if (geom == NULL) + return HERR; + + FaceShape* face = geom->findFace (subid); + int ier = addAssociation (face); + + return ier; +} +// ========================================================== addAssociation +int Quad::addAssociation (FaceShape* face) +{ + if (face == NULL) + return HERR; + face->addAssociation (this); + tab_assoc.push_back (face); + is_associated = true; + return HOK; +} +// ========================================================== getAssociation +FaceShape* Quad::getAssociation (int nro) +{ + if (nro < 0 || nro >= tab_assoc.size()) + return NULL; + + return tab_assoc [nro]; +} +END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexQuad.hxx b/src/HEXABLOCK/HexQuad.hxx index 812c034..2d694fb 100755 --- a/src/HEXABLOCK/HexQuad.hxx +++ b/src/HEXABLOCK/HexQuad.hxx @@ -48,9 +48,9 @@ public: virtual Edge* getEdge (int nro); virtual Vertex* getVertex (int nro); - virtual int countEdge () { return QUAD4; } - virtual int countVertex () { return QUAD4; } - + virtual int countEdge () { return QUAD4; } + virtual int countVertex () { return QUAD4; } + public: Quad (Vertex* va, Vertex* vb, Vertex* vc, Vertex* vd); Quad (Edge* ea, Edge* eb, Edge* ec, Edge* ed); @@ -89,66 +89,46 @@ public: virtual void replaceEdge (Edge* old, Edge* nouveau); virtual void replaceVertex (Vertex* old, Vertex* nouveau); - virtual void setAssociation (Shape* forme); - virtual int addAssociation (Shape* forme); - virtual void clearAssociation () { tab_assoc.clear() ; } - virtual bool isAssociated () { return tab_assoc.size() > 0 ; } + virtual void setAssociation (Shape* forme) {} // PERIME + virtual int addAssociation (Shape* forme) {return HOK ; } // PERIME + + virtual void clearAssociation (); - const Shapes& getAssociations () { return tab_assoc ; } + // const Shapes& getAssociations () { return tab_shapes ; } virtual void duplicate (); Quad* getClone () { return q_clone ; } - Edge* getOpposEdge (Edge* arete); // Version simplifiee - Edge* getPerpendicular (Edge* arete, Vertex* node); + Edge* getOpposEdge (Edge* arete); // Version simplifiee + Edge* getPerpendicular (Edge* arete, Vertex* node); int getOrientation () { return q_orientation; } int setOrientation (); void setOrientation (int ori); + // Hexa5 + int addAssociation (NewShape* forme, int subid); + int addAssociation (FaceShape* forme); + int countAssociation () { return tab_assoc.size () ; } + FaceShape* getAssociation (int nro); private: friend class Cloner; Quad* getBrother (StrOrient* orient); - + private: Edge* q_edge [QUAD4]; Vertex* q_vertex [QUAD4]; Quad* q_clone; - int q_orientation; + int q_orientation; - Shapes tab_assoc; + FaceShapes tab_assoc; }; // ----------------------------------------------- Inlining -// ========================================================== addAssociation -inline int Quad::addAssociation (Shape* forme) -{ - if (forme != NULL) - tab_assoc.push_back (forme); - return HOK; -} -// ============================================================ getEdge -inline Edge* Quad::getEdge (int nro) -{ - Edge* elt = NULL; - if (nro >=0 && nro < QUAD4 && el_status == HOK && q_edge [nro]->isValid()) - elt = q_edge [nro]; - - return elt; -} -// ============================================================ getVertex -inline Vertex* Quad::getVertex (int nro) -{ - Vertex* elt = NULL; - if (nro >=0 && nro < QUAD4 && el_status == HOK && q_vertex [nro]->isValid()) - elt = q_vertex [nro]; - - return elt; -} // ======================================================== commonEdge inline Edge* Quad::commonEdge (Quad* other) { - for (int ne1=0 ; ne1q_edge [ne2]) return q_edge [ne1]; @@ -158,8 +138,8 @@ inline Edge* Quad::commonEdge (Quad* other) // ======================================================== Inter inline int Quad::inter (Quad* other, int& nother) { - for (int ne1=0 ; ne1q_edge [ne2]) { nother = ne2; @@ -204,7 +184,7 @@ inline Edge* Quad::findEdge (Vertex* v1, Vertex* v2) inline int Quad::indexVertex (Vertex* elt) { for (int n1=0 ; n1< QUAD4 ; n1++) - if (elt == q_vertex[n1]) + if (elt == q_vertex[n1]) return n1; return NOTHING; @@ -213,7 +193,7 @@ inline int Quad::indexVertex (Vertex* elt) inline int Quad::indexEdge (Edge* elt) { for (int n1=0 ; n1< QUAD4 ; n1++) - if (elt == q_edge[n1]) + if (elt == q_edge[n1]) return n1; return NOTHING; @@ -228,11 +208,11 @@ inline void Quad::setScalar (double val) inline void Quad::duplicate () { q_orientation = Q_UNDEFINED; - q_clone = new Quad (GetClone (q_edge [E_A]), - GetClone (q_edge [E_B]), - GetClone (q_edge [E_C]), + q_clone = new Quad (GetClone (q_edge [E_A]), + GetClone (q_edge [E_B]), + GetClone (q_edge [E_C]), GetClone (q_edge [E_D])); - q_clone->tab_assoc = tab_assoc; + q_clone->tab_assoc = tab_assoc; } END_NAMESPACE_HEXA #endif diff --git a/src/HEXABLOCK/HexShape.cxx b/src/HEXABLOCK/HexShape.cxx index 7527cee..0c3b5da 100755 --- a/src/HEXABLOCK/HexShape.cxx +++ b/src/HEXABLOCK/HexShape.cxx @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "HexShape.hxx" +#include "HexOldShape.hxx" #include "HexXmlWriter.hxx" BEGIN_NAMESPACE_HEXA @@ -33,12 +33,15 @@ Shape::Shape (string brep) fin = 1; ident = ""; } +void clean_brep (string& brep); // ====================================================== saveXml void Shape::saveXml (XmlWriter* xml) { char interval [80]; sprintf (interval, "%g %g", debut, fin); + clean_brep (b_rep); // Test Abu + xml->openMark ("Shape"); xml->addAttribute ("interval", interval); xml->addAttribute ("ident", ident.c_str()); diff --git a/src/HEXABLOCK/HexShape.hxx b/src/HEXABLOCK/HexShape.hxx index 7d46322..1cfaf02 100755 --- a/src/HEXABLOCK/HexShape.hxx +++ b/src/HEXABLOCK/HexShape.hxx @@ -32,7 +32,7 @@ class Shape public : Shape (string brep); string getBrep () { return b_rep; } - string getName () { return ident; } + string getIdent () { return ident; } string getIor () { return ior; } double getStart () { return debut; } @@ -40,7 +40,7 @@ public : void getBounds (double& pdeb, double& pfin) { pdeb=debut ; pfin = fin; } void setBrep (string brep) { b_rep = brep; } - void setName (string name) { ident = name; } + void setIdent (string name) { ident = name; } void setIor (string val) { ior = val; } void setBounds (double pdeb, double pfin) { debut = pdeb ; fin = pfin; } @@ -49,13 +49,12 @@ public : void saveXml (XmlWriter* xml); -public : +private : double debut; double fin; string ident; string ior; -private : std::string b_rep; }; END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexSubShape.cxx b/src/HEXABLOCK/HexSubShape.cxx new file mode 100755 index 0000000..16c1ce5 --- /dev/null +++ b/src/HEXABLOCK/HexSubShape.cxx @@ -0,0 +1,83 @@ + +// C++ : Gestion des soous-shapes + +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com +// + +#include "HexSubShape.hxx" +#include "HexNewShape.hxx" +#include "HexXmlWriter.hxx" + +#ifndef NO_CASCADE + +#include +#include +#include + +BEGIN_NAMESPACE_HEXA + +static bool db = on_debug (); // == getenv ("HEXA_DB") > 0 + +// ====================================================== Constructeur +SubShape::SubShape (NewShape* dad, int id, int dim) + : EltBase (dad->dad(), EL_SUBSHAPE) +{ + ss_parent = dad; + sub_ident = id; + sub_dim = dim; + maj_brep = maj_shape = true; +} +// ====================================================== updateShape +const TopoDS_Shape& SubShape::getShape () +{ + if (maj_shape) + updateShape (); + return geo_shape; +} +// ====================================================== getParentName +cpchar SubShape::getParentName () const +{ + if (ss_parent==NULL) + return ""; + + return ss_parent->getName(); +} +// ========================================================= saveXml +void SubShape::saveXml (XmlWriter* xml) +{ + callXml (xml); + xml->closeMark (); +} +// ========================================================= callXml +void SubShape::callXml (XmlWriter* xml) +{ + xml->openMark ("Asso"); + xml->addAttribute ("shape", getParentName()); + xml->addAttribute ("subid", getIdent()); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// ====================================================== updateShape +void SubShape::updateShape () +{ + maj_shape = false; + geo_shape = ss_parent->getGeoShape (sub_ident); +} +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexSubShape.hxx b/src/HEXABLOCK/HexSubShape.hxx new file mode 100644 index 0000000..032046d --- /dev/null +++ b/src/HEXABLOCK/HexSubShape.hxx @@ -0,0 +1,46 @@ + +// class : Gestion des formes associees (Hexa 5) + +#ifndef __SUB_SHAPE_H_ +#define __SUB_SHAPE_H_ + + + +#include "HexEltBase.hxx" + +#ifndef NO_CASCADE +#include +#endif + +BEGIN_NAMESPACE_HEXA + +class SubShape : public EltBase +{ +public : + SubShape (NewShape* dad, int id, int dim); + NewShape* getParentShape() const { return ss_parent; } + cpchar getParentName () const; + int getIdent () { return sub_ident ; } + int getDim () { return sub_dim ; } + + const string& getBrep (); + const TopoDS_Shape& getShape (); + + void saveXml (XmlWriter* xml); + void callXml (XmlWriter* xml); + +protected : + void updateShape (); + void updateBrep (); + +protected : + NewShape* ss_parent; + int sub_ident; + int sub_dim; // 0 = point, 1 = arete, 2 = face; + + TopoDS_Shape geo_shape; + string geo_brep; + bool maj_brep, maj_shape; +}; +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexVertex.cxx b/src/HEXABLOCK/HexVertex.cxx index 0c6bee6..8226f8b 100755 --- a/src/HEXABLOCK/HexVertex.cxx +++ b/src/HEXABLOCK/HexVertex.cxx @@ -25,10 +25,16 @@ #include "HexVector.hxx" #include "HexXmlWriter.hxx" -#include "HexShape.hxx" +#include "HexDocument.hxx" +#include "HexOldShape.hxx" +#include "HexNewShape.hxx" +#include "HexVertexShape.hxx" +#include "HexKas_functions.hxx" BEGIN_NAMESPACE_HEXA +static bool db = on_debug (); // == getenv ("HEXA_DB") > 0 + // ====================================================== Constructeur Vertex::Vertex (Document* doc, double x, double y, double z) : EltBase (doc, EL_VERTEX) @@ -37,38 +43,47 @@ Vertex::Vertex (Document* doc, double x, double y, double z) gc_y = v_y = y; gc_z = v_z = z; + v_shape = NULL; v_scalar = 0; v_clone = NULL; } -// ========================================================= getParent +// ========================================================= getParent Edge* Vertex::getParent (int nro) { return static_cast (getFather (nro)); } -// ========================================================= saveXml +// ========================================================= saveXml void Vertex::saveXml (XmlWriter* xml) { char buffer[12], coord[80]; - sprintf (coord, "%g %g %g", v_x,v_y,v_z); + sprintf (coord, "%g %g %g", v_x, v_y, v_z); xml->openMark ("Vertex"); xml->addAttribute ("id", getName (buffer)); xml->addAttribute ("coord", coord); - if (el_name!=buffer) + if (el_name!=buffer) xml->addAttribute ("name", el_name); - if (el_assoc!=NULL) - xml->addAttribute ("shape", el_assoc->getBrep().c_str()); xml->closeMark (); + + if (v_shape != NULL) + { + sprintf (coord, "%g %g %g", gc_x, gc_y, gc_z); + v_shape->callXml (xml); + xml->addAttribute ("coord", coord); + xml->closeMark (); + } + +// if (el_assoc!=NULL) xml->addAttribute ("shape", el_assoc->getBrep().c_str()); } -// ========================================================= translate +// ========================================================= translate void Vertex::translate (Vector* vecteur, double fact) { v_x += fact*vecteur->getDx (); v_y += fact*vecteur->getDy (); v_z += fact*vecteur->getDz (); } -// ========================================================= createMiddle +// ========================================================= createMiddle Vertex* Vertex::createMiddle (Vertex* left, Vertex* right) { Vertex* milieu = new Vertex (left); @@ -79,4 +94,77 @@ Vertex* Vertex::createMiddle (Vertex* left, Vertex* right) return milieu; } +// ========================================================= setAssociation +int Vertex::setAssociation (VertexShape* forme) +{ + if (forme==NULL) + return HERR; + + forme->addAssociation (this); + forme->getCoords (gc_x, gc_y, gc_z); + v_shape = forme; + + if (db) cout << " Vertex " << el_name + << " setAssociation-> " << forme->getName () + << " = (" << gc_x << ", " << gc_y << ", " << gc_z << ") \n" ; + + is_associated = true; + return HOK; +} +// ========================================================= setAssociation +int Vertex::setAssociation (NewShape* geom, int subid) +{ + if (geom==NULL) + return HERR; + + VertexShape* shape = geom->findVertex (subid); + if (shape==NULL) + return HERR; + + int ier = setAssociation (shape); + return ier; +} +// ========================================================= setAssociation +int Vertex::setAssociation (double* point) +{ + NewShape* cloud = el_root->getCloud(); + + int subid = cloud->addPoint (point); + int ier = setAssociation (cloud, subid); + return ier; +} +// ========================================================= setAssociation +int Vertex::setAssociation (double px, double py, double pz) +{ + Real3 point = { px, py, pz }; + int ier = setAssociation (point); + return ier; +} +// ========================================================= clearAssociation +void Vertex::clearAssociation () +{ + v_shape = NULL; + is_associated = false; +} +// ========================================================= getAssoCoord +void Vertex::getAssoCoord (double &px, double &py, double &pz) +{ + if (is_associated) + { + px = gc_x; + py = gc_y; + pz = gc_z; + } + else + { + px = v_x; + py = v_y; + pz = v_z; + } +} +// ========================================================= getAssoCoord +void Vertex::getAssoCoord (double* point) +{ + getAssoCoord (point[dir_x], point[dir_y], point[dir_z]); +} END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/HexVertex.hxx b/src/HEXABLOCK/HexVertex.hxx index 6cd017f..612ee57 100755 --- a/src/HEXABLOCK/HexVertex.hxx +++ b/src/HEXABLOCK/HexVertex.hxx @@ -1,5 +1,5 @@ -// Class : Gestion des sommets +// Class : Gestion des sommets // Copyright (C) 2009-2012 CEA/DEN, EDF R&D // @@ -27,7 +27,7 @@ BEGIN_NAMESPACE_HEXA -class Vertex : public EltBase +class Vertex : public EltBase { public : double getX() { return v_x; } @@ -42,12 +42,27 @@ public : void setX (double v) { v_x = v ; } void setY (double v) { v_y = v ; } void setZ (double v) { v_z = v ; } - - void assoCoord (double x, double y, double z); - void assoCoord (double* pnt); + + virtual void setAssociation (Shape* forme) {} // PERIME + // Hexa5 + int setAssociation (NewShape* geom, int subid); + int setAssociation (VertexShape* forme); + int setAssociation (double* point); + int setAssociation (double px, double py, double pz); + void clearAssociation (); + + VertexShape* getAssoVertex () { return v_shape ;} + VertexShape* getAssociation () { return v_shape ;} + + void getAssoCoord (double &x, double &y, double &z); + void getAssoCoord (double* point); + + double getAssoX () { return is_associated ? gc_x : v_x ; } + double getAssoY () { return is_associated ? gc_y : v_y ; } + double getAssoZ () { return is_associated ? gc_z : v_z ; } public : - Vertex (Document* prev, double x=0.0, double y=0.0, double z=0.0); + Vertex (Document* prev, double x=0.0, double y=0.0, double z=0.0); Vertex (Document* cible, Vertex* other); Vertex (Vertex* other); virtual ~Vertex () {} @@ -60,9 +75,11 @@ public : double* getPoint (double point[]); void setCoord (double x, double y, double z); - bool isin (double xmin, double xmax, double ymin, double ymax, + void setCoord (double point[]) { setCoord (point[0], point[1], point[2]); } + + bool isin (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax); - Edge* getParent (int nro); + Edge* getParent (int nro); Vertex* makeSymetric (Vertex* other); void translate (Vector* vecteur, double fact=1.0); void replace (Vertex* old); @@ -81,9 +98,9 @@ private : double v_scalar; Vertex* v_clone; double gc_x, gc_y, gc_z; - bool gc_ass; + VertexShape* v_shape; }; -// ========================================================= Constructeur bis +// ========================================================= Constructeur bis inline Vertex::Vertex (Vertex* other) : EltBase (other->dad(), EL_VERTEX) { @@ -93,35 +110,33 @@ inline Vertex::Vertex (Vertex* other) v_y = other->v_y; v_z = other->v_z; v_scalar = other->v_scalar; - gc_ass = other->gc_ass; gc_x = other->gc_x; gc_y = other->gc_y; gc_z = other->gc_z; } - else + else { v_x = v_y = v_z = 0; gc_x = gc_y = gc_z = 0; v_scalar = 0; - gc_ass = false; } } // ===================================================== getCoord -inline double Vertex::getCoord (int dir) +inline double Vertex::getCoord (int dir) { double val = 0; switch (dir) { - case dir_x : val = v_x; + case dir_x : val = v_x; break; - case dir_y : val = v_y; + case dir_y : val = v_y; break; - case dir_z : val = v_z; + case dir_z : val = v_z; break; } return val; } -// ========================================================= dump +// ========================================================= dump inline void Vertex::dump () { printName (" = "); @@ -134,28 +149,15 @@ inline void Vertex::dump () printf ("(%g, %g, %g)", v_x,v_y,v_z); dumpRef (); } -// ========================================================= setCoord +// ========================================================= setCoord inline void Vertex::setCoord (double x, double y, double z) { v_x = x; v_y = y; v_z = z; } -// ========================================================= assoCoord -inline void Vertex::assoCoord (double* coord) -{ - assoCoord (coord[dir_x], coord[dir_y], coord[dir_z]); -} -// ========================================================= assoCoord -inline void Vertex::assoCoord (double x, double y, double z) -{ - gc_ass = true; - gc_x = x; - gc_y = y; - gc_z = z; -} -// ========================================================= isin -inline bool Vertex::isin (double xmin, double xmax, double ymin, double ymax, +// ========================================================= isin +inline bool Vertex::isin (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) { bool rep = v_x >= xmin && v_x <= xmax @@ -171,13 +173,13 @@ inline double* Vertex::getPoint (double point[]) point [dir_z] = v_z; return point; } -// ========================================================= duplicate +// ========================================================= duplicate inline void Vertex::duplicate (Document* cible) { v_clone = new Vertex (cible, v_x, v_y, v_z); v_clone->v_scalar = v_scalar; } -// ========================================================= duplicate +// ========================================================= duplicate inline bool Vertex::definedBy (double px, double py, double pz, double eps2) { double dist2 = carre (v_x-px) + carre (v_y-py) + carre (v_z-pz); diff --git a/src/HEXABLOCK/HexVertexShape.cxx b/src/HEXABLOCK/HexVertexShape.cxx new file mode 100755 index 0000000..f484e67 --- /dev/null +++ b/src/HEXABLOCK/HexVertexShape.cxx @@ -0,0 +1,115 @@ + +// C++ : Gestion des soous-shapes + +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com +// + +#include "HexVertexShape.hxx" +#include "HexXmlWriter.hxx" + +#ifndef NO_CASCADE + +#include +#include +#include +#include +#include +#include + +BEGIN_NAMESPACE_HEXA + +// static bool db = on_debug (); // == getenv ("HEXA_DB") > 0 + +// ====================================================== Constructeur +VertexShape::VertexShape (NewShape* dad, int id) + : SubShape (dad, id, 0) +{ + free_point = false; + maj_coords = true; + ss_coord[dir_x] = ss_coord[dir_y] = ss_coord[dir_z] = 0; + + // Les coordonnées + updateCoords (); +} +// ====================================================== Constructeur bis* +VertexShape::VertexShape (NewShape* dad, int id, double* point) + : SubShape (dad, id, 0) +{ + free_point = true; + maj_coords = false; + maj_shape = false; + for (int nc=dir_x ; nc<=dir_z ; ++nc) + ss_coord[nc] = point[nc]; +} +// ====================================================== updateCoords +void VertexShape::updateCoords () +{ + if (free_point) + return; + if (maj_shape) + updateShape (); + + maj_coords = false; + TopoDS_Vertex gver = TopoDS::Vertex (geo_shape); + gp_Pnt gpoint = BRep_Tool::Pnt (gver); + + ss_coord [dir_x] = gpoint.X(); + ss_coord [dir_y] = gpoint.Y(); + ss_coord [dir_z] = gpoint.Z(); +} +// ====================================================== getCoords +void VertexShape::getCoords (double& px, double& py, double& pz) +{ + if (maj_coords) + updateCoords (); + + px = ss_coord[dir_x]; + py = ss_coord[dir_y]; + pz = ss_coord[dir_z]; +} +// ====================================================== addAssociation +void VertexShape::addAssociation (Vertex* elt) +{ + tab_assoc.push_back (elt); + is_associated = true ; +} +// ====================================================== getAssociation +Vertex* VertexShape::getAssociation (int nro) +{ + if (nro>0 && nroopenMark ("Vertex"); + xml->addAttribute ("subid", sub_ident); + xml->addAttribute ("coord", coord); + xml->closeMark (); +} +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexVertexShape.hxx b/src/HEXABLOCK/HexVertexShape.hxx new file mode 100644 index 0000000..4a384d2 --- /dev/null +++ b/src/HEXABLOCK/HexVertexShape.hxx @@ -0,0 +1,34 @@ + +// class : Gestion des Sous-shapes categorie Vertex + +#ifndef __NODE_SHAPE_H_ +#define __NODE_SHAPE_H_ + +#include "HexSubShape.hxx" + +BEGIN_NAMESPACE_HEXA + +class VertexShape : public SubShape +{ +public : + VertexShape (NewShape* dad, int id); + VertexShape (NewShape* dad, int id, double* point); + + void addAssociation (Vertex* elt); + int countAssociation () { return tab_assoc.size(); } + Vertex* getAssociation (int nro); + + void getCoords (double& px, double& py, double& pz); + void saveXml (XmlWriter* xml); + +private : + void updateCoords (); + +private : + Real3 ss_coord; // Pour les vertex + bool maj_coords; + bool free_point; + vector tab_assoc; +}; +END_NAMESPACE_HEXA +#endif diff --git a/src/HEXABLOCK/HexXmlTree.cxx b/src/HEXABLOCK/HexXmlTree.cxx index 99995dd..08c429e 100755 --- a/src/HEXABLOCK/HexXmlTree.cxx +++ b/src/HEXABLOCK/HexXmlTree.cxx @@ -26,7 +26,7 @@ BEGIN_NAMESPACE_HEXA enum { HEND_FILE = -2, HEND_LINE = -1, CRLF = 13 }; -// ====================================================== Constructeur +// ====================================================== Constructeur XmlTree::XmlTree (const string& nom, XmlTree* dad) { item_name = nom; @@ -79,6 +79,23 @@ const string& XmlTree::findValue (const string& nom) } return item_vide; } +// ====================================================== findInteger +int XmlTree::findInteger (const string& nom) +{ + int val = 0; + const string chnum = findValue (nom); + if (chnum==item_vide) + return val; + + int lg = chnum.size(); + for (int nc=0 ; nc= '0' && car <= '9') + val = 10*val + car - '0'; + } + return val; +} // ====================================================== parseFile int XmlTree::parseFile (const string& ficnom) { @@ -93,7 +110,7 @@ int XmlTree::parseFile (const string& ficnom) xml_file = fopen (ficnom.c_str(), "r"); if (xml_file==NULL) { - cout << " **** Fichier XML '" << ficnom << "' inaccessible" + cout << " **** Fichier XML '" << ficnom << "' inaccessible" << endl; return HERR; } @@ -101,18 +118,19 @@ int XmlTree::parseFile (const string& ficnom) int ier = parseXml (); return ier; } -// ====================================================== parseFlow -int XmlTree::parseFlow (cpchar flux) +// ====================================================== parseStream +int XmlTree::parseStream (cpchar flux, int& posit) { fic_buffer = ""; len_buffer = 0; nro_ligne = 0; fic_pos = 1988; - xml_flow = flux; - pos_flow = 0; + xml_flow = flux; + pos_flow = posit; - int ier = parseXml (); + int ier = parseXml (); + posit = pos_flow; return ier; } // ====================================================== parseXml @@ -128,11 +146,11 @@ int XmlTree::parseXml () string nom, valeur, foo; while ((item_lu=readItem (nom)) != M_NONE) { - switch (item_lu) + switch (item_lu) { case M_BEGIN : item_lu = getItem (nom, M_IDENT); - if (etat==M_PREMS) + if (etat==M_PREMS) setName (nom); else node = node -> addChild (nom); @@ -140,21 +158,23 @@ int XmlTree::parseXml () break; case M_END : - if (etat != M_BALISE_OUVERTE) + if (etat != M_BALISE_OUVERTE) putError (" balise ouverte"); etat = M_NEUTRE; break; case M_BEGIN_CLOSE : - if (etat == M_BALISE_OUVERTE) + if (etat == M_BALISE_OUVERTE) putError (" balise ouverte"); getItem (nom, M_IDENT); getItem (foo, M_END); node = node -> getParent (); + if (node==NULL) + return HOK; break; case M_CLOSE : - if (etat != M_BALISE_OUVERTE) + if (etat != M_BALISE_OUVERTE) putError (" balise deja fermee"); node = node -> getParent (); etat = M_NEUTRE; @@ -187,7 +207,7 @@ EnumItem XmlTree::getItem (string& value, EnumItem waited) { EnumItem item = readItem (value); - if (item == waited) + if (item == waited) return item; putError ("Erreur de sequence"); return item; @@ -202,7 +222,7 @@ EnumItem XmlTree::readItem (string& value) if (fic_pos>=len_buffer) { int ier=readLine (); - if (ier==HEND_FILE) + if (ier==HEND_FILE) return M_NONE; } else @@ -232,17 +252,17 @@ EnumItem XmlTree::readItem (string& value) } else if (car=='<') { - if (ncar=='/') + if (ncar=='/') { fic_pos++; return M_BEGIN_CLOSE; } - else if (ncar=='?') + else if (ncar=='?') { fic_pos++; return M_PROLOG; } - else if (ncar=='!') + else if (ncar=='!') { fic_pos++; return M_COMMENT; @@ -288,7 +308,7 @@ int XmlTree::goTo (cpchar ouca) pos = 0; else if (pos 0) @@ -357,7 +377,7 @@ int XmlTree::readLine () xml_ended = true; ier = HOK; } - else + else { xml_ended = true; ier = HEND_FILE; @@ -369,7 +389,7 @@ int XmlTree::readLine () void XmlTree::putError (cpchar mess) { printf (" ***** Erreur : %s\n", mess); - printf (" +++ Derniere ligne lue : nro %d, %deme caractere\n", + printf (" +++ Derniere ligne lue : nro %d, %deme caractere\n", nro_ligne, fic_pos); printf ("%s\n", fic_buffer.c_str()); // exit (102); @@ -401,8 +421,8 @@ void XmlTree::dump (int niveau) for (int nc=0 ; nc 0) - { - string sext = &nomfic[pext]; - set_minus (sext); - suff = sext != ".xml"; - } - string fname = nomfic; - if (suff) - fname += ".xml"; - xml_file = fopen (fname.c_str(), "w"); - if (xml_file==NULL) - { - xml_file = stdout; - return HERR; - } + xml_file = stdout; + xml_mode = InaStream; + return HERR; } + return HOK; +} +// ========================================================= setFileName +int XmlWriter::setFileName (cpchar nomfic) +{ + xml_mode = InaFile; + xml_file = stdout; + on_file = true; + + bool suff = true; + int pext = strlen (nomfic) - 4; + if (pext > 0) + { + string sext = &nomfic[pext]; + set_minus (sext); + suff = sext != ".xml"; + } + + string fname = nomfic; + if (suff) + fname += ".xml"; + + xml_file = fopen (fname.c_str(), "w"); + if (xml_file==NULL) + { + xml_file = stdout; + return HERR; + } + + return HOK; +} +// ========================================================= startXml +int XmlWriter::startXml () +{ + xml_level = 0; + xml_pos = 0; + xml_buffer = ""; + ecrire (""); return HOK; } @@ -74,10 +105,11 @@ void XmlWriter::closeXml () while (NOT pile_mark.empty()) closeMark (); - if (xml_file!=stdout) + if (xml_mode == InaFile && xml_file!=stdout) + { fclose (xml_file); - - xml_file = stdout; + xml_file = stdout; + } } // ========================================================= addMark void XmlWriter::addMark (cpchar balise, bool jump) diff --git a/src/HEXABLOCK/HexXmlWriter.hxx b/src/HEXABLOCK/HexXmlWriter.hxx index f75bc5a..0d4cdae 100755 --- a/src/HEXABLOCK/HexXmlWriter.hxx +++ b/src/HEXABLOCK/HexXmlWriter.hxx @@ -34,8 +34,10 @@ public : XmlWriter (); ~XmlWriter () { closeXml () ; } - int openXml (string& nom) { return openXml (nom.c_str()); } - int openXml (cpchar nom=NULL); + int setFileName (cpchar filename); // Un seul xml par fichier + int setFile (pfile afile); // Plusieurs xml par fichier + int setStream (); // Sauvegarde par flux + int startXml (); void closeXml (); cpchar getXml () { return xml_buffer.c_str(); } @@ -57,7 +59,9 @@ private : void addMot (cpchar mot); private : + enum {InaFile, InaStudy, InaStream} xml_mode; enum {xml_decal=3, xml_size=80}; + pfile xml_file; int xml_level; int xml_pos; diff --git a/src/HEXABLOCK/Makefile.am b/src/HEXABLOCK/Makefile.am index 3d1c5b9..1039744 100755 --- a/src/HEXABLOCK/Makefile.am +++ b/src/HEXABLOCK/Makefile.am @@ -24,8 +24,8 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am # Files to be installed # =============================================================== # -# -# header files +# +# header files salomeinclude_HEADERS = \ HexGroup.hxx \ HexCylinder.hxx \ @@ -48,8 +48,18 @@ salomeinclude_HEADERS = \ Hex.hxx \ HexPipe.hxx \ HexShape.hxx \ + HexOldShape.hxx \ + HexNewShape.hxx \ + HexSubShape.hxx \ + HexVertexShape.hxx \ + HexEdgeShape.hxx \ + HexFaceShape.hxx \ + HexBiCylinderShape.hxx \ + HexAssoEdge.hxx \ HexXmlTree.hxx \ HexCrossElements.hxx \ + HexBiCylinder.hxx \ + HexDumpStudy.hxx \ HexAnaQuads.hxx \ HexKasPoint.hxx \ HexKasLine.hxx \ @@ -85,13 +95,22 @@ dist_libHEXABLOCKimpl_la_SOURCES = \ HexPipe.cxx \ HexLaw.cxx \ HexShape.cxx \ + HexNewShape.cxx \ + HexSubShape.cxx \ HexDocument_trans.cxx \ + HexVertexShape.cxx \ + HexEdgeShape.cxx \ + HexFaceShape.cxx \ + HexBiCylinderShape.cxx \ + HexAssoEdge.cxx \ HexDocument_Xml.cxx \ HexDocument.cxx \ HexXmlTree.cxx \ HexXmlWriter.cxx \ + HexDumpStudy.cxx \ HexCrossElements.cxx \ HexCrossElements_build.cxx \ + HexBiCylinder.cxx \ Hex.cxx \ HexDocument_asso.cxx \ HexDocument_quads.cxx \ @@ -102,7 +121,7 @@ dist_libHEXABLOCKimpl_la_SOURCES = \ # libHEXABLOCKimpl_la_CPPFLAGS = \ # -I$(top_builddir)/salome_adm/unix -# +# # libHEXABLOCKimpl_la_LDFLAGS = \ # -lOpUtil diff --git a/src/HEXABLOCK/hexa_base.hxx b/src/HEXABLOCK/hexa_base.hxx index 20e0cd0..76ff3f6 100755 --- a/src/HEXABLOCK/hexa_base.hxx +++ b/src/HEXABLOCK/hexa_base.hxx @@ -17,9 +17,12 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com // +#define DumpActif false + #ifndef _HEXA_BASE_H_ #define _HEXA_BASE_H_ @@ -37,16 +40,16 @@ typedef FILE* pfile; #define Cestnonvide(c1) c1[0] // Pour rendre les operateurs plus visibles -#define NOT ! +#define NOT ! #define XOR ^ #define MODULO % #define INOT ` // #define IOR | #define IAND & - // Chaines de bits + // Chaines de bits #define DeuxPuissance(n) (1 << (n)) - // Codes retour d'une fonction + // Codes retour d'une fonction #define HOK 0 // Code retour=0 : deroulement correct #define HERR 1 // Code retour>0 = numero d'erreur, 1 par defaut #define NOTHING -1 // Code retour fonction de recherche d'un index @@ -70,6 +73,8 @@ typedef FILE* pfile; // Conventions C++ #include #include + +typedef const std::string& rcstring; // Impressions de mise au point #include using namespace std; @@ -84,15 +89,15 @@ using namespace std; // #define Destroy(obj) { delete obj ; obj=NULL ; } // #define Deltable(table) { delete [] table ; table=NULL ; } -// ---------------------------------- Definitions propres a HEXA +// ---------------------------------- Definitions propres a HEXA #define HEXA_NS Hex #define BEGIN_NAMESPACE_HEXA namespace Hex { #define END_NAMESPACE_HEXA } /* ----------------------------------------------------- - // ---- Numerotation des faces (%x) - + // ---- Numerotation des faces (%x) + 6=bed +----bd-----+ bdf=7 /| /| be | B bf | @@ -106,23 +111,41 @@ using namespace std; | ae A | af | / |/ |/ |/ 0=ace +----ac-----+ acf=1 +-----> x - + * ----------------------------------------------------- */ //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 + +#ifndef NO_CASCADE +class TopoDS_Shape; +#else +typedef int TopoDS_Shape; +typedef int TopTools_IndexedMapOfShape; +#endif + +class BRepAdaptor_Curve; + BEGIN_NAMESPACE_HEXA enum EnumCoord { dir_x, dir_y, dir_z, DIM3 }; -enum EnumElt { EL_NONE, EL_VERTEX, EL_EDGE, EL_QUAD, EL_HEXA, EL_VECTOR, - EL_GRID, EL_CYLINDER, EL_PIPE, EL_REMOVED, EL_MAXI }; +enum EnumElt { EL_NONE, EL_VERTEX, EL_EDGE, EL_QUAD, EL_HEXA, EL_VECTOR, + EL_GRID, EL_CYLINDER, EL_PIPE, EL_GROUP, EL_LAW, + EL_SHAPE, EL_SUBSHAPE, + EL_REMOVED, EL_MAXI }; -enum EnumGroup { HexaCell, QuadCell, EdgeCell, +const cpchar ABR_TYPES = "xveqhwtcpglsu???"; + +enum EnumGroup { HexaCell, QuadCell, EdgeCell, HexaNode, QuadNode, EdgeNode, VertexNode}; + // Origine des shapes +enum EnumShape { SH_NONE, SH_IMPORT, SH_CYLINDER, SH_INTER, SH_SPHERE, + SH_CLOUD }; + // Modes de remplissage des grilles cylindriques enum EnumCyl { CYL_NOFILL, CYL_CL4, CYL_CL6, CYL_CLOSED, CYL_PEER, CYL_ODD}; -enum EnumGrid { GR_NONE, GR_CARTESIAN, GR_CYLINDRIC, GR_SPHERIC, GR_JOINT, - GR_BICYL, GR_BIPIPE, GR_REPLACE, +enum EnumGrid { GR_NONE, GR_CARTESIAN, GR_CYLINDRIC, GR_SPHERIC, GR_JOINT, + GR_BICYL, GR_BIPIPE, GR_REPLACE, GR_HEMISPHERIC, GR_RIND, GR_PART_SPHERIC, GR_PART_RIND }; // Sommets de la decomposition canonique du bicylindre // 0 1 2 3 4 5 6 7 8 @@ -140,17 +163,18 @@ enum EnumQuad { E_A, E_B, E_C, E_D, QUAD4 }; // z=0 z=1 y=0 y=1 x=0 x=1 enum EnumHQuad {Q_A, Q_B, Q_C, Q_D, Q_E, Q_F, HQ_MAXI}; -enum EnumHEdge {E_AC, E_AD, E_BC, E_BD, +enum EnumHEdge {E_AC, E_AD, E_BC, E_BD, E_AE, E_AF, E_BE, E_BF, E_CE, E_CF, E_DE, E_DF, HE_MAXI }; -enum EnumHVertex {V_ACE, V_ACF, V_ADE, V_ADF, V_BCE, V_BCF, V_BDE, V_BDF, +enum EnumHVertex {V_ACE, V_ACF, V_ADE, V_ADF, V_BCE, V_BCF, V_BDE, V_BDF, HV_MAXI }; enum EnumQDirection {Q_INSIDE, Q_DIRECT, Q_INVERSE, Q_UNDEFINED, Q_WAITING }; enum { CylSmall=0, CylBig=1, NxInt=1, NxExt=2 }; +class Hex; class Document; class EltBase; @@ -173,9 +197,9 @@ class Elements; class GridElements; class SphericalGrid; class CrossElements; +class BiCylinder; struct StrOrient; -class Shape; class Globale; class Propagation; class Law; @@ -184,11 +208,29 @@ class Group; class AnaQuads; class Pattern; +class Shape; +class SubShape; +class VertexShape; +class EdgeShape; +class FaceShape; +class AssoEdge; +class NewShape; // 1) Shape -> OldShape, 2) NewShape->Shape +typedef Shape OldShape; + typedef std::vector Hexas; typedef std::vector Quads; typedef std::vector Edges; typedef std::vector Shapes; -typedef std::vector RealVector; +typedef std::vector NewShapes; +typedef std::vector SubShapes; +typedef std::vector AssoEdges; +typedef std::vector FaceShapes; +typedef std::vector EdgeShapes; + +typedef std::vector TabElts; +typedef std::vector RealVector; +typedef std::vector IntVector; +typedef std::vector TabText; typedef double Real; typedef double Real3 [DIM3]; @@ -211,14 +253,19 @@ int normer_vecteur (double v1[]); double carre (double val); bool same_coords (double* pa, double* pb, double epsilon=1e-6); -bool on_debug(); -int niv_debug(); +bool on_debug(); // == getenv ("HEXA_DB") > 0 +bool in_test (); // == getenv ("HEXA_TEST") > 0 +int niv_debug(); // Implemente prochainement void set_minus (string& chaine); bool special_option (); void set_special_option (bool opt); +int sizeof_file (cpchar filename); +char* read_file (cpchar filename, int& size); +cpchar get_time (string& buffer); + const double Epsil = 1e-6; const double UnEpsil = 0.999999; const double Epsil2 = 1e-12; diff --git a/src/HEXABLOCK/hexa_utils.cxx b/src/HEXABLOCK/hexa_utils.cxx index e08dc25..6b5e337 100755 --- a/src/HEXABLOCK/hexa_utils.cxx +++ b/src/HEXABLOCK/hexa_utils.cxx @@ -24,24 +24,43 @@ #include #include +#include #include BEGIN_NAMESPACE_HEXA -static int debug_level = NOTHING; -// ========================================================= prod_scalaire -bool on_debug () +// ========================================================= niv_debug +int niv_debug () { + static int debug_level = NOTHING; if (debug_level == NOTHING) { cpchar rep = getenv ("HEXA_DB"); if (rep!=NULL) debug_level = atoi (rep); - debug_level = std::max (debug_level, 0); + debug_level = std::max (debug_level, 0); } - return debug_level > 0; - + return debug_level; +} +// ========================================================= on_debug +bool on_debug () +{ + return niv_debug () > 0; +} +// ========================================================= in_test +bool in_test () +{ + static int test_level = NOTHING; + if (test_level == NOTHING) + { + cpchar rep = getenv ("HEXA_TEST"); + if (rep!=NULL) + test_level = atoi (rep); + test_level = std::max (test_level, 0); + } + return test_level > 0; + } // ======================================================== set_minus void set_minus (string& chaine) @@ -58,24 +77,24 @@ pchar get_temp_name (cpchar format, pchar nomfic) { nro ++; sprintf (nomfic, format, nro); - + struct stat buffer; int rep = stat (nomfic, &buffer); - if (rep<0) + if (rep<0) return nomfic; } } // ========================================================= prod_scalaire double prod_scalaire (double v1[], double v2[]) { - double prod = v1[dir_x]*v2[dir_x] + v1[dir_y]*v2[dir_y] + double prod = v1[dir_x]*v2[dir_x] + v1[dir_y]*v2[dir_y] + v1[dir_z]*v2[dir_z]; return prod; } // ========================================================= calc_norme double calc_norme (double vect[]) { - double norme = vect[dir_x]*vect[dir_x] + vect[dir_y]*vect[dir_y] + double norme = vect[dir_x]*vect[dir_x] + vect[dir_y]*vect[dir_y] + vect[dir_z]*vect[dir_z]; return sqrt (norme); } @@ -103,7 +122,7 @@ void calc_milieu (double pta[], double ptb[], double milieu[]) int normer_vecteur (double vect[]) { double dn = calc_norme (vect); - if (dn < 1e-30) + if (dn < 1e-30) return HERR; vect [dir_x] /= dn; @@ -126,19 +145,19 @@ double carre (double val) return val*val; } // ====================================================== same_coords -bool same_coords (double* pa, double* pb, double epsilon) +bool same_coords (double* pa, double* pb, double epsilon2) { - double d2 = carre (pb[dir_x]-pa[dir_x]) + carre (pb[dir_y]-pa[dir_y]) - + carre (pb[dir_z]-pa[dir_z]); - return d2 < epsilon; + double d2 = carre (pb[dir_x]-pa[dir_x]) + carre (pb[dir_y]-pa[dir_y]) + + carre (pb[dir_z]-pa[dir_z]); + return d2 < epsilon2; } // ========================================================= prod_mixte double prod_mixte (double vi[], double vj[], double vk[]) { double pmixte = 0; - for (int nc=0 ; nc 0; } @@ -179,4 +198,57 @@ void set_special_option (bool opt) { current_option = opt ? 1 : 0; } +// ====================================================== sizeof_file +int sizeof_file (cpchar filename) +{ + struct stat status; + + int ier = stat (filename, &status); + if (ier == HOK) + return status.st_size; + else + return NOTHING; +} +// ====================================================== read_file +char* read_file (cpchar filename, int& size) +{ + size = 0; + + struct stat status; + int ier = stat (filename, &status); + if (ier != HOK) + return NULL; + + FILE* fic = fopen (filename, "r"); + if (fic == NULL) + return NULL; + + int lgalloc = status.st_size; + char* buffer = (char*) malloc (lgalloc+1); + if (buffer == NULL) + return NULL; + + for (int car = fgetc (fic) ; car!=EOF && sizetm_year, temps->tm_mon+1, temps->tm_mday, + temps->tm_hour, temps->tm_min, temps->tm_sec); + + buffer = quand; + return buffer.c_str(); +} END_NAMESPACE_HEXA diff --git a/src/HEXABLOCK/test_brep.cxx b/src/HEXABLOCK/test_brep.cxx new file mode 100755 index 0000000..397dae8 --- /dev/null +++ b/src/HEXABLOCK/test_brep.cxx @@ -0,0 +1,163 @@ + +// C++ : Extraction des brep d'un fichier XML + +// Copyright (C) 2009-2011 CEA/DEN, EDF R&D and My Apple +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com + + +#include "HexXmlTree.hxx" + +using namespace Hex; + +void parse_brep (XmlTree& xml); + +// ======================================================== test_brep +int test_brep (int nbargs, cpchar tabargs[]) +{ + + XmlTree xml(""); + string filename = "restore"; + if (nbargs>1) + filename = tabargs [1]; + + static const int NbExt = 3; + static cpchar t_ext [NbExt] = { ".xml", ".XML", ".Xml" }; + size_t ici = 0; + bool noext = true; + for (int nx = 0; nx < NbExt && noext ; nx++) + { + ici = filename.rfind (t_ext[nx]); + noext = ici < 0 || ici > filename.size(); + } + + if (noext) + filename += ".xml"; + + int ier = xml.parseFile (filename); + if (ier!=HOK) + return ier; + + parse_brep (xml); + return HOK; +} +// ======================================================== get_names +void get_names (const string& chaine, vector& table) +{ + table.clear (); + int lg = chaine.size(); + string mot = ""; + bool encours = false; + + for (int nc=0 ; ncgetNbrChildren (); + + string nom, brep, filename; + XmlTree* node = NULL; + vector tname; + + for (int nro=0 ; nro < nbrelts ; nro++) + { + node = rubrique->getChild (nro); + nom = node->findValue ("id"); + brep = node->findValue ("shape"); + if (NOT brep.empty ()) + save_file_brep (nom, brep); + } + + rubrique = xml.findChild ("ListEdges"); + nbrelts = rubrique->getNbrChildren (); + + for (int nro=0 ; nro < nbrelts ; nro++) + { + node = rubrique->getChild (nro); + const string& type = node->getName(); + if (type=="Edge") + { + nom = node->findValue ("id"); + const string& vertices = node->findValue ("vertices"); + get_names (vertices, tname); + } + else if (type=="Shape") + { + brep = node->findValue ("brep"); + save_file_brep (nom, brep); + } + } + + rubrique = xml.findChild ("ListQuads"); + nbrelts = rubrique->getNbrChildren (); + + for (int nro=0 ; nro < nbrelts ; nro++) + { + node = rubrique->getChild (nro); + const string& type = node->getName(); + if (type=="Quad") + { + nom = node->findValue ("id"); + const string& edges = node->findValue ("edges"); + get_names (edges, tname); + } + else if (type=="Shape") + { + brep = node->findValue ("brep"); + save_file_brep (nom, brep); + } + } +} diff --git a/src/HEXABLOCK/test_hexa1.cxx b/src/HEXABLOCK/test_hexa1.cxx new file mode 100755 index 0000000..61af7bb --- /dev/null +++ b/src/HEXABLOCK/test_hexa1.cxx @@ -0,0 +1,1969 @@ + +// C++ : Tests unitaires + +// Copyright (C) 2009-2011 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com + +#include "test_unit.hxx" + +#include "Hex.hxx" +#include "HexDocument.hxx" +#include "HexElements.hxx" +#include "HexCrossElements.hxx" + +#include "HexHexa.hxx" +#include "HexQuad.hxx" +#include "HexEdge.hxx" +#include "HexVertex.hxx" + +#include "HexPropagation.hxx" +#include "HexOldShape.hxx" +#include "HexLaw.hxx" +#include "HexMatrix.hxx" +#include "HexCramer.hxx" +#include "HexGroup.hxx" + + +#include + +static int nbr_vtk = 0; +static cpchar case_name = "hexa"; +static Hex::Document* docu = NULL; + +// ======================================================== print_propagations +void print_propagations (Hex::Document* doc) +{ + int nb = doc->countPropagation (); + HexDisplay (nb); + for (int nro=0 ; nrogetPropagation (nro); + const Hex::Edges& table = prop->getEdges (); + printf (" ____________________________________ Prop nro %d\n", nro); + for (int ned=0 ; ned<(int)table.size() ; ned++) + { + bool way = table [ned]->getWay (); + Hex::Edge* edge = table [ned]; + Hex::Vertex* v0 = edge->getVertex (0); + Hex::Vertex* v1 = edge->getVertex (1); + + if (way) + { + printf (" ("); + v0->printName (", "); + v1->printName (")\n"); + } + else + { + v1->printName (", "); + v0->printName (")\n"); + printf (" ("); + } + } + } +} +// ======================================================== save_vtk +void save_vtk () +{ + if (docu==NULL) + return; + + docu->saveVtk (case_name, nbr_vtk); +} +// ======================================================== remove_hexa +void remove_hexa (Hex::Hexa* hexa) +{ + if (hexa==NULL) + return; + + hexa->remove(); + + if (docu==NULL) + return; + + docu->saveVtk (case_name, nbr_vtk); +} +// ======================================================== test_sphere +int test_sphere (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + Hex::Vertex* orig = doc->addVertex (0,0,0); + + int ncouches = 2; + double k = 1; + double rayon = 1; + Hex::Elements* sphere = doc->makeSpherical (orig, rayon, ncouches, k); + + if (ncouches>0) + { + for (int nc=0 ; nc <= ncouches ; nc++) + { + Hex::Hexa* cell = sphere->getStrate (nc, Hex::Q_A); + if (nc==0) + cell->dumpFull(); + cell->remove (); + // sphere->getStrate (nc, Hex::Q_A)->remove (); + // sphere->getStrate (nc, Hex::Q_B)->remove (); + } + } + + sphere->saveVtk ("sphere.vtk"); + return HOK; +} +// ======================================================== test_cartesi1 +int test_cartesi1 () +{ + const int size_x = 15; + const int size_y = 12; + const int size_z = 8; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + Hex::Vertex* orig = doc->addVertex (0,0,0); + + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); + + // print_propagations (doc); + + for (int nz=0; nzgetHexaIJK (nx, ny, nz); + cell->remove (); + } + + doc->setLevel (1); + print_propagations (doc); + grid->saveVtk ("grid_cart.vtk"); + + // doc->dump (); + return HOK; +} +// ======================================================== afficher +#define Afficher(elt) afficher (#elt, elt) +int afficher (cpchar nom, Hex::EltBase* elt) +{ + if (elt==NULL) + { + printf (" .... %s = 0x0\n", nom); + return HOK; + } + + printf (" .... %s = 0x%08lx = %03d\n", nom, (unsigned long) elt, elt->getId()); + return HOK; +} +// ======================================================== test_find +int test_find () +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); + + grid->saveVtk ("mini1.vtk"); + doc->dump (); + + Hex::Vertex *v00, *v02, *v06, *v08, *v10, *v22, *v26; + + Afficher ( v00 = doc->findVertex (0, 0, 0)); + Afficher ( v02 = doc->findVertex (1, 1, 0)); + Afficher ( v06 = doc->findVertex (1, 1, 1)); + Afficher ( v08 = doc->findVertex (2, 1, 0)); + Afficher ( v10 = doc->findVertex (2, 1, 1)); + Afficher ( v22 = doc->findVertex (2, 1, 2)); + Afficher ( v26 = doc->findVertex (2, 2, 2)); + + printf ("\n"); + + Afficher (doc->findEdge (v06, v10)); + Afficher (doc->findEdge (v10, v06)); + printf ("\n"); + + Afficher (doc->findQuad (v02, v10)); + Afficher (doc->findQuad (v06, v08)); + Afficher (doc->findQuad (v02, v06)); + + printf ("\n"); + Afficher (doc->findHexa (v00, v06)); + Afficher (doc->findHexa (v06, v26)); + Afficher (doc->findHexa (v26, v06)); + + return HOK; +} +// ======================================================== test_joint +int test_joint (int nbargs, cpchar tabargs[]) +{ + const int dimx = 11; + const int dimy = 11; + const int dimz = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + + Hex::Elements* grid1 = doc->makeCartesian (orig1, dir, dimx,dimy,dimz); + + Hex::Vertex* orig2 = doc->addVertex (dimx/2.0,0,8); + Hex::Vector* vectj = doc->addVector (0,1,0); + Hex::Vector* vecti = doc->addVector (1,0,0); + Hex::Elements* grid2 = doc->makeCylindrical (orig2, vecti, vectj, + 1, 180, 1, dimz,dimy,dimx); + + int mx = dimx/2; + int my = dimy/2; + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quad* cible = grid2->getQuadJK (dimz, mx, my); + + Hex::Vertex* v1 = prems->getVertex (0); + Hex::Vertex* v3 = prems->getVertex (1); + + Hex::Vertex* v2 = cible->getVertex (1); + Hex::Vertex* v4 = cible->getVertex (2); + + // v1->setScalar (3); + // v2->setScalar (3); + // v3->setScalar (6); + // v4->setScalar (6); + + Hex::Quads liste; + + liste.push_back (prems); + for (int nx=0; nxgetQuadIJ (nx, my, dimz)); + + for (int ny=0; nygetQuadIJ (mx, ny, dimz)); + + doc->saveVtk ("joint1.vtk"); + const int hauteur = 5; + Hex::Elements* joint = doc->joinQuads(liste, cible, v1,v2,v3,v4, hauteur); + // for (int nh=0 ; nhgetHexa(nh)->setScalar (5); + + int nbr_joint_vertex = joint->countVertex (); + int nbr_surf_vertex = nbr_joint_vertex/(hauteur+1); + + HexDisplay (nbr_joint_vertex); + HexDisplay (nbr_surf_vertex); + + int indice0 = joint->findVertex (v1); + HexDisplay (indice0); + + for (int nh=0 ; nhgetVertex(nh)->setScalar (5); + + for (int nh=0 ; nh<=hauteur ; nh++) + joint->getVertex(nh*nbr_surf_vertex)->setScalar (3); + + doc->saveVtk ("joint2.vtk"); + return HOK; +} +// ======================================================== test_prism +int test_prism (int nbargs, cpchar tabargs[]) +{ + const int dimx = 11; + const int dimy = 11; + const int dimz = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex ( 0,0,0); + Hex::Vector* dir1 = doc->addVector ( 1,1,1); + Hex::Vector* dir2 = doc->addVector ( 1,1,-1); + + Hex::Elements* grid1 = doc->makeCartesian (orig1, dir1, dimx,dimy,dimz); + + int mx = dimx/2; + int my = dimy/2; + Hex::Quads liste1, liste2; + + liste1.push_back (grid1->getQuadIJ (mx, my, dimz)); + liste2.push_back (grid1->getQuadIJ (mx, my, 0)); + for (int nx=0; nxgetQuadIJ (nx, my, dimz)); + liste2.push_back (grid1->getQuadIJ (nx, my, 0)); + } + + for (int ny=0; nygetQuadIJ (mx, ny, dimz)); + liste2.push_back (grid1->getQuadIJ (mx, ny, 0)); + } + + Hex::RealVector tlen; + double dh = 2; + for (int nro=0; nro<5; nro++) + { + dh = 2*dh + 1; + tlen.push_back (dh); + } + + const int nbiter = 5; + doc->saveVtk ("prisme1.vtk"); + Hex::Elements* prisme2 = doc->prismQuads (liste2, dir2, nbiter); + doc->saveVtk ("prisme2.vtk"); + + Hex::Elements* prisme1 = doc->prismQuadsVec (liste1, dir1, tlen, 0); + + PutData (liste1.size()); + PutData (tlen.size()); + PutData (prisme1->countHexa()); + PutData (prisme1->countQuad()); + PutData (prisme1->countEdge()); + PutData (prisme1->countVertex()); + + for (int nro=0 ; nro getHexa (nbiter+nro); + cell->setScalar (5); + } + + doc->saveVtk ("prisme3.vtk"); + return HOK; +} +// ======================================================== test_revolution9 +int test_revolution9 (int nbargs, cpchar tabargs[]) +{ + const int dimx = 11; + const int dimy = 11; + const int dimz = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + + Hex::Elements* grid1 = doc->makeCartesian (orig1, dir, dimx,dimy,dimz); + + int mx = dimx/2; + int my = dimy/2; + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quads liste; + + liste.push_back (prems); + prems -> setScalar (5); + for (int nx=0; nxgetQuadIJ (nx, my, dimz); + liste.push_back (cell); + cell -> setScalar (5); + } + + for (int ny=0; nygetQuadIJ (mx, ny, dimz); + liste.push_back (cell); + cell -> setScalar (5); + } + + Hex::Vertex* center = doc->addVertex (0, -10, 0); + Hex::Vector* axis = doc->addVector (1, 0, 0); + Hex::RealVector angles; + + Hex::Vector* dir1 = doc->addVector (10,0.3,0.3); + Hex::Elements* grid2 = doc->makeCartesian (center, dir1, 1,1,1); + Hex::Hexa* cell = grid2->getHexaIJK (0,0,0); + cell->setScalar (5); + + doc->saveVtk ("revolution1.vtk"); + + double alpha = 5; + int niter = 5; + double coeff = 1.5; + for (int na=0 ; narevolutionQuads (liste, center, axis, angles); + if (bloc != NULL) + doc->saveVtk ("revolution2.vtk"); + + return HOK; +} +// ======================================================== test_revolution +int test_revolution (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* ori = doc->addVertex (0,0,0); + Hex::Vector* vx = doc->addVector (1,0,0); + Hex::Vector* vz = doc->addVector (0,0,1); + + int dr = 1; + int da = 360; + int dl = 1; + + int nr = 1; + int na = 6; + int nl = 1; + + Hex::Elements* grid = doc->makeCylindrical (ori, vx,vz, dr,da,dl, + nr,na,nl, false); + + Hex::Quads liste; + for (int nx=0; nxgetQuadIJ (nx, ny, nl); + liste.push_back (cell); + cell -> setScalar (5); + } + + Hex::Vertex* center = doc->addVertex (0, -10, 0); + Hex::Vector* axis = doc->addVector (1, 0, 0); + Hex::RealVector angles; + + Hex::Vector* dir1 = doc->addVector (10,0.3,0.3); + Hex::Elements* grid2 = doc->makeCartesian (center, dir1, 1,1,1); + Hex::Hexa* cell = grid2->getHexaIJK (0,0,0); + cell->setScalar (5); + + doc->saveVtk ("revolution1.vtk"); + + double alpha = 5; + int niter = 5; + double coeff = 1.5; + for (int na=0 ; narevolutionQuads (liste, center, axis, angles); + if (bloc != NULL) + doc->saveVtk ("revolution2.vtk"); + + return HOK; +} +// ======================================================== test_coude +int test_coude (int nbargs, cpchar tabargs[]) +{ +#if 0 + const int dimx = 11; + const int dimy = 11; + const int dimz = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* vx = doc->addVector (1,0,0); + Hex::Vector* vz = doc->addVector (0,0,1); + + // grid1 = doc->makeCartesian (orig1, dir, dimx,dimy,dimz); + double dr = 1; + int dl = 5; + int nr = 4; + int na = 8; + + Hex::Elements* grid1 = doc->makeCylindrical (orig1, vx,vz,dr,360, dl, + nr, 10, nl, false); + int mx = dimx/2; + int my = dimy/2; + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quads liste; + + liste.push_back (prems); + prems -> setScalar (5); + for (int nx=0; nxgetQuadIJ (nx, my, dimz); + liste.push_back (cell); + cell -> setScalar (5); + } + + for (int ny=0; nygetQuadIJ (mx, ny, dimz); + liste.push_back (cell); + cell -> setScalar (5); + } + + + Hex::Vertex* center = doc->addVertex (0, -10, 0); + Hex::Vector* axis = doc->addVector (1, 0, 0); + Hex::RealVector angles; + + Hex::Vector* dir1 = doc->addVector (10,0.3,0.3); + Hex::Elements* grid2 = doc->makeCartesian (center, dir1, 1,1,1); + Hex::Hexa* cell = grid2->getHexaIJK (0,0,0); + cell->setScalar (5); + + doc->saveVtk ("revolution1.vtk"); + + double alpha = 5; + int niter = 5; + double coeff = 1.5; + for (int na=0 ; narevolutionQuads (liste, center, axis, angles); + if (bloc != NULL) + doc->saveVtk ("revolution2.vtk"); +#endif + return HOK; +} +// ======================================================== test_count +int test_count (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex ( 0, 0,0); + Hex::Vector* vx = doc->addVector (1,0,0); + Hex::Vector* vz = doc->addVector (0,0,1); + + double dr = 1; + double dl = 1; + int nr = 2; + int nl = 3; + + Hex::Elements* c1; + + c1 = doc->makeCylindrical (orig1, vx,vz,dr, 360, dl,nr, 10, nl, false); + + HexDisplay (doc->countVertex ()); + HexDisplay (doc->countUsedVertex ()); + doc ->saveVtk ("hexa1.vtk"); + + return HOK; +} +// ======================================================== test_decoupage +int test_decoupage (int nbargs, cpchar tabargs[]) +{ + const int size_x = 2; + const int size_y = 1; + const int size_z = 1; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); + Hex::Edge* arete = grid->getEdgeK (0, 0, 0); + + // doc ->dump (); + int nvtk=0; + doc ->saveVtk ("decoupe", nvtk); +/* Hex::Elements* grid2 = */ doc->cut (arete, 1); + + /// doc ->dump (); + doc ->saveVtk ("decoupe", nvtk); + + return HOK; +} +// ======================================================== test_gen_xml +int test_gen_xml (int nbargs, cpchar tabargs[]) +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); + + Hex::Hexa* cell = grid->getHexa (0); + Hex::Quad* face = cell->getQuad (0); + Hex::Edge* arete = cell->getEdge (0); + Hex::Vertex* noeud = cell->getVertex (0); + + // Hex::Shape* shape1 = new Hex::Shape("riri"); + // Hex::Shape* shape2 = new Hex::Shape("fifi"); + // Hex::Shape* shape3 = new Hex::Shape("loulou"); + + // noeud->setAssociation (shape1); + // arete->setAssociation (shape2); + // face ->setAssociation (shape3); + + Hex::Law* law1 = doc->addLaw("loi1", 1); + Hex::Law* law2 = doc->addLaw("loi2", 2); + Hex::Law* law3 = doc->addLaw("loi3", 3); + + law1->setKind (Hex::Uniform); + law2->setKind (Hex::Arithmetic); + law3->setKind (Hex::Geometric); + + Hex::Propagation* prop1 = doc->getPropagation (0); + Hex::Propagation* prop2 = doc->getPropagation (1); + Hex::Propagation* prop3 = doc->getPropagation (2); + + prop1->setLaw (law1); + prop2->setLaw (law2); + prop3->setLaw (law3); + + prop1->setWay (true); + prop2->setWay (false); + prop3->setWay (true); + + doc ->saveVtk ("mini.vtk"); + doc ->save ("Essai"); + + return HOK; +} +// ======================================================== test_string_xml +int test_string_xml (int nbargs, cpchar tabargs[]) +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); + + Hex::Hexa* cell = grid->getHexa (0); + Hex::Quad* face = cell->getQuad (0); + Hex::Edge* arete = cell->getEdge (0); + Hex::Vertex* noeud = cell->getVertex (0); + + // Hex::Shape* shape1 = new Hex::Shape("riri"); + // Hex::Shape* shape2 = new Hex::Shape("fifi"); + // Hex::Shape* shape3 = new Hex::Shape("loulou"); + + // noeud->setAssociation (shape1); + // arete->setAssociation (shape2); + // face ->setAssociation (shape3); + + Hex::Law* law1 = doc->addLaw("loi1", 1); + Hex::Law* law2 = doc->addLaw("loi2", 2); + Hex::Law* law3 = doc->addLaw("loi3", 3); + + law1->setKind (Hex::Uniform); + law2->setKind (Hex::Arithmetic); + law3->setKind (Hex::Geometric); + + Hex::Propagation* prop1 = doc->getPropagation (0); + Hex::Propagation* prop2 = doc->getPropagation (1); + Hex::Propagation* prop3 = doc->getPropagation (2); + + prop1->setLaw (law1); + prop2->setLaw (law2); + prop3->setLaw (law3); + + prop1->setWay (true); + prop2->setWay (false); + prop3->setWay (true); + + doc ->saveVtk ("mini.vtk"); + doc ->save ("Essai"); + + cpchar flux = doc ->getXml (); + Hex::Document* docbis = mon_ex.addDocument (); + docbis->setXml (flux); + docbis->saveVtk ("clone.vtk"); + + return HOK; +} +// ======================================================== test_relecture +int test_relecture (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + cpchar nomdoc = "Essai"; + if (nbargs>1) + nomdoc = tabargs[1]; + Hex::Document* doc = mon_ex.loadDocument (nomdoc); + +/********************* + Hex::Vertex* v4 = doc->findVertex (80.0, 0.0, 0.0); + Hex::Vertex* v5 = doc->findVertex (80.0, 0.0, 40.0); + Hex::Edge* e4 = doc->findEdge (v4, v5); + + HexDump (v4); + HexDump (v5); + HexDump (e4); + + e4->setScalar (5); +***********************/ + + doc ->dump (); + doc ->saveVtk ("restore.vtk"); + doc ->save ("restore"); + + // doc ->reorderFaces (); + // doc ->dump (); + + // Hex::Elements* grid2 = doc->cut (e4, 2); + return HOK; +} +// ======================================================== test_clone +int test_clone () +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); + + Hex::Vector* bond = doc->addVector (0, 0, 7); + Hex::Elements* grid2 = doc->makeTranslation (grid, bond); + + doc ->saveVtk ("clonage.vtk"); + doc ->dump(); + + HexDump (grid2->getHexa (1)); + HexDump (grid2->getHexaIJK (1,1,1)); + HexDump (grid2->getVertexIJK (1,1,1)); + + return HOK; +} +// ======================================================== test_separ +int test_separ () +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + // Hex::Elements* grid = + doc->makeCartesian (orig, dir, size_x,size_y,size_z); + + doc ->saveVtk ("separ.vtk"); + doc ->dump(); + + return HOK; +} +// ======================================================== test_shperical +int test_spherical (int nbargs, const char* tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + double rayon = 1; + int nbr = 3; + + Hex::Elements* grid = doc->makeSpherical (orig, rayon, nbr); + + int nbhexas = grid->countHexa (); + HexDisplay (nbhexas); + for (int nro=0 ; nrogetHexa(nro)->remove(); + HexDisplay (doc->countHexa ()); + doc->saveVtk ("shperical.vtk"); + // doc->dump (); + + return HOK; +} +// ================================================== test_grille_cyl +int test_grille_cyl (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex ( 0, 0,0); + Hex::Vertex* orig2 = doc->addVertex (10, 0,0); + + Hex::Vertex* orig3 = doc->addVertex ( 0,10,0); + Hex::Vertex* orig4 = doc->addVertex (10,10,0); + + Hex::Vertex* orig5 = doc->addVertex ( 0,20,0); + Hex::Vertex* orig6 = doc->addVertex (10,20,0); + + Hex::Vector* vz = doc->addVector (0,0,1); + Hex::Vector* vx = doc->addVector (1,0,0); + + double dr = 1; + double dl = 1; + int nr = 2; + int nl = 3; + + Hex::Elements *c1, *c2, *c3, *c4, *c5, *c6; + + c1 = doc->makeCylindrical (orig1, vx,vz,dr, 360, dl,nr, 4, nl, true); + c2 = doc->makeCylindrical (orig2, vx,vz,dr, 360, dl,nr, 8, nl, true); + c3 = doc->makeCylindrical (orig3, vx,vz,dr, 270, dl,nr, 8, nl, true); + c4 = doc->makeCylindrical (orig4, vx,vz,dr, 270, dl,nr, 7, nl, true); + c5 = doc->makeCylindrical (orig5, vx,vz,dr, 360, dl,nr, 5, nl, true); + c6 = doc->makeCylindrical (orig6, vx,vz,dr, 360, dl,nr, 6, nl, true); + + int base2 = nr*nl*8; + c2->getHexa(base2 + 0)->setScalar (5); + c2->getHexa(base2 + 1)->setScalar (5); + c2->getHexa(base2 + 2)->setScalar (5); + + doc->saveVtk ("cylindres.vtk"); + // doc->dump (); + + return HOK; +} +// ================================================== test_asso_line +int test_asso_line (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex ( 0, 0,0); + + Hex::Vector* vz = doc->addVector (0,0,1); + Hex::Vector* vx = doc->addVector (1,0,0); + + double dr = 1; + double dl = 1; + int nr = 2; + int nl = 3; + int ntheta = 8; + + Hex::Elements *c1 = NULL; + + c1 = doc->makeCylindrical (orig1, vx,vz,dr, 360, dl,nr, ntheta, nl, true); + + Hex::Edges m_line; + Hex::Edge* m_start = c1->getEdgeJ (nr, 1, 0); + + for (int na=2 ; nagetEdgeJ (nr, na, 0); + arete->setScalar (5); + m_line.push_back (arete); + } + + // m_line.push_back (c1->getEdgeJ (nr, 0, 2)); + // m_line.push_back (NULL); + Hex::Shape* gstart = NULL; + Hex::Shapes gline; + double pstart = 0 , pend = 0; + + int ier = doc-> associateOpenedLine (m_start, m_line, + gstart, pstart, gline, pend); + HexDisplay (ier); + doc->saveVtk ("asso_line.vtk"); + + m_line.push_back (c1->getEdgeJ (nr, 0, 0)); + Hex::Vertex* m_first = m_start->getVertex (Hex::V_AMONT); + ier = doc-> associateClosedLine (m_first, m_start, m_line, + gstart, pstart, false, gline); + HexDisplay (ier); + // doc->dump (); + + return HOK; +} +// ===================================================== test_cylindrical +int test_cylindrical (int nbargs, cpchar tabargs[]) +{ + cpchar fic_vtk = "cylindre"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0, 0, 0); + Hex::Vector* vx = doc->addVector (1, 0, 0); + Hex::Vector* vz = doc->addVector (0, 0, 1); + + double dr = 1; + double da = 360; + double dl = 1; + + int nr = 1; + int na = 8; + int nl = 2; + + if (nbargs>1) + { + na = atoi (tabargs[1]); + HexDisplay (na); + if (na <= 2) + na = 8; + } + + if (nbargs>2) + { + da = atof (tabargs[2]); + HexDisplay (da); + } + + // Hex::Cylinder* cyl = doc->addCylinder (orig, vz, nr, nl); + // Hex::Elements* grid = doc->makeCylinder (cyl, vx, nr, na, nl); + doc->makeCylindrical (orig,vx, vz, dr,da,dl, nr,na, nl, true); + doc ->saveVtk (fic_vtk, na); + return HOK; +} +// ===================================================== test_cylinder +int test_cylinder (int nbargs, cpchar tabargs[]) +{ + int nvtk = 1; + cpchar fic_vtk = "cylindre"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0, 0, 0); + Hex::Vector* vx = doc->addVector (1, 0, 0); + Hex::Vector* vz = doc->addVector (0, 0, 1); + + double rayon = 10; + double hauteur = 6; + + int nr = 2; + int na = 8; + int nl = 5; + + Hex::Cylinder* cyl = doc->addCylinder (orig, vz, rayon, hauteur); + doc->makeCylinder (cyl, vx, nr, na, nl); + doc ->saveVtk (fic_vtk, nvtk); + return HOK; +} +// ===================================================== test_xml_cylinder +int test_xml_cylinder (int nbargs, cpchar tabargs[]) +{ + int nvtk = 0; + cpchar fic_vtk = "cylindre"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex (0, 0,0); + Hex::Vertex* orig2 = doc->addVertex (50,0,0); + Hex::Vector* vz = doc->addVector (0,0,1); + Hex::Vector* vx = doc->addVector (1,0,0); + + vx->setName ("vx"); + vz->setName ("vz"); + orig1->setName ("orig1"); + orig2->setName ("orig2"); + + int nr = 4; + int nri = 3; + int nre = nr; + int na = 9; + int nl = 5; + + Hex::Cylinder* cyl = doc->addCylinder (orig1, vz, nr, nl); + Hex::Pipe* pipe = doc->addPipe (orig2, vz, nri, nre, nl); + + Hex::Elements* grid = doc->makeCylinder (cyl, vx, nr, na, nl); + doc ->saveVtk (fic_vtk, nvtk); + + Hex::Group* groupe = doc->addGroup ("GroupeAMA", Hex::HexaCell); + groupe->addElement (grid->getHexaIJK (0,0,0)); + groupe->addElement (grid->getHexaIJK (1,0,0)); + groupe->addElement (grid->getHexaIJK (0,1,0)); + groupe->addElement (grid->getHexaIJK (1,1,0)); + groupe->addElement (grid->getHexaIJK (2,1,0)); + + grid->getHexaIJK (0,0,0)->setName ("Hexa0"); + grid->getQuadIJ (0,0,0)->setName ("QuadIJ0"); + grid->getEdgeK (0,0,0)->setName ("EdgeK0"); + + doc->makePipe (pipe, vx, nr, na, nl); + doc ->saveVtk (fic_vtk, nvtk); + doc->save ("cylindre"); + + return HOK; +} +// ===================================================== test_pipe +int test_pipe (int nbargs, cpchar tabargs[]) +{ + int nvtk = 0; + cpchar fic_vtk = "cylindre"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex (0, 0,0); + Hex::Vector* vx = doc->addVector (1,0,0); + Hex::Vector* vy = doc->addVector (0,1,0); + + int nr = 1; + int nri = 1; + int nre = 2; + int na = 2; + int nl = 1; + + Hex::Pipe* pipe = doc->addPipe (orig1, vx, nri, nre, nl); + doc->makePipe (pipe, vy, nr, na, nl); + doc ->saveVtk (fic_vtk, nvtk); + + return HOK; +} +// ======================================================== del_hexa +void del_hexa (Hex::CrossElements* gr, int cyl, int ni, int nj, int nk, int dr) +{ + Hex::Hexa* hexa = gr->getHexaIJK (cyl, ni, nj, nk); + if (hexa!=NULL) + { + hexa->remove (); + if (dr>1) + save_vtk (); + } +} +// ======================================================== del_tranche +int del_tranche (Hex::CrossElements* grid, int cyl, int ni, int nk, int dr=1) +{ + for (int nj = 0 ; nj < 8 ; nj++) + del_hexa (grid, cyl, ni, nj, nk, dr); + + if (dr==1) + save_vtk (); + printf ("del_tranche (g=%d, i=%d, k=%d) : fic = %d\n", + cyl, ni, nk, nbr_vtk-1); + return nbr_vtk; +} +// ======================================================== test_joint2 +int test_joint2 (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + docu = mon_ex.addDocument (); + case_name = "pb_joint"; + + Hex::Vector* vx = docu->addVector (1, 0, 0); + Hex::Vector* vz = docu->addVector (0, 0, 1); + Hex::Vertex* hori = docu->addVertex (0, 0, 0); + + double da = 360; + double dr = 2; + double dl = 1; + int nr = 1; + int na = 8; + int nl = 1; + bool fill = true; + + Hex::Elements *bgrid=NULL, *hgrid=NULL; + + hgrid = docu->makeCylindrical (hori, vx,vz, dr,da,dl, nr,na,nl, fill); + docu->dump (); + save_vtk (); + + Hex::Vertex* bori = docu->addVertex (0, 0, -5); + bgrid = docu->makeCylindrical (bori, vx,vz, dr,da,dl, nr,na,nl, fill); + save_vtk (); + + Hex::Quads qsource, qdest; + printf (" Source = "); + for (int ny=0 ; ny< na ; ny++) + { + Hex::Quad* quad = hgrid->getQuadIJ (0, ny, 0); + PrintName (quad); + qsource.push_back (quad); + } + printf ("\n "); + for (int ny=0 ; ny<4 ; ny++) + { + Hex::Quad* quad = hgrid->getKerHQuad (ny); + PrintName (quad); + qsource.push_back (quad); + } + printf ("\n"); + + + printf (" Cible = "); + for (int ny=0 ; ny< na ; ny++) + { + Hex::Quad* quad = bgrid->getQuadIJ (0, ny, 1); + PrintName (quad); + qdest.push_back (quad); + } + printf ("\n "); + for (int ny=0 ; ny<4 ; ny++) + { + Hex::Quad* quad = bgrid->getKerHQuad (ny+4); + PrintName (quad); + qdest.push_back (quad); + } + printf ("\n"); + docu ->setLevel (1); + Hex::Quad* cible = bgrid->getQuadIJ (0, 1, 1); + Hex::Vertex* vc1 = bgrid->getVertexIJK (0, 1, 1); + Hex::Vertex* vc2 = bgrid->getVertexIJK (1, 1, 1); + + Hex::Vertex* vs1 = hgrid->getVertexIJK (0, 0, 0); + Hex::Vertex* vs2 = hgrid->getVertexIJK (1, 0, 0); + + docu->joinQuads (qsource, cible, vs1, vc1, vs2, vc2, 1); + save_vtk (); + + return HOK; +} +// ======================================================== test_croix +int test_croix (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + docu = mon_ex.addDocument (); + + Hex::Vertex* ori1 = docu->addVertex ( 100,0,0); + Hex::Vertex* ori2 = docu->addVertex (-5,0,5); + Hex::Vector* vz = docu->addVector ( 0,0,1); + Hex::Vector* vx = docu->addVector ( 1,0,0); + + double r1 = 2; + double r2 = 3; + double l1 = 5; + double l2 = 10; + + Hex::Cylinder* cyl1 = docu->addCylinder (ori1, vz, r1, l1); + Hex::Cylinder* cyl2 = docu->addCylinder (ori2, vx, r2, l2); + Hex::CrossElements* grid = docu->makeCylinders (cyl1, cyl2); + + case_name = "croix"; + save_vtk (); + PutData ((BadElement (grid))); + + + Hex::Edge* pipo = docu->addEdge (ori1, ori1); + PutData (pipo->isValid()); + PutData ((BadElement (pipo))); + return HOK; + + del_tranche (grid, 0, 1, 0); + del_tranche (grid, 0, 1, 5); + + del_tranche (grid, 1, 1, 0); + del_tranche (grid, 1, 1, 3); + + del_tranche (grid, 1, 0, 0); + del_tranche (grid, 1, 0, 3); + // Le trognon + del_tranche (grid, 0, 0, 0); + del_tranche (grid, 0, 0, 5); + del_tranche (grid, 0, 0, 1); + del_tranche (grid, 0, 0, 2); + del_tranche (grid, 0, 0, 3); + del_tranche (grid, 0, 0, 4); + // Partie critique + + del_tranche (grid, 1, 1, 1, 2); + + del_tranche (grid, 0, 1, 1, 2); + del_tranche (grid, 0, 1, 4, 2); + del_tranche (grid, 0, 1, 3, 2); + del_tranche (grid, 0, 1, 2, 2); + + del_tranche (grid, 1, 1, 2, 2); + return HOK; +} +// ======================================================== test_pipes +int test_pipes (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* ori1 = doc->addVertex ( 0,0,0); + Hex::Vertex* ori2 = doc->addVertex (-5,0,5); + Hex::Vector* vz = doc->addVector ( 0,0,1); + Hex::Vector* vx = doc->addVector ( 1,0,0); + +// double h1 = 5, ri1 = 1, re1 = 2; + double h1 = 10, ri1 = 1, re1 = 2; + double h2 = 10, ri2 = 2, re2 = 3; + + Hex::Pipe* pipe1 = doc->addPipe (ori1, vz, ri1, re1, h1); + Hex::Pipe* pipe2 = doc->addPipe (ori2, vx, ri2, re2, h2); + Hex::CrossElements* grid = doc->makePipes (pipe1, pipe2); + + case_name = "pipe"; + docu = doc; + save_vtk (); + + del_tranche (grid, 0, 1, 0); + del_tranche (grid, 0, 1, 5); + + del_tranche (grid, 1, 1, 0); + del_tranche (grid, 1, 1, 3); + // Partie critique + + del_tranche (grid, 1, 1, 1, 2); + + del_tranche (grid, 0, 1, 1, 2); + del_tranche (grid, 0, 1, 4, 2); + del_tranche (grid, 0, 1, 3, 2); + del_tranche (grid, 0, 1, 2, 2); + + del_tranche (grid, 1, 1, 2, 2); + /* *************************************************** + + int nbz [2] = { 8, 4 }; + int ni = 1; + for (int cyl = 0 ; cyl < 2 ; cyl++) + for (int nk = 0 ; nk < nbz[cyl] ; nk++) + for (int nj = 0 ; nj < 4 ; nj++) + { + int jj = nj; + if (cyl==0) jj = (jj+6) MODULO 8 ; + Hex::Hexa* hexa = grid->getHexaIJK (cyl, ni, jj, nk); + if (hexa!=NULL) + { + hexa->remove (); + doc->saveVtk (case_name, nbr_vtk); + } + } + *************************************************** */ + return HOK; +} +// ======================================================== test_lorraine +int test_lorraine(int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* ori1 = doc->addVertex ( 0,0,0); + Hex::Vertex* ori2 = doc->addVertex (-5,0,5); + Hex::Vertex* ori3 = doc->addVertex ( 0,0,12); + Hex::Vertex* ori4 = doc->addVertex (-5,0,17); + + Hex::Vector* vz = doc->addVector ( 0,0,1); + Hex::Vector* vx = doc->addVector ( 1,0,0); + + int nl1 = 10; + int nl2 = 10; + + double rsmall = 1; + double rmoy = 2; + double rbig = 3; + + Hex::Cylinder* cyl1 = doc->addCylinder (ori1, vz, rmoy, nl1); + Hex::Cylinder* cyl2 = doc->addCylinder (ori2, vx, rsmall, nl2); + + Hex::Cylinder* cyl3 = doc->addCylinder (ori3, vz, rmoy, nl1); + Hex::Cylinder* cyl4 = doc->addCylinder (ori4, vx, rbig, nl2); + + Hex::CrossElements* grid1 = doc->makeCylinders (cyl1, cyl2); + Hex::CrossElements* grid2 = doc->makeCylinders (cyl4, cyl3); + +#define Imprimer(x) printf (#x " = ") ; if (x) x->dump() ; else printf ("NULL\n") + const int nx_int = 0; + const int nx_ext = 1; + + // vc2 = grid1->getVertexIJK (Hex::CylBig, 0,0,0); + // vc3 = grid2->getVertexIJK (Hex::CylSmall, 0,0,0); + // Cyl i j k + Hex::Quad* qb = grid1-> getQuadIJ (Hex::CylBig, nx_ext, Hex::S_E, 4); + Hex::Quad* qh = grid2-> getQuadIJ (Hex::CylSmall, nx_ext, Hex::S_N, 0); + + Hex::Vertex* vb0 = qb->getVertex (3); + Hex::Vertex* vb1 = qb->getVertex (2); + Hex::Vertex* vh0 = qh->getVertex (0); + Hex::Vertex* vh1 = qh->getVertex (1); + + vb0 = grid1->getVertexIJK (Hex::CylBig, 2, Hex::S_E, 4); // cible + vb1 = grid1->getVertexIJK (Hex::CylBig, 2, Hex::S_NE, 4); + vh0 = grid2->getVertexIJK (Hex::CylSmall, 2, Hex::S_N, 0); // depart + vh1 = grid2->getVertexIJK (Hex::CylSmall, 2, Hex::S_NW, 0); + + Imprimer (vh0); + Imprimer (vh1); + Imprimer (vb0); + Imprimer (vb1); + + // qb->remove (); + // qh->remove (); + Hex::Quads hliste; + + hliste.push_back (qh); + for (int ny=1; nygetQuadIJ (Hex::CylSmall, nx_ext, ns, 0)); + } + + for (int ny=0; ny<4 ; ny++) + hliste.push_back (grid2->getQuadIJ (Hex::CylSmall, nx_int, ny, 0)); + + int hauteur = 3; + doc->joinQuads (hliste, qb, vh0, vb0, vh1, vb1, hauteur); + doc->saveVtk ("lorraine.vtk"); + + // doc->dump (); + return HOK; +} +// ======================================================== test_disconnect2 +// === Disconnect Edge seul +int test_disconnect2 (int nbargs, cpchar tabargs[]) +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 1; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig2 = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid2 = doc->makeCartesian (orig2, dir, size_x,size_y,size_z); + + doc->dump (); + + int nvtk = 0; + doc->setLevel (1); + Hex::Matrix matrice; + Hex::Vector* ecart = doc->addVector (0.5,0.5,0); + matrice.defTranslation (ecart); + + Hex::Hexa* hexa2 = grid2->getHexaIJK (1,1,0); + Hex::Edge* edge = grid2->getEdgeK (1,2,0); + + hexa2->setScalar (2); + edge->setScalar (5); + + doc->saveVtk ("test_disco", nvtk); + + doc->setLevel (4); + + Hex::Elements* disco_edges = doc->disconnectEdge (hexa2, edge); + HexDisplay (disco_edges->countVertex()); + HexDisplay (disco_edges->countEdge()); + HexDisplay (disco_edges->countQuad()); + HexDisplay (disco_edges->countHexa()); + + // hexa2->transform (&matrice); + /********************************** + for (int ns=0; nscountVertex(); ns++) + { + Hex::Vertex* sommet = disco_edges->getVertex(ns); + sommet->setX (sommet->getX()+0.5); + sommet->setY (sommet->getY()+0.5); + } + ********************************* */ + + doc->saveVtk ("test_disco", nvtk); + doc->save ("test_disco"); + doc->dump (); + hexa2->dumpFull (); + + doc->setLevel (4); + return HOK; +} +// ======================================================== test_disconnect4 +// === Disconnect Edges +int test_disconnect4 (int nbargs, cpchar tabargs[]) +{ + const int size_x = 1; + const int size_y = 2; + const int size_z = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig2 = doc->addVertex (0,0,0); + Hex::Vector* vx = doc->addVector (1,0,0); + Hex::Vector* vy = doc->addVector (0,1,0); + Hex::Vector* vz = doc->addVector (0,0,1); + Hex::Elements* grid2 = doc->makeCartesian (orig2, vx,vy,vz, size_x,size_y,size_z); + + int nvtk = 0; + doc->setLevel (1); + + Hex::Hexas t_hexas; + Hex::Edges t_edges; + for (int nk=0 ; nk< size_z; nk++) + { + Hex::Hexa* hexa2 = grid2->getHexaIJK (0,0,nk); + Hex::Edge* edge = grid2->getEdgeK (0,1,nk); + + hexa2->setScalar (2); + edge->setScalar (5); + t_hexas.push_back (hexa2); + t_edges.push_back (edge); + + doc->setLevel (4); + } + + doc->dump (); + doc->saveVtk ("test_disco", nvtk); + /* Hex::Elements* disco_edges = */ doc->disconnectEdges (t_hexas, t_edges); + doc->saveVtk ("test_disco", nvtk); + doc->dump (); + // hexa2->dumpFull (); + + doc->setLevel (4); + return HOK; +} +// ======================================================== test_disconnect +// ==== Disconnect Quad +int test_disconnect1 (int nbargs, cpchar tabargs[]) +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 1; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid1 = doc->makeCartesian (orig1, dir, size_x,size_y,size_z); + + int nvtk = 0; + doc->setLevel (1); + Hex::Matrix matrice; + Hex::Vector* ecart = doc->addVector (0.5,0.5,0); + matrice.defTranslation (ecart); + + Hex::Hexa* hexa1 = grid1->getHexaIJK (1,1,0); + Hex::Quad* quad = grid1->getQuadJK (1,1,0); + + quad->setScalar (5); + + doc->saveVtk ("test_disco", nvtk); + doc->disconnectQuad (hexa1, quad); + // hexa1 ->transform (&matrice); + doc->saveVtk ("test_disco", nvtk); + + // doc->dumpPropagation (); + // doc->dump (); + + doc->save ("disco_all"); + return HOK; +} +// ======================================================== test_disconnect3 +// ==== disconnectVertex +int test_disconnect3 (int nbargs, cpchar tabargs[]) +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 1; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex (0,0,0); + + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid1 = doc->makeCartesian (orig1, dir, size_x,size_y,size_z); + + int nvtk = 0; + doc->setLevel (1); + Hex::Matrix matrice; + Hex::Vector* ecart = doc->addVector (0.5,0.5,0); + matrice.defTranslation (ecart); + + Hex::Hexa* hexa1 = grid1->getHexaIJK (1,1,0); + Hex::Vertex* vertex = grid1->getVertexIJK (1,1,1); + + vertex->setScalar (5); + + doc->saveVtk ("test_disco", nvtk); + + doc->disconnectVertex (hexa1, vertex); + // hexa1->transform (&matrice); + doc->saveVtk ("test_disco", nvtk); + + // doc->dumpPropagation (); + // doc->dump (); + + doc->save ("disco_all"); + return HOK; +} +// ======================================================== contraction +void contraction (Hex::Hexa* hexa, Hex::Elements* grid) +{ + return; + Hex::Real3 cg = { 0, 0, 0 }; + + for (int nro=0; nrogetVertex(nro)->getX()/Hex::HV_MAXI; + cg [1] += hexa->getVertex(nro)->getY()/Hex::HV_MAXI; + cg [2] += hexa->getVertex(nro)->getZ()/Hex::HV_MAXI; + } + + int nbvertex = grid->countVertex(); + const double coeff = 0.5; + for (int nro=0; nrogetVertex(nro); + Hex::Real3 pold = { pv->getX(), pv->getY(), pv->getZ() }; + Hex::Real3 pnew; + for (int dd=0; dd<3 ; dd++) + pnew [dd] = cg[dd] + coeff * (pold[dd]-cg[dd]); + + pv->setX (pnew[0]); + pv->setY (pnew[1]); + pv->setZ (pnew[2]); + } +} +// ======================================================== test_disconnect +// ==== Les 3 disconnect +int test_disconnect (int nbargs, cpchar tabargs[]) +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 1; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig1 = doc->addVertex (0,0,0); + Hex::Vertex* orig2 = doc->addVertex (4,0,0); + Hex::Vertex* orig3 = doc->addVertex (8,0,0); + + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid1 = doc->makeCartesian (orig1, dir, size_x,size_y,size_z); + Hex::Elements* grid2 = doc->makeCartesian (orig2, dir, size_x,size_y,size_z); + Hex::Elements* grid3 = doc->makeCartesian (orig3, dir, size_x,size_y,size_z); + + int nvtk = 0; + doc->setLevel (1); + Hex::Matrix matrice; + Hex::Vector* ecart = doc->addVector (0.5,0.5,0); + matrice.defTranslation (ecart); + + Hex::Hexa* hexa1 = grid1->getHexaIJK (1,1,0); + Hex::Hexa* hexa2 = grid2->getHexaIJK (1,1,0); + Hex::Hexa* hexa3 = grid3->getHexaIJK (1,1,0); + + Hex::Quad* quad = grid1->getQuadJK (1,1,0); + Hex::Edge* edge = grid2->getEdgeK (1,2,0); + Hex::Vertex* vertex = grid3->getVertexIJK (1,1,1); + + quad->setScalar (5); + edge->setScalar (5); + vertex->setScalar (5); + + doc->saveVtk ("test_disco", nvtk); + doc->disconnectQuad (hexa1, quad); + doc->saveVtk ("test_disco", nvtk); + + doc->disconnectEdge (hexa2, edge); + doc->saveVtk ("test_disco", nvtk); + + doc->disconnectVertex (hexa3, vertex); + doc->saveVtk ("test_disco", nvtk); + + // doc->dumpPropagation (); + // doc->dump (); + + doc->save ("disco_all"); + return HOK; +} +// ======================================================== test_propagation +int test_propagation () +{ + const int size_x = 2; + const int size_y = 1; + const int size_z = 1; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + // Hex::Elements* grid = + doc->makeCartesian (orig, dir, size_x,size_y,size_z); + + int nb = doc->countPropagation (); + for (int nro=0 ; nrogetPropagation (nro); + const Hex::Edges& table = prop->getEdges (); + printf (" ____________________________________ Prop nro %d\n", nro); + for (int ned=0 ; ned<(int)table.size() ; ned++) + { + bool way = table [ned]->getWay (); + + if (way) + { + printf (" ("); + table [ned]->getVertex (0)->printName (", "); + table [ned]->getVertex (1)->printName (")\n"); + } + else + { + printf (" ("); + table [ned]->getVertex (1)->printName (", "); + table [ned]->getVertex (0)->printName (")\n"); + } + } + } + + doc->dump (); + doc->saveVtk ("test_propagation.vtk"); + doc->save ("test_propagation"); + + return HOK; +} +// ======================================================== test_move +int test_move () +{ + const int size_x = 1; + const int size_y = 1; + const int size_z = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); + + Hex::Vector* enhaut = doc->addVector (0, 0, 5); + Hex::Vector* devant = doc->addVector (5, 0, 0); + // Hex::Vector* agauche = doc->addVector (0, 5, 0); + + Hex::Matrix matrice; + matrice.defTranslation (enhaut); + + Hex::Hexa* cube = grid->getHexa (1); + Hex::Quad* dessous = cube->getQuad (Hex::Q_A); + dessous->dump(); + + Hex::Elements* grid2 = doc->makeTranslation (grid, devant); + /* Hex::Elements* grid3 = doc->makeTranslation (grid, agauche); */ + Hex::Hexa* cube2 = grid2->getHexa (1); + + doc ->saveVtk ("move0.vtk"); + + cube ->disconnectQuad (dessous); + cube ->transform (&matrice); + cube2->transform (&matrice); + + doc ->saveVtk ("move1.vtk"); + doc ->dump(); + + return HOK; +} +// ======================================================== test_transfo2 +int test_transfo2 (int nbargs, cpchar tabargs[]) +{ + const int size_x = 1; + const int size_y = 1; + const int size_z = 2; + + int nvtk = 0; + cpchar fic_vtk = "transfo"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + doc ->setLevel (1); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x, size_y, + size_z); + if (grid==NULL) + return HERR; + + orig->setScalar(2); + + doc ->saveVtk (fic_vtk, nvtk); + + Hex::Vector* devant = doc->addVector (5, 0, 0); + + Hex::Elements* grid2 = doc->makeTranslation (grid, devant); + if (grid2==NULL) + return HERR; + doc ->saveVtk (fic_vtk, nvtk); + + Hex::Elements* grid3 = doc->makeScale (grid2, orig, 2); + if (grid3==NULL) + return HERR; + doc ->saveVtk (fic_vtk, nvtk); + + Hex::Elements* grid4 = doc->makeRotation (grid2, orig, dir, 45); + if (grid4==NULL) + return HERR; + doc ->saveVtk (fic_vtk, nvtk); + + Hex::Elements* grid5 = doc->makeSymmetryPoint (grid4, orig); + if (grid5==NULL) + return HERR; + + doc ->saveVtk (fic_vtk, nvtk); + + Hex::Vector* dir1 = doc->addVector (1,0,0); + Hex::Elements* grid6 = doc->makeSymmetryLine (grid4, orig, dir1); + if (grid6==NULL) + return HERR; + + grid4->getHexa(0)->getVertex(0)->setScalar(3); + grid6->getHexa(0)->getVertex(0)->setScalar(3); + doc ->saveVtk (fic_vtk, nvtk); + + grid4->getHexa(0)->getVertex(0)->setScalar(0); + grid6->getHexa(0)->getVertex(0)->setScalar(0); + + Hex::Elements* grid7 = doc->makeSymmetryLine (grid2, orig, dir1); + if (grid7==NULL) + return HERR; + + grid2->getHexa(0)->getVertex(0)->setScalar(4); + grid7->getHexa(0)->getVertex(0)->setScalar(4); + doc ->saveVtk (fic_vtk, nvtk); + + grid2->getHexa(0)->getVertex(0)->setScalar(0); + grid7->getHexa(0)->getVertex(0)->setScalar(0); + + Hex::Elements* grid8 = doc->makeSymmetryPlane (grid2, orig, dir1); + if (grid8==NULL) + return HERR; + + grid2->getHexa(0)->getVertex(0)->setScalar(4); + grid8->getHexa(0)->getVertex(0)->setScalar(4); + doc ->saveVtk (fic_vtk, nvtk); + grid2->getHexa(0)->getVertex(0)->setScalar(0); + grid8->getHexa(0)->getVertex(0)->setScalar(0); + + Hex::Elements* grid9 = doc->makeSymmetryPlane (grid3, orig, dir); + if (grid9==NULL) + return HERR; + + grid3->getHexa(0)->getVertex(0)->setScalar(4); + grid9->getHexa(0)->getVertex(0)->setScalar(4); + doc ->saveVtk (fic_vtk, nvtk); + + grid9->getHexa(0)->removeConnected (); + doc ->saveVtk (fic_vtk, nvtk); + + return HOK; +} +// ======================================================== test_transfo +int test_transfo (int nbargs, cpchar tabargs[]) +{ + int nvtk = 0; + cpchar fic_vtk = "transfo"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + doc ->setLevel (1); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vector* vx = doc->addVector (1,0,0); + Hex::Vector* vz = doc->addVector (0,0,1); + double dr = 1; + double da = 360; + double dl = 1; + int nr = 3; + int na = 8; + int nl = 3; + Hex::Elements* grid = doc->makeCylindrical (orig, vx,vz, dr, da, dl, + nr, na, nl, false); + if (grid==NULL) + return HERR; + + doc ->saveVtk (fic_vtk, nvtk); + Hex::Vector* devant = doc->addVector (10, 0, 0); + + Hex::Elements* grid2 = doc->makeTranslation (grid, devant); + if (grid2==NULL) + return HERR; + doc ->saveVtk (fic_vtk, nvtk); + + return HOK; +} +// ======================================================== test_copy_document +int test_copy_document (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.loadDocument ("Essai"); + doc ->saveVtk ("restore1.vtk"); + + Hex::Document* clone = doc->copyDocument(); + clone->saveVtk ("restore2.vtk"); + + return HOK; +} +// ======================================================== test_remove +int test_remove () +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 2; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0,0,0); + Hex::Vertex* orig1 = doc->addVertex (6,0,0); + Hex::Vector* dir = doc->addVector (1,1,1); + Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); + doc->makeCartesian (orig1, dir, 1,1,1); + doc->saveVtk ("removeConn1.vtk"); + + Echo ("--------- Avant destruction"); + HexDisplay (doc->countVertex ()); + HexDisplay (doc->countEdge ()); + HexDisplay (doc->countQuad ()); + HexDisplay (doc->countHexa ()); + HexDisplay (doc->countUsedVertex ()); + HexDisplay (doc->countUsedEdge ()); + HexDisplay (doc->countUsedQuad ()); + HexDisplay (doc->countUsedHexa ()); + + + doc->removeConnectedHexa (grid->getHexaIJK (0,0,0)); + + Echo ("--------- Apres destruction"); + HexDisplay (doc->countVertex ()); + HexDisplay (doc->countEdge ()); + HexDisplay (doc->countQuad ()); + HexDisplay (doc->countHexa ()); + + HexDisplay (doc->countUsedVertex ()); + HexDisplay (doc->countUsedEdge ()); + HexDisplay (doc->countUsedQuad ()); + HexDisplay (doc->countUsedHexa ()); + doc->saveVtk ("removeConn2.vtk"); + + return HOK; +} +// ================================================== init_vec +void init_vec (Hex::RealVector& tab, double n0=0, double n1=0, double n2=0, + double n3=0, double n4=0, double n5=0, double n6=0, + double n7=0, double n8=0, double n9=0, double n10=0, + double n11=0, double n12=0, double n13=0, double n14=0, + double n15=0, double n16=0) +{ + if (n0>0.0) tab.push_back (n0); + if (n1>0.0) tab.push_back (n1); + if (n2>0.0) tab.push_back (n2); + if (n3>0.0) tab.push_back (n3); + if (n4>0.0) tab.push_back (n4); + if (n5>0.0) tab.push_back (n5); + if (n6>0.0) tab.push_back (n6); + if (n7>0.0) tab.push_back (n7); + if (n8>0.0) tab.push_back (n8); + if (n9>0.0) tab.push_back (n9); + + if (n10>0.0) tab.push_back (n10); + if (n11>0.0) tab.push_back (n11); + if (n12>0.0) tab.push_back (n12); + if (n13>0.0) tab.push_back (n13); + if (n14>0.0) tab.push_back (n14); + if (n15>0.0) tab.push_back (n15); + if (n16>0.0) tab.push_back (n16); +} +// ================================================== test_cylindricals +int test_cylindricals (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0, 0, 0); + Hex::Vector* vz = doc->addVector (0, 0, 1); + Hex::Vector* vx = doc->addVector (1 ,0, 0); + + Hex::RealVector tdr, tda, tdl; + + /****************** + init_vec (tdr, 2, 1, 0.5); + init_vec (tda, 40, 35, 30, 25, 20, 15, 10, 5, + 5, 10, 15, 20, 25, 30, 35, 40); + init_vec (tdl, 1, 2, 3 ); + + init_vec (tdr, 1, 1, 1, 1); + init_vec (tda, 45,45, 45,45, 45,45, 45,45 ); + init_vec (tdl, 1, 1, 1 ); + + ****************** */ + + + init_vec (tdr, 1, 2, 1, 2); + init_vec (tda, 20, 20, 20 ); + init_vec (tdl, 1 ); + + Hex::Elements* grid=doc->makeCylindricals (orig, vx,vz, tdr,tda,tdl, false); + + doc->saveVtk ("cylindricals.vtk"); + doc->dump(); + grid->clearAssociation(); + doc->clearAssociation(); + return HOK; +} +// ======================================================== test_edge +int test_edge (int nbargs, cpchar tabargs[]) +{ + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (); + + Hex::Vertex* orig = doc->addVertex (0, 0, 0); + Hex::Vector* vx = doc->addVector (1 ,0, 0); + doc->addEdge (orig, vx); + + HexDisplay (doc->countVertex()); + HexDisplay (doc->countEdge()); + doc->dump (); + return HOK; +} +// ======================================================== test_hexa +int test_hexa (int nbargs, cpchar tabargs[]) +{ + int ier = 0; + Hex::Hex mon_ex; + Hex::Document* doc1 = mon_ex.loadDocument ("bielle_triang"); + Hex::Document* doc2 = mon_ex.loadDocument ("bielle_triang"); + PutData (doc1->getName ()); + PutData (doc2->getName ()); + return ier; + + + goto_workspace (); + ier = test_cylindricals (nbargs, tabargs); + ier = test_transfo (nbargs, tabargs); + free_workspace (); + + return ier; +} diff --git a/src/HEXABLOCK/test_hexa5.cxx b/src/HEXABLOCK/test_hexa5.cxx new file mode 100644 index 0000000..f7637cf --- /dev/null +++ b/src/HEXABLOCK/test_hexa5.cxx @@ -0,0 +1,182 @@ + +// C++ : Tests unitaires sur les creations h'hexaedres + +// Copyright (C) 2009-2011 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com +// +#include "Hex.hxx" + +#include + +#include "HexDocument.hxx" +#include "HexElements.hxx" +#include "HexCrossElements.hxx" + +#include "HexHexa.hxx" +#include "HexQuad.hxx" +#include "HexEdge.hxx" +#include "HexVertex.hxx" + +#include "HexCramer.hxx" + +// ======================================================== test_hexa_quads_5 +int test_replace5 (int nbargs, cpchar tabargs[]) +{ + const int size_x = 4; + const int size_y = 4; + const int size_z = 2; + + double lgcell = 3; + double cray = lgcell*size_x/2; + double decal = lgcell/sqrt (2.0); + + int nvtk = 0; + cpchar son_nom = "replace5"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (son_nom); + + Hex::Vertex* ori1 = doc->addVertex (-cray, -cray, 0); + Hex::Vector* vx = doc->addVector (3,0,0); + Hex::Vector* vy = doc->addVector (0,3,0); + Hex::Vector* vz = doc->addVector (0,0,1); + + Hex::Elements* grid1 = doc->makeCartesian (ori1, vx, vy, vz, + size_x,size_y,size_z); + doc->saveVtk (son_nom, nvtk); + +/************************ + for (int nz=0 ; nzgetHexaIJK (nx,ny,nz)->remove (); + + doc->saveVtk (son_nom, nvtk); +********************/ + + for (int nz=0 ; nz<=size_z ; ++nz) + { + grid1->getVertexIJK (1, 1, nz)->setX (-decal); + grid1->getVertexIJK (1, 1, nz)->setY (-decal); + + grid1->getVertexIJK (1, 3, nz)->setX (-decal); + grid1->getVertexIJK (1, 3, nz)->setY ( decal); + + grid1->getVertexIJK (3, 1, nz)->setX ( decal); + grid1->getVertexIJK (3, 1, nz)->setY (-decal); + + grid1->getVertexIJK (3, 3, nz)->setX ( decal); + grid1->getVertexIJK (3, 3, nz)->setY ( decal); + } + + doc->saveVtk (son_nom, nvtk); + + Hex::Vertex* ori0 = doc->addVertex (0,-10,0); + Hex::Vertex* ori2 = doc->addVertex (0,0,0); + const double dr = 1; + const double da = 360; + const double dl = 1; + const int nr = 2; + const int na = 8; + const int nl = 3; + + + Hex::Elements* grid0 = doc->makeCylindrical (ori0, vx, vz, + dr, da, dl, nr, na, 1, false); + + doc->saveVtk (son_nom, nvtk); + + Hex::Elements* grid2 = doc->makeCylindrical (ori2, vx, vz, + dr, da, dl, nr, na, nl, false); + + doc->saveVtk (son_nom, nvtk); + grid0->remove (); + doc->saveVtk (son_nom, nvtk); + return HOK; +} +// ======================================================== test_get +int test_get (int nbargs, cpchar tabargs[]) +{ + const int size_x = 2; + const int size_y = 2; + const int size_z = 2; + + int nvtk = 0; + cpchar son_nom = "test_get"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (son_nom); + + Hex::Vertex* ori1 = doc->addVertex (0,0,0); + Hex::Vector* vx = doc->addVector (1,0,0); + Hex::Vector* vy = doc->addVector (0,1,0); + Hex::Vector* vz = doc->addVector (0,0,1); + + Hex::Elements* grid = doc->makeCartesian (ori1, vx, vy, vz, + size_x,size_y,size_z); + doc->saveVtk (son_nom, nvtk); + grid->getVertexIJK (2, 1, 1)->setColor (4); + doc->saveVtk (son_nom, nvtk); + + grid->getVertexIJK (2, 1, 1)->setColor (0); + grid->getEdgeK (1, 0, 1)->setColor (4); + doc->saveVtk (son_nom, nvtk); + + grid->getEdgeK (1, 0, 1)->setColor (0); + grid->getQuadIJ (1, 0, 2)->setColor (4); + doc->saveVtk (son_nom, nvtk); + + grid->getHexaIJK (1, 0, 1)->setColor (4); + doc->saveVtk (son_nom, nvtk); + doc->saveVtk (son_nom, nvtk); + doc->saveVtk (son_nom, nvtk); + doc->saveVtk (son_nom, nvtk); + doc->saveVtk (son_nom, nvtk); + doc->saveVtk (son_nom, nvtk); + doc->saveVtk (son_nom, nvtk); + doc->saveVtk (son_nom, nvtk); + +} +// ======================================================== test_dump +int test_dump (int nbargs, cpchar tabargs[]) +{ + const int size_x = 4; + const int size_y = 4; + const int size_z = 2; + + double lgcell = 3; + double cray = lgcell*size_x/2; + double decal = lgcell/sqrt (2.0); + + int nvtk = 0; + cpchar son_nom = "test_dump"; + + Hex::Hex mon_ex; + Hex::Document* doc = mon_ex.addDocument (son_nom); + + Hex::Vertex* ori1 = doc->addVertex (-cray, -cray, 0); + Hex::Vector* vx = doc->addVector (3,0,0); + Hex::Vector* vy = doc->addVector (0,3,0); + Hex::Vector* vz = doc->addVector (0,0,1); + + Hex::Elements* grid1 = doc->makeCartesian (ori1, vx, vy, vz, + size_x,size_y,size_z); + doc->saveVtk (son_nom, nvtk); + return HOK; +} diff --git a/src/HEXABLOCK/test_tools.cxx b/src/HEXABLOCK/test_tools.cxx new file mode 100755 index 0000000..1b6c61f --- /dev/null +++ b/src/HEXABLOCK/test_tools.cxx @@ -0,0 +1,59 @@ + +// C++ : Outils communs aux tests unitaires + +// Copyright (C) 2009-2011 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com + + +#include "test_unit.hxx" + +#include +#include +#include + +static int nbr_vtk = 0; +static cpchar case_name = "hexa"; +static Hex::Document* docu = NULL; + +static string workspace = "/tmp/test_hexablock"; + +// ======================================================== call_system +void call_system (const string& command) +{ + system (command.c_str()); +} +// ======================================================== goto_workspace +void goto_workspace () +{ + string rmdir = "rm -rf "; + string mkdir = "mkdir -p "; + + call_system (rmdir + workspace); + call_system (mkdir + workspace); + + chdir (workspace.c_str()); +} +// ======================================================== free_workspace +void free_workspace () +{ + string chmod = "chmod 777 "; + + call_system (chmod + workspace); + call_system (chmod + workspace + "/*"); +} diff --git a/src/HEXABLOCK/test_unit.hxx b/src/HEXABLOCK/test_unit.hxx new file mode 100644 index 0000000..33f4a0b --- /dev/null +++ b/src/HEXABLOCK/test_unit.hxx @@ -0,0 +1,77 @@ + +// Copyright (C) 2009-2011 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ +// or email : webmaster.salome@opencascade.com +// + +#ifndef _TEST_UNIT_H_ +#define _TEST_UNIT_H_ + +#include "hexa_base.hxx" + +void goto_workspace (); +void free_workspace (); + +int test_sphere (int nbargs, cpchar tabargs[]); +int test_joint (int nbargs, cpchar tabargs[]); +int test_prism (int nbargs, cpchar tabargs[]); +int test_revolution9 (int nbargs, cpchar tabargs[]); +int test_revolution (int nbargs, cpchar tabargs[]); +int test_coude (int nbargs, cpchar tabargs[]); +int test_count (int nbargs, cpchar tabargs[]); +int test_decoupage (int nbargs, cpchar tabargs[]); +int test_gen_xml (int nbargs, cpchar tabargs[]); +int test_string_xml (int nbargs, cpchar tabargs[]); +int test_relecture (int nbargs, cpchar tabargs[]); +int test_spherical (int nbargs, const char* tabargs[]); +int test_grille_cyl (int nbargs, cpchar tabargs[]); +int test_asso_line (int nbargs, cpchar tabargs[]); +int test_cylindrical (int nbargs, cpchar tabargs[]); +int test_cylinder (int nbargs, cpchar tabargs[]); +int test_xml_cylinder (int nbargs, cpchar tabargs[]); +int test_pipe (int nbargs, cpchar tabargs[]); +int test_joint2 (int nbargs, cpchar tabargs[]); +int test_croix (int nbargs, cpchar tabargs[]); +int test_pipes (int nbargs, cpchar tabargs[]); +int test_lorraine(int nbargs, cpchar tabargs[]); +int test_disconnect2 (int nbargs, cpchar tabargs[]); +int test_disconnect4 (int nbargs, cpchar tabargs[]); +int test_disconnect1 (int nbargs, cpchar tabargs[]); +int test_disconnect3 (int nbargs, cpchar tabargs[]); +int test_disconnect (int nbargs, cpchar tabargs[]); +int test_transfo2 (int nbargs, cpchar tabargs[]); +int test_transfo (int nbargs, cpchar tabargs[]); +int test_copy_document (int nbargs, cpchar tabargs[]); +int test_cylindricals (int nbargs, cpchar tabargs[]); +int test_hexa (int nbargs, cpchar tabargs[]); + // Dans test_quads +int test_hexa_quads_5 (int nbargs, cpchar tabargs[]); +int test_hexa_quads_ab (int nbargs, cpchar tabargs[]); +int test_hexa_quads_ac (int nbargs, cpchar tabargs[]); +int test_hexa_quads_ace (int nbargs, cpchar tabargs[]); +int test_hexa_quads_acd (int nbargs, cpchar tabargs[]); +int test_hexa_quads_abcd (int nbargs, cpchar tabargs[]); +int test_hexa_quads_abce (int nbargs, cpchar tabargs[]); +int test_cramer (int nbargs, cpchar tabargs[]); +int test_hexa_quads_ac1 (int nbargs, cpchar tabargs[]); +int test_asso_grid (int nbargs, cpchar tabargs[]); +int test_piquage (int nbargs, cpchar tabargs[]); +int test_replace (int nbargs, cpchar tabargs[]); +int test_hemispheres (int nbargs, cpchar tabargs[]); +int test_quads (int nbargs, cpchar tabargs[]); +#endif diff --git a/src/HEXABLOCKGUI/AddShapeDialog_QTD.ui b/src/HEXABLOCKGUI/AddShapeDialog_QTD.ui new file mode 100644 index 0000000..a5f3229 --- /dev/null +++ b/src/HEXABLOCKGUI/AddShapeDialog_QTD.ui @@ -0,0 +1,49 @@ + + + AddShapeDialog + + + + 0 + 0 + 242 + 72 + + + + + 0 + 0 + + + + Dialog + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + Geometry: + + + + + + + + + + + + + + diff --git a/src/HEXABLOCKGUI/CutEdge_QTD.ui b/src/HEXABLOCKGUI/CutEdge_QTD.ui index dc68957..50569c5 100644 --- a/src/HEXABLOCKGUI/CutEdge_QTD.ui +++ b/src/HEXABLOCKGUI/CutEdge_QTD.ui @@ -79,6 +79,9 @@ 0 + + 1 + 1000000 diff --git a/src/HEXABLOCKGUI/Disconnect_QTD.ui b/src/HEXABLOCKGUI/Disconnect_QTD.ui index 0711c29..b5f82fe 100644 --- a/src/HEXABLOCKGUI/Disconnect_QTD.ui +++ b/src/HEXABLOCKGUI/Disconnect_QTD.ui @@ -6,12 +6,12 @@ 0 0 - 270 - 556 + 229 + 269 - + 0 0 @@ -21,420 +21,452 @@ - - + + true - - - 0 - 0 - - - - - 0 - 0 - - - - - 16777215 - 50 - - - - Disconnect - - - - QLayout::SetDefaultConstraint + + + + 0 + -318 + 234 + 556 + - - - - - 0 - 0 - - - - Vertex - - - true - - - - - - - - 0 - 0 - - - - Edge - - - - - - - - 0 - 0 - - - - Edges - - - - - - - Quad - - - - - - - - - - - 0 - 0 - - - - Arguments - - - - - - - 0 - 0 - - - - - 16777215 - 64 - - - - - - - vertex - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - from hexa : - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - - - - - 0 - 0 - - - - - 16777215 - 64 - - - - - - - edge - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - from hexa : - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - - - - - 0 - 0 - - - - - 16777215 - 64 - - - - - QLayout::SetDefaultConstraint + + + + + true + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 50 + + + + Disconnect + + + + QLayout::SetDefaultConstraint + + + + + + 0 + 0 + + + + Vertex + + + true + + + + + + + + 0 + 0 + + + + Edge + + + + + + + + 0 + 0 + + + + Edges + + + + + + + Quad + + + + + + + + + + + 0 + 0 + + + + Arguments + + + + + + + 0 + 0 + + + + + 16777215 + 64 + + + + + + + vertex + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + from hexa : + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 64 + + + + + + + edge + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + from hexa : + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 64 + + + + + QLayout::SetDefaultConstraint + + + QFormLayout::AllNonFixedFieldsGrow + + + + + quad + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + from hexa : + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Disconnect Edges + + + + + + + 0 + 0 + + + + + 16777215 + 70 + + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + From Hexa(s) + + + + + + + 0 + 0 + + + + + 16777215 + 70 + + + + + + + + + + + + + + + + + Qt::Vertical - - QFormLayout::AllNonFixedFieldsGrow + + + 20 + 40 + - - - - quad - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - from hexa : - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Disconnect Edges - - - - - - - 0 - 0 - - - - - 16777215 - 70 - - - - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - From Hexa(s) - - - - - - - 0 - 0 - - - - - 16777215 - 70 - - - - - - - - - - - + + + + diff --git a/src/HEXABLOCKGUI/EdgeAssoc_QTD.ui b/src/HEXABLOCKGUI/EdgeAssoc_QTD.ui index 50d4589..ad1d19c 100644 --- a/src/HEXABLOCKGUI/EdgeAssoc_QTD.ui +++ b/src/HEXABLOCKGUI/EdgeAssoc_QTD.ui @@ -49,7 +49,7 @@ 0 0 223 - 620 + 618 @@ -120,30 +120,16 @@ Vertex - - - - - - - First : - - - - - - - - 0 - 0 - - - - false - - - - + + + + + First: + + + + + @@ -308,6 +294,13 @@ + + + + End : + + + @@ -321,13 +314,6 @@ - - - - End : - - - @@ -339,9 +325,6 @@ 0.010000000000000 - - 1.000000000000000 - @@ -372,6 +355,20 @@ + + scrollArea + single_rb + multiple_rb + single_edge_le + single_line_le + pstart_spb + pend_spb + first_vex_le + edges_lw + lines_lw + close_cb + inverse_cb + @@ -390,22 +387,6 @@ - - close_cb - toggled(bool) - pend_spb - setDisabled(bool) - - - 196 - 495 - - - 120 - 581 - - - close_cb toggled(bool) @@ -694,5 +675,21 @@ + + close_cb + toggled(bool) + pend_spb + setDisabled(bool) + + + 81 + 489 + + + 142 + 569 + + + diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI.cxx index 4032e1b..8e6be3a 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI.cxx @@ -50,6 +50,10 @@ #include #include +#include +#include +#include +#include @@ -57,6 +61,7 @@ #include #include +#include // SALOME KERNEL includes @@ -68,7 +73,6 @@ -#include #include #include #include @@ -85,6 +89,7 @@ #include +#include #include @@ -96,12 +101,16 @@ #include "HEXABLOCKGUI_Export.hxx" #include "HEXABLOCKGUI_Trace.hxx" #include "HEXABLOCKGUI_Resource.hxx" +#include "GEOMBase.h" // #include "HEXABLOCKGUI_DataModel.hxx" -#include "HEXABLOCKGUI_DocumentGraphicView.hxx" + #include "HEXABLOCKGUI_DocumentModel.hxx" #include "HEXABLOCKGUI_DocumentSelectionModel.hxx" #include "HEXABLOCKGUI_DocumentDelegate.hxx" #include "HEXABLOCKGUI_DocumentPanel.hxx" +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" +#include "HEXABLOCKGUI_OccGraphicView.hxx" +#include "HEXABLOCKGUI_GraphicViewsHandler.hxx" #include @@ -111,122 +120,121 @@ #include "HEXABLOCK.hxx" #include "HexDocument_impl.hxx" +#include "Hex.hxx" #define DW_MINIMUM_WIDTH 50 #define DWINPUT_MINIMUM_HEIGHT 50 -#define DWINPUT_MINIMUM_WIDTH 255 +#define DWINPUT_MINIMUM_WIDTH 50//255 using namespace std; using namespace HEXABLOCK::GUI; int HEXABLOCKGUI::_oldStudyId = -1; +//bool jepeux = false; HEXABLOCK_ORB::HEXABLOCK_Gen_var HEXABLOCKGUI::_hexaEngine = HEXABLOCK_ORB::HEXABLOCK_Gen::_nil(); // SMESH::SMESH_Gen_var HEXABLOCKGUI::_smeshEngine = SMESH::SMESH_Gen::_nil(); -GEOM::GEOM_Gen_var HEXABLOCKGUI::_geomEngine = GEOM::GEOM_Gen::_nil(); + GEOM::GEOM_Gen_var HEXABLOCKGUI::_geomEngine = GEOM::GEOM_Gen::_nil(); // std::map HEXABLOCKGUI::svtkViews; // std::map HEXABLOCKGUI::svtkViews; // std::map HEXABLOCKGUI::salomeViews; -// HEXABLOCK::GUI::DocumentModel *HEXABLOCKGUI::_currentModel = NULL; +// HEXABLOCK::GUI::DocumentModel *HEXABLOCKGUI::getCurrentModel() = NULL; -SVTK_ViewWindow* HEXABLOCKGUI::currentVtkView = NULL; -OCCViewer_ViewWindow* HEXABLOCKGUI::currentOccView = NULL; -bool HEXABLOCKGUI::assocInProgress = false; +VtkDocumentGraphicView* HEXABLOCKGUI::currentDocGView = NULL; +OccGraphicView* HEXABLOCKGUI::currentOccGView = NULL; +MyGEOMBase_Helper* HEXABLOCKGUI::geomBaseHelper = NULL; +bool HEXABLOCKGUI::assocInProgress = false; +SalomeApp_Application* HEXABLOCKGUI::myApplication = NULL; +GEOMGUI_OCCSelector* HEXABLOCKGUI::currentOccSelector = NULL; HEXABLOCKGUI::HEXABLOCKGUI() : - SalomeApp_Module( "HEXABLOCK" ), // default name - LightApp_Module( "HEXABLOCK" ), - _menuId(190), - _dwPattern(0), - _dwAssociation(0), - _dwGroups(0), - _dwMesh(0), - _dwObjectBrowser(0), - _dwInputPanel(0), - _currentModel(0), - _patternDataModel(0), - _patternBuilderModel(0), - _patternDataTreeView(0), - _patternBuilderTreeView(0), - _associationTreeView(0), - _groupsTreeView(0), - _meshTreeView(0), - _currentGraphicView(0), - _treeViewDelegate(0), - _patternDataSelectionModel(0), - _patternBuilderSelectionModel(0), - _meshSelectionModel(0), - _groupsSelectionModel(0), -// _documentCnt(0), - _isSaved( false ), - moduleActivatedOnce(false), - vtkViewManager(0),//, - occViewManager(0), -// _selectFromTree( false ) - _vertexDiag(0), - _edgeDiag(0), - _quadDiag(0), - _hexaDiag(0), - _vectorDiag(0), - _cylinderDiag(0), - _pipeDiag(0), - _makeGridDiag(0), - _makeCylinderDiag(0), - _makePipeDiag(0), - _makeCylindersDiag(0), - _makePipesDiag(0), - _removeHexaDiag(0), - _prismQuadDiag(0), - _joinQuadDiag(0), - _mergeDiag(0), - _disconnectDiag(0), - _cutEdgeDiag(0), - _makeTransformationDiag(0), - _makeSymmetryDiag(0), - _performTransformationDiag(0), - _performSymmetryDiag(0), - _vertexAssocDiag(0), - _edgeAssocDiag(0), - _quadAssocDiag(0), - _groupDiag(0), - _lawDiag(0), - _propagationDiag(0), - _computeMeshDiag(0), - _replaceHexaDiag(0), - _quadRevolutionDiag(0), - _makeHemiSphereDiag(0), - currentDialog(NULL) -{ - DEBTRACE("HEXABLOCKGUI::HEXABLOCKGUI"); -// _studyContextMap.clear(); + SalomeApp_Module( "HEXABLOCK" ), // default name + LightApp_Module( "HEXABLOCK" ), + _menuId(190), + _dwPattern(0), + _dwAssociation(0), + _dwGroups(0), + _dwMesh(0), + _dwObjectBrowser(0), + _dwInputPanel(0), + _patternDataTreeView(0), + _patternBuilderTreeView(0), + _patternGeomTreeView(0), + _associationTreeView(0), + _groupsTreeView(0), + _meshTreeView(0), + _treeViewDelegate(0), + _isSaved( false ), + moduleActivatedOnce(false), + _vertexDiag(0), + _edgeDiag(0), + _quadDiag(0), + _hexaDiag(0), + _vectorDiag(0), + _cylinderDiag(0), + _pipeDiag(0), + _makeGridDiag(0), + _makeCylinderDiag(0), + _makePipeDiag(0), + _makeCylindersDiag(0), + _makePipesDiag(0), + _removeHexaDiag(0), + _prismQuadDiag(0), + _joinQuadDiag(0), + _mergeDiag(0), + _disconnectDiag(0), + _cutEdgeDiag(0), + _makeTransformationDiag(0), + _makeSymmetryDiag(0), + _performTransformationDiag(0), + _performSymmetryDiag(0), + _vertexAssocDiag(0), + _edgeAssocDiag(0), + _quadAssocDiag(0), + _groupDiag(0), + _lawDiag(0), + _propagationDiag(0), + _computeMeshDiag(0), + _replaceHexaDiag(0), + _quadRevolutionDiag(0), + _makeHemiSphereDiag(0), + _modelInfoDiag(NULL), + _addShapeDiag(NULL), + currentDialog(NULL) +{ + DEBTRACE("HEXABLOCKGUI::HEXABLOCKGUI"); + // _studyContextMap.clear(); + graphicViewsHandler = new GraphicViewsHandler(); + loadDocLastPath = new QDir(); + saveDocLastPath = new QDir(); } HEXABLOCKGUI::~HEXABLOCKGUI() { -// if ( getApp() ) -// disconnect( getApp(), SIGNAL(studyClosed()), _genericGui, SLOT (onCleanOnExit())); + // if ( getApp() ) + // disconnect( getApp(), SIGNAL(studyClosed()), _genericGui, SLOT (onCleanOnExit())); } SalomeApp_Study* HEXABLOCKGUI::activeStudy() { - SUIT_Application* app = SUIT_Session::session()->activeApplication(); - if( app ) - return dynamic_cast( app->activeStudy() ); - else - return NULL; + SUIT_Application* app = SUIT_Session::session()->activeApplication(); + if( app ) + return dynamic_cast( app->activeStudy() ); + else + return NULL; } // Gets an reference to the module's engine HEXABLOCK_ORB::HEXABLOCK_Gen_ptr HEXABLOCKGUI::InitHEXABLOCKGen( SalomeApp_Application* app ) { - Engines::EngineComponent_var comp = app->lcc()->FindOrLoad_Component( "FactoryServer", "HEXABLOCK" ); - HEXABLOCK_ORB::HEXABLOCK_Gen_ptr clr = HEXABLOCK_ORB::HEXABLOCK_Gen::_narrow(comp); - ASSERT(!CORBA::is_nil(clr)); - return clr; + Engines::EngineComponent_var comp = app->lcc()->FindOrLoad_Component( "FactoryServer", "HEXABLOCK" ); + HEXABLOCK_ORB::HEXABLOCK_Gen_ptr clr = HEXABLOCK_ORB::HEXABLOCK_Gen::_narrow(comp); + ASSERT(!CORBA::is_nil(clr)); + return clr; } // // Gets an reference to SMESH's engine CS_TO_DELETE @@ -241,285 +249,326 @@ HEXABLOCK_ORB::HEXABLOCK_Gen_ptr HEXABLOCKGUI::InitHEXABLOCKGen( SalomeApp_Appli // // // Gets an reference to GEOM's engine CS_TO_DELETE GEOM::GEOM_Gen_ptr HEXABLOCKGUI::InitGEOMGen( SalomeApp_Application* app, - const std::string& container ) + const std::string& container ) { - Engines::EngineComponent_var comp = app->lcc()->FindOrLoad_Component( container.c_str(), "GEOM" ); - MESSAGE("INITINITINITINIT comp : " << comp); - GEOM::GEOM_Gen_ptr clr = GEOM::GEOM_Gen::_narrow(comp); - MESSAGE("INITINITINITINIT clr 1: " << clr); - ASSERT(!CORBA::is_nil(clr)); - return clr; + Engines::EngineComponent_var comp = app->lcc()->FindOrLoad_Component( container.c_str(), "GEOM" ); + GEOM::GEOM_Gen_ptr clr = GEOM::GEOM_Gen::_narrow(comp); + ASSERT(!CORBA::is_nil(clr)); + return clr; } void HEXABLOCKGUI::initialize( CAM_Application* app ) { - DEBTRACE("HEXABLOCKGUI::initialize"); - SalomeApp_Module::initialize( app ); - - _hexaEngine = InitHEXABLOCKGen( dynamic_cast( app ) ); - _geomEngine = InitGEOMGen( dynamic_cast( app ) ); - MESSAGE("INITINITINITINIT clr 2: " << _geomEngine); + DEBTRACE("HEXABLOCKGUI::initialize"); + SalomeApp_Module::initialize( app ); - QWidget* aParent = application()->desktop(); - DEBTRACE(app << " " << application() << " " << application()->desktop() << " " << aParent); + _hexaEngine = InitHEXABLOCKGen( dynamic_cast( app ) ); + _geomEngine = InitGEOMGen( dynamic_cast( app ) ); - SUIT_ResourceMgr* aResourceMgr = app->resourceMgr(); - setResource(aResourceMgr); + DEBTRACE(app << " " << application() << " " << application()->desktop() << " " << aParent); -// if ( app && app->desktop() ){ -// connect( app->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ), -// this, SLOT(onWindowActivated( SUIT_ViewWindow* )) ); -// connect( getApp()->objectBrowser()->treeView(),SIGNAL( clicked(const QModelIndex&) ), -// this, SLOT( onObjectBrowserClick(const QModelIndex&) ) ); -// // connect( getApp(), SIGNAL(studyClosed()), _genericGui,SLOT (onCleanOnExit())); -// } + SUIT_ResourceMgr* aResourceMgr = app->resourceMgr(); + setResource(aResourceMgr); -// // TEST -// QGraphicsScene* scene = new QGraphicsScene; -// scene->addText("Hello, philou!"); -// QGraphicsView* view = new QGraphicsView(scene); -// view->show(); -// app->desktop()->setCentralWidget(view); -// // TEST + createAndFillDockWidget(); + createActions(); + createMenus(); + createTools(); + studyActivated(); + // add component to study +// if (createSComponent()) updateObjBrowser() +// createSComponent(); - createAndFillDockWidget(); - createActions(); - createMenus(); - createTools(); - studyActivated(); - // add component to study - if (createSComponent()) updateObjBrowser(); + if (_dwInputPanel != NULL) + geomBaseHelper = new MyGEOMBase_Helper(dynamic_cast(_dwInputPanel->parent())); } void HEXABLOCKGUI::viewManagers( QStringList& list ) const { - DEBTRACE("HEXABLOCKGUI::viewManagers"); - MESSAGE("HEXABLOCKGUI::viewManagers"); -// foreach (const QString &str, list) -// MESSAGE("HEXABLOCKGUI::viewManagers"<createOccWindow(), + application()->desktop()); + currentOccGView->getViewWindow()->installEventFilter(this); + } + else if (currentOccGView->getViewWindow() == NULL) + { + currentOccGView->setViewWindow(graphicViewsHandler->createOccWindow()); + currentOccGView->getViewWindow()->installEventFilter(this); + } + + + //Init VTK + if (currentDocGView == NULL) + newDocument(); + else if (currentDocGView->getViewWindow() == NULL) + { + currentDocGView->setViewWindow(graphicViewsHandler->createVtkWindow()); + currentDocGView->getViewWindow()->installEventFilter(this); + } + } bool HEXABLOCKGUI::activateModule( SUIT_Study* theStudy ) { - DEBTRACE("HEXABLOCKGUI::activateModule"); - bool bOk = SalomeApp_Module::activateModule( theStudy ); - if ( !bOk ) return false; + DEBTRACE("HEXABLOCKGUI::activateModule"); -// setMenuShown( true ); -// setToolShown( true ); - if ( _currentModel == 0 ) - initialMenus(); - else - showAllMenus(); + /*HexaBlock can be launched in only one application*/ + if (myApplication == NULL) + //remember the first application + myApplication = dynamic_cast( SUIT_Session::session()->activeApplication() ); -// showDockWidgets(false); - showDockWidgets(true); - if (_dwInputPanel) _dwInputPanel->close(); - -// // import Python module that manages HEXABLOCK plugins (need to be here because SalomePyQt API uses active module) -// PyGILState_STATE gstate = PyGILState_Ensure(); -// PyObject* pluginsmanager=PyImport_ImportModule((char*)"salome_pluginsmanager"); -// if(pluginsmanager==NULL) -// PyErr_Print(); -// else -// { -// PyObject* result=PyObject_CallMethod( pluginsmanager, (char*)"initialize", (char*)"isss",1,"hexablock","HEXABLOCK","Plugins"); -// if(result==NULL) -// PyErr_Print(); -// Py_XDECREF(result); -// } -// PyGILState_Release(gstate); -// // end of HEXABLOCK plugins loading + //application verification: if it's not the one known by HexaBlock, + //leave without activating + SalomeApp_Application* currentApplication = dynamic_cast( SUIT_Session::session()->activeApplication() ); + if (myApplication != currentApplication) return false; + + bool bOk = SalomeApp_Module::activateModule( theStudy ); + if ( !bOk ) return false; + + // setMenuShown( true ); + // setToolShown( true ); + // showDockWidgets(false); + showDockWidgets(true); connect( getApp()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ), - this, SLOT(onWindowActivated( SUIT_ViewWindow* )) ); + this, SLOT(onWindowActivated( SUIT_ViewWindow* )), Qt::UniqueConnection ); connect( getApp()->objectBrowser()->treeView(),SIGNAL( clicked(const QModelIndex&) ), - this, SLOT( onObjectBrowserClick(const QModelIndex&) ) ); -// connect( getApp(), SIGNAL(studyClosed()), _genericGui,SLOT (onCleanOnExit())); + this, SLOT( onObjectBrowserClick(const QModelIndex&) ), Qt::UniqueConnection ); + // connect( getApp(), SIGNAL(studyClosed()), _genericGui,SLOT (onCleanOnExit())); + + LightApp_SelectionMgr* sm = getApp()->selectionMgr(); + + SUIT_ViewManager* vm; + ViewManagerList OCCViewManagers, VTKViewManagers; + + application()->viewManagers( OCCViewer_Viewer::Type(), OCCViewManagers ); + QListIterator itOCC( OCCViewManagers ); + while ( itOCC.hasNext() && (vm = itOCC.next()) ) + myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) ); + + application()->viewManagers( SVTK_Viewer::Type(), VTKViewManagers ); + QListIterator itVTK( VTKViewManagers ); + while ( itVTK.hasNext() && (vm = itVTK.next()) ) + myVTKSelectors.append( new LightApp_VTKSelector( dynamic_cast( vm->getViewModel() ), sm ) ); + + //NPAL 19674 + SALOME_ListIO selected; + sm->selectedObjects( selected ); + sm->clearSelected(); + + // disable OCC selectors + getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() ); + QListIterator itOCCSel( myOCCSelectors ); + while ( itOCCSel.hasNext() ) + if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() ) + sr->setEnabled(true); + + // disable VTK selectors + getApp()->selectionMgr()->setEnabled( false, SVTK_Viewer::Type() ); + QListIterator itVTKSel( myVTKSelectors ); + while ( itVTKSel.hasNext() ) + if ( LightApp_VTKSelector* sr = itVTKSel.next() ) + sr->setEnabled(true); + + sm->setSelectedObjects( selected, true ); //NPAL 19674 + + //connect close signal to vtk view manager + vm = getApp()->getViewManager(SVTK_Viewer::Type(), false); + if (vm != NULL) + { + connect( vm, SIGNAL( tryCloseView( SUIT_ViewWindow * ) ), + this, SLOT( onWindowClosed(SUIT_ViewWindow *) ), Qt::UniqueConnection ); + } + //connect close signal to occ view manager + vm = getApp()->getViewManager(OCCViewer_Viewer::Type(), false); + if (vm != NULL) + { + connect( vm, SIGNAL( tryCloseView( SUIT_ViewWindow * ) ), + this, SLOT( onWindowClosed(SUIT_ViewWindow *) ), Qt::UniqueConnection ); + } -// vtkViewManager = getApp()->getViewManager(SVTK_Viewer::Type(), true); //create the view manager if it doesn't exist - LightApp_SelectionMgr* sm = getApp()->selectionMgr(); + _hexaEngine->SetCurrentStudy(SALOMEDS::Study::_nil()); + if ( SalomeApp_Study* s = dynamic_cast( theStudy )) + if ( _PTR(Study) aStudy = s->studyDS()) { + //define _CAST(Class, shared_ptr_Obj) dynamic_cast(shared_ptr_Obj.get()) + _hexaEngine->SetCurrentStudy( _CAST(Study,aStudy)->GetStudy() ); + updateObjBrowser(); // objects can be removed + } - SUIT_ViewManager* vm; - ViewManagerList OCCViewManagers, VTKViewManagers; + if (currentOccGView != NULL && currentOccGView->getViewWindow() != NULL) + currentOccGView->getViewWindow()->installEventFilter(this); - application()->viewManagers( OCCViewer_Viewer::Type(), OCCViewManagers ); - QListIterator itOCC( OCCViewManagers ); - while ( itOCC.hasNext() && (vm = itOCC.next()) ) - myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) ); - application()->viewManagers( SVTK_Viewer::Type(), VTKViewManagers ); - QListIterator itVTK( VTKViewManagers ); - while ( itVTK.hasNext() && (vm = itVTK.next()) ) - myVTKSelectors.append( new LightApp_VTKSelector( dynamic_cast( vm->getViewModel() ), sm ) ); + if (currentDocGView != NULL) + { + switchModel(currentDocGView); + showAllMenus(); - //NPAL 19674 - SALOME_ListIO selected; - sm->selectedObjects( selected ); - sm->clearSelected(); + if (currentDocGView->getViewWindow() != NULL) + currentDocGView->getViewWindow()->installEventFilter(this); + } + else + initialMenus(); + + return bOk; +} - // disable OCC selectors - getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() ); - QListIterator itOCCSel( myOCCSelectors ); - while ( itOCCSel.hasNext() ) - if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() ) - sr->setEnabled(true); - // disable VTK selectors - getApp()->selectionMgr()->setEnabled( false, SVTK_Viewer::Type() ); - QListIterator itVTKSel( myVTKSelectors ); - while ( itVTKSel.hasNext() ) - if ( LightApp_VTKSelector* sr = itVTKSel.next() ) - sr->setEnabled(true); +bool HEXABLOCKGUI::deactivateModule( SUIT_Study* theStudy ) +{ + disconnect( getApp()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ), + this, SLOT(onWindowActivated( SUIT_ViewWindow* )) ); + disconnect( getApp()->objectBrowser()->treeView(),SIGNAL( clicked(const QModelIndex&) ), + this, SLOT( onObjectBrowserClick(const QModelIndex&) ) ); + // connect( getApp(), SIGNAL(studyClosed()), _genericGui,SLOT (onCleanOnExit())); - sm->setSelectedObjects( selected, true ); //NPAL 19674 + if ( currentDocGView != NULL && currentDocGView->getViewWindow() != NULL ) + //default selectionMode in VTKView + currentDocGView->getViewWindow()->SetSelectionMode( ActorSelection ); - _hexaEngine->SetCurrentStudy(SALOMEDS::Study::_nil()); - if ( SalomeApp_Study* s = dynamic_cast( theStudy )) - if ( _PTR(Study) aStudy = s->studyDS()) { - //define _CAST(Class, shared_ptr_Obj) dynamic_cast(shared_ptr_Obj.get()) - _hexaEngine->SetCurrentStudy( _CAST(Study,aStudy)->GetStudy() ); - updateObjBrowser(); // objects can be removed + if (currentOccGView != NULL && currentOccGView->getViewWindow() != NULL) + { + //defaut selectionMode in OccView + getApp()->selectionMgr()->clearSelected(); + geomBaseHelper->globalSelection(currentOccGView->getViewWindow()); +// geomBaseHelper->localSelection(GEOM::GEOM_Object::_nil(), TopAbs_SHAPE); + if (currentOccGView != NULL) + geomBaseHelper->localSelection(currentOccGView->getViewWindow(), TopAbs_SHAPE); } - if (vtkViewManager==NULL || !vtkViewManager->getViewsCount()) newDocument(); - if (_currentGraphicView != NULL) - _currentGraphicView->get_SUIT_ViewWindow()->setFocus(); - - return bOk; -} + qDeleteAll(myOCCSelectors); + myOCCSelectors.clear(); + getApp()->selectionMgr()->setEnabled( true, OCCViewer_Viewer::Type() ); + qDeleteAll(myVTKSelectors); + myVTKSelectors.clear(); + getApp()->selectionMgr()->setEnabled( true, SVTK_Viewer::Type() ); + bool bOk = SalomeApp_Module::deactivateModule( theStudy ); -bool HEXABLOCKGUI::deactivateModule( SUIT_Study* theStudy ) -{ - MESSAGE("HEXABLOCKGUI::deactivateModule"); + //Must be done for all views later + if (currentOccGView != NULL && currentOccGView->getViewWindow() != NULL) + currentOccGView->getViewWindow()->removeEventFilter(this); - setMenuShown( false ); - setToolShown( false ); - if (_dwInputPanel) _dwInputPanel->close(); - showDockWidgets( false ); -// QtGuiContext *context = QtGuiContext::getQtCurrent(); -// _studyContextMap[theStudy->id()] = context; -// DEBTRACE("_studyContextMap[theStudy] " << theStudy << " " << context); + if (currentDocGView != NULL && currentDocGView->getViewWindow() != NULL) + currentDocGView->getViewWindow()->removeEventFilter(this); - disconnect( getApp()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ), - this, SLOT(onWindowActivated( SUIT_ViewWindow* )) ); - disconnect( getApp()->objectBrowser()->treeView(),SIGNAL( clicked(const QModelIndex&) ), - this, SLOT( onObjectBrowserClick(const QModelIndex&) ) ); -// connect( getApp(), SIGNAL(studyClosed()), _genericGui,SLOT (onCleanOnExit())); + //switch off current document graphic view + switchOffGraphicView(currentDocGView); + //...and hide menus + setMenuShown( false ); + setToolShown( false ); + showDockWidgets( false ); + if (_dwInputPanel) _dwInputPanel->close(); - if ( HEXABLOCKGUI::currentVtkView ){ - HEXABLOCKGUI::currentVtkView->SetSelectionMode( ActorSelection ); //default selectionMode in VTKView - } + //hide the current document actor + hideActor(); - if (HEXABLOCKGUI::currentOccView != NULL) - { - getApp()->selectionMgr()->clearSelected(); - //defaut selectionMode in OccView - if (currentDialog != NULL) - { - currentDialog->globalSelection(); - currentDialog->localSelection(GEOM::GEOM_Object::_nil(), TopAbs_SHAPE); - } - } + return bOk; +} +QString HEXABLOCKGUI::addInStudy(QString& fileName) +{ + QString objStudyEntry; -// if ( _patternDataSelectionModel ){ -// delete _patternDataSelectionModel; -// _patternDataSelectionModel = NULL; -// } -// if ( _patternBuilderSelectionModel ){ -// delete _patternBuilderSelectionModel; -// _patternBuilderSelectionModel = NULL; -// } + if ( !fileName.isEmpty() ) { - qDeleteAll(myOCCSelectors); - myOCCSelectors.clear(); - getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() ); + SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication()); + SalomeApp_Study* appStudy = app ? dynamic_cast( app->activeStudy() ) : NULL; + if(!appStudy) return objStudyEntry; - qDeleteAll(myVTKSelectors); - myVTKSelectors.clear(); - getApp()->selectionMgr()->setEnabled( false, SVTK_Viewer::Type() ); + _PTR(Study) aStudy = appStudy->studyDS(); + SALOMEDS::Study_var aDSStudy = GeometryGUI::ClientStudyToStudy( aStudy ); - return SalomeApp_Module::deactivateModule( theStudy ); + GEOM::GEOM_IInsertOperations_var aInsOp = _geomEngine->GetIInsertOperations( aStudy->StudyId() ); + GEOM::GEOM_Object_var anObj = aInsOp->ImportFile(fileName.toStdString().c_str(), "BREP"); + if ( !anObj->_is_nil() && aInsOp->IsDone() ) + { + QStringList sList = fileName.split("."); + SALOMEDS::SObject_var aSO = _geomEngine->PublishInStudy( aDSStudy, + SALOMEDS::SObject::_nil(), + anObj, + sList[0].toStdString().c_str() ); + objStudyEntry = aSO->GetID(); + } + } + return objStudyEntry; } - bool HEXABLOCKGUI::renameAllowed( const QString& entry) const { -// MESSAGE("HEXABLOCKGUI::renameAllowed"); - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); - SalomeApp_Study* appStudy = app ? dynamic_cast( app->activeStudy() ) : 0; - SalomeApp_DataObject* obj = appStudy ? dynamic_cast(appStudy->findObjectByEntry(entry)) : 0; + SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); + SalomeApp_Study* appStudy = app ? dynamic_cast( app->activeStudy() ) : 0; + SalomeApp_DataObject* obj = appStudy ? dynamic_cast(appStudy->findObjectByEntry(entry)) : 0; - bool res = app && appStudy && obj && !appStudy->isComponent(entry) && !obj->isReference(); - return (app && appStudy && obj && !appStudy->isComponent(entry) && !obj->isReference()); + return (app && appStudy && obj && !appStudy->isComponent(entry) && !obj->isReference()); } bool HEXABLOCKGUI::renameObject( const QString& entry, const QString& name) { - MESSAGE("HEXABLOCKGUI::renameObject"); -// bool appRes = SalomeApp_Module::renameObject(entry,name); -// MESSAGE("appRes"<( SUIT_Session::session()->activeApplication()); - SalomeApp_Study* appStudy = app ? dynamic_cast( app->activeStudy() ) : 0; - - if(!appStudy) - return result; - - _PTR(Study) aStudy = appStudy->studyDS(); - if(!aStudy) - return result; - - _PTR(SObject) obj ( aStudy->FindObjectID(qPrintable(entry)) ); - _PTR(GenericAttribute) anAttr; - if ( obj ){ - if ( obj->FindAttribute(anAttr, "AttributeName") ){ - _PTR(AttributeName) aName (anAttr); -// GEOM::GEOM_Object_var anObj = GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(obj)); -// -// HEXABLOCK_Gen_i::Document_var aDoc = HEXABLOCK_Gen_i::Document::_narrow( theIOR ); -// if (!CORBA::is_nil(aDoc)) { - aName->SetValue( name.toLatin1().data() ); // rename the SObject -// aDoc->setName( name.toLatin1().data() ); // Rename the corresponding GEOM_Object - _currentModel->setName( name/*.toLatin1().data()*/ ); -// _currentGraphicView->setWindowTitle( _currentModel->getName() ); - result = true; + bool result = false; + SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication()); + SalomeApp_Study* appStudy = app ? dynamic_cast( app->activeStudy() ) : 0; + + if(!appStudy) + return result; + + _PTR(Study) aStudy = appStudy->studyDS(); + + if(!aStudy) + return result;; + + _PTR(SObject) obj ( aStudy->FindObjectID(qPrintable(entry)) ); + _PTR(GenericAttribute) anAttr; + if ( obj ){ + if ( obj->FindAttribute(anAttr, "AttributeName") ){ + _PTR(AttributeName) aName (anAttr); + // GEOM::GEOM_Object_var anObj = GEOM::GEOM_Object::_narrow(GeometryGUI::ClientSObjectToObject(obj)); + // + // HEXABLOCK_Gen_i::Document_var aDoc = HEXABLOCK_Gen_i::Document::_narrow( theIOR ); + // if (!CORBA::is_nil(aDoc)) { +// aName->SetValue( name.toLatin1().data() ); // rename the SObject + // aDoc->setName( name.toLatin1().data() ); // Rename the corresponding GEOM_Object + DocumentModel* currentModel = getCurrentModel(); + if (currentModel == NULL) return result; + currentModel->setName( name/*.toLatin1().data()*/ ); + aName->SetValue( getCurrentModel()->getName().toLatin1().data() ); + // _currentGraphicView->setWindowTitle( getCurrentModel()->getName() ); + result = true; + } } - } - return result; + return result; } // --- Default windows void HEXABLOCKGUI::windows( QMap& theMap ) const { - DEBTRACE("HEXABLOCKGUI::windows"); - theMap.clear(); - theMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea ); - theMap.insert( SalomeApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea ); + DEBTRACE("HEXABLOCKGUI::windows"); + theMap.clear(); + theMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea ); + theMap.insert( SalomeApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea ); } -// LightApp_Displayer* HEXABLOCKGUI::displayer() -// { -// DEBTRACE("HEXABLOCKGUI::displayer"); -// return _currentGraphicView; -// } - // QString HEXABLOCKGUI::engineIOR() const // { @@ -530,133 +579,297 @@ void HEXABLOCKGUI::windows( QMap& theMap ) const QString HEXABLOCKGUI::engineIOR() const { - DEBTRACE("HEXABLOCKGUI::engineIOR"); - CORBA::ORB_var anORB = getApp()->orb(); - CORBA::String_var anIOR = anORB->object_to_string(_hexaEngine); - return QString( anIOR.in() ); + DEBTRACE("HEXABLOCKGUI::engineIOR"); + CORBA::ORB_var anORB = getApp()->orb(); + CORBA::String_var anIOR = anORB->object_to_string(_hexaEngine); + return QString( anIOR.in() ); } - -void HEXABLOCKGUI::onObjectBrowserClick(const QModelIndex& index) +VtkDocumentGraphicView* HEXABLOCKGUI::getDocument(SalomeApp_DataObject* studyObject) { - DEBTRACE("HEXABLOCKGUI::onObjectBrowserClick"); - // we want to switch automatically to the right view windows - QWidget *viewWindow = NULL; + if (docs.count(studyObject->entry()) == 0) + { + //Object's document not acquired yet + VtkDocumentGraphicView* dgview; + HEXA_NS::Hex* directory = HEXA_NS::Hex::getInstance(); + if (directory == NULL) + return NULL; //No working director found + + //------------------ Load the document ----------------- + HEXA_NS::Document* document = directory->findDocument(studyObject->name().toStdString()); + if (document == NULL) return NULL; //No document found + + DocumentModel* docModel = new DocumentModel(document, studyObject->entry(), this ); + if (!docModel) { + MESSAGE("Doc model creation failed!"); + return NULL; + } + dgview = graphicViewsHandler->createDocumentGraphicView( + docModel, + NULL/*viewWindow*/, + application()->desktop() ); + if (dgview == NULL) return NULL; + + //update the data tree +// dgview->loadDocument(); + docs[studyObject->entry()] = dgview; + } - //first, find entry of item selected - QString itemEntry; - DataObjectList dol = getApp()->objectBrowser()->getSelected(); - if (dol.isEmpty()) return; - SalomeApp_DataObject* item = dynamic_cast(dol[0]); - if (!item) return; - itemEntry = item->entry(); + return docs[studyObject->entry()]; +} -// DEBTRACE("HEXABLOCKGUI::onClick index.data() => "< "<name(). => "<name().toStdString()); -// DEBTRACE("HEXABLOCKGUI::onClick itemEntry =>"<setFocus(); - _currentGraphicView->update(); //CS_TEST -// _selectFromTree = false; -// if (getApp()->activeModule()->moduleName().compare("HEXABLOCK") != 0) -// getApp()->activateModule("HEXABLOCK"); -} +void HEXABLOCKGUI::onObjectBrowserClick(const QModelIndex& index) +{ + DEBTRACE("HEXABLOCKGUI::onObjectBrowserClick"); + // we want to switch automatically to the right view windows +// QWidget *viewWindow = NULL; + + //first, find selected item + QString itemEntry; + DataObjectList dol = getApp()->objectBrowser()->getSelected(); + if (dol.isEmpty()) return; + SalomeApp_DataObject* item = dynamic_cast(dol[0]); + if (!item || item->parent()->name().compare(tr("HEXABLOCK")) != 0) return; + VtkDocumentGraphicView* docGView = getDocument(item); + if (docGView == NULL) + { +// currentDocGView = NULL; + return; + } + //Init OCC if necessary + if (currentOccGView == NULL) + { + currentOccGView = new OccGraphicView(graphicViewsHandler->createOccWindow(), + application()->desktop()); + currentOccGView->getViewWindow()->installEventFilter(this); + } + else if (currentOccGView->getViewWindow() == NULL) + { + currentOccGView->setViewWindow(graphicViewsHandler->createOccWindow()); + currentOccGView->getViewWindow()->installEventFilter(this); + } + //Init the vtk view if necessary + if (docGView->getViewWindow() == NULL) + { + if (currentDocGView == NULL || currentDocGView->getViewWindow() == NULL) + { + docGView->setViewWindow(graphicViewsHandler->createVtkWindow()); + docGView->getViewWindow()->installEventFilter(this); + } + else + docGView->setViewWindow(currentDocGView->getViewWindow()); + + if (docGView->getDocumentActor() == NULL) docGView->update(); + } +// setOpen (const QModelIndex &theObject, const bool theOpen=true) +// updateTree (SUIT_DataObject *=0, const bool=true) + //update the current document + switchModel(docGView); + +} void HEXABLOCKGUI::onWindowActivated( SUIT_ViewWindow* svw) { - DEBTRACE("HEXABLOCKGUI::onWindowActivated"); - MESSAGE("HEXABLOCKGUI::onWindowActivated"); - OCCViewer_ViewWindow* anOccVw = dynamic_cast(svw); + DEBTRACE("HEXABLOCKGUI::onWindowActivated"); +// OCCViewer_ViewWindow* anOccVw = dynamic_cast(svw); - if ( anOccVw != NULL) - { - currentOccView->installEventFilter(this); - if (anOccVw != currentOccView) - currentOccView = anOccVw; - } + //update the current occ view +// if (anOccVw != NULL) +// currentOccGView->getViewWindow() = anOccVw; - // we want to switch automatically to the right model - // only VTK view - SVTK_ViewWindow* viewWindow = dynamic_cast(svw); - if (!viewWindow) return; + //set event filter for the occ view +// if (currentOccGView != NULL && currentOccGView->getViewWindow() != NULL) +// currentOccGView->getViewWindow()->installEventFilter(this); - if (getApp()->activeModule() && getApp()->activeModule()->moduleName().compare("HEXABLOCK") != 0) //CS_TODO? - getApp()->activateModule("HEXABLOCK"); + // we want to switch automatically to the right model + // only VTK view +// SVTK_ViewWindow* viewWindow = dynamic_cast(svw); +// if (viewWindow == NULL) return; +// +// if (getApp()->activeModule() && getApp()->activeModule()->moduleName().compare("HEXABLOCK") != 0) //CS_TODO? +// getApp()->activateModule("HEXABLOCK"); - if (viewWindow != currentVtkView) - { - switchModel( viewWindow ); - currentVtkView = viewWindow; - } + //update the current model and the current vtk view +// switchModel( viewWindow ); } void HEXABLOCKGUI::onWindowClosed( SUIT_ViewWindow* svw) { - DEBTRACE("HEXABLOCKGUI::onWindowClosed"); + DEBTRACE("HEXABLOCKGUI::onWindowClosed"); + + + //Decharger le model correspondant (VTK) + SVTK_ViewWindow* window = dynamic_cast(svw); + if (window != NULL) + { + + //VTK clean close + if (currentDocGView != NULL && currentDocGView->getViewWindow() == window) + { //HexaBlock Vtk Window has been closed + + if (currentDialog != NULL) currentDialog->close(); + if (_treeViewDelegate != NULL) _treeViewDelegate->closeDialog(); + if (currentDocGView != NULL) + currentDocGView->setViewWindow(NULL); + + initialMenus(); + return; + } + + //SAVE DOCUMENT + /*VtkDocumentGraphicView* dgview = graphicViewsHandler->getDocumentGraphicView(window); + if (dgview == NULL) return; //The window has no document to close + + //Save the document? (Ask only if the document is not empty + int answerCode = SUIT_MessageBox::question( + 0, + tr("Close"), + tr("Save the document ?"), + SUIT_MessageBox::Yes | SUIT_MessageBox::Cancel, + SUIT_MessageBox::Cancel); + if ( answerCode == SUIT_MessageBox::Cancel) return; //abort closing + else if (answerCode == SUIT_MessageBox::Yes) + saveDocument(); //Save the document + */ +// switchOffGraphicView(window); //disconnect all connected signals +// currentVtkView = NULL; +// graphicViewsHandler->closeDocumentGraphicView(window); + + //create a new one (empty document) +// newDocument(); +// currentVtkView->setWindowTitle(tr("HEXABLOCK") + " : " + currentVtkView->windowTitle()); + } + + //OCC clean close + if (currentOccGView != NULL && svw == currentOccGView->getViewWindow()) + { + if (_vertexAssocDiag != NULL) _vertexAssocDiag->clear(); + if (_edgeAssocDiag != NULL) _edgeAssocDiag->clear(); + if (_quadAssocDiag != NULL) _quadAssocDiag->clear(); + if (currentDialog != NULL) currentDialog->close(); + if (_treeViewDelegate != NULL) _treeViewDelegate->closeDialog(); + + currentOccGView->getViewWindow()->removeEventFilter(this); + currentOccGView->setViewWindow(NULL); + } } void HEXABLOCKGUI::onViewManagerAdded( SUIT_ViewManager* vm) { - DEBTRACE("HEXABLOCKGUI::onViewManagerAdded"); - if ( vm && vm->getType() == OCCViewer_Viewer::Type() ) - { -// qDebug( "connect" ); -// // connect( vm, SIGNAL( keyPress ( SUIT_ViewWindow*, QKeyEvent* ) ), -// // this, SLOT( OnKeyPress( SUIT_ViewWindow*, QKeyEvent* ) ) ); -// // connect( vm, SIGNAL( mousePress( SUIT_ViewWindow*, QMouseEvent* ) ), -// // this, SLOT( OnMousePress( SUIT_ViewWindow*, QMouseEvent* ) ) ); -// connect( vm, SIGNAL( mouseMove ( SUIT_ViewWindow*, QMouseEvent* ) ), -// this, SLOT( OnMouseMove( SUIT_ViewWindow*, QMouseEvent* ) ) ); -// LightApp_SelectionMgr* sm = getApp()->selectionMgr(); -// myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) ); -// -// // disable OCC selectors -// getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() ); -// QListIterator itOCCSel( myOCCSelectors ); -// while ( itOCCSel.hasNext() ) -// if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() ){ -// sr->setEnabled(true); -// std::cout<<"HEXABLOCKGUI::onViewManagerAdded sr"<getType() == OCCViewer_Viewer::Type() ) + { + LightApp_SelectionMgr* sm = getApp()->selectionMgr(); + myOCCSelectors.append( new GEOMGUI_OCCSelector( ((OCCViewer_ViewManager*)vm)->getOCCViewer(), sm ) ); + + // disable OCC selectors + getApp()->selectionMgr()->setEnabled( false, OCCViewer_Viewer::Type() ); + QListIterator itOCCSel( myOCCSelectors ); + while ( itOCCSel.hasNext() ) + if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() ) + sr->setEnabled(true); + } + else if ( vm->getType() == SVTK_Viewer::Type() ) + { + LightApp_SelectionMgr* sm = getApp()->selectionMgr(); + myVTKSelectors.append( new LightApp_VTKSelector( dynamic_cast( vm->getViewModel() ), sm ) ); + + // disable VTK selectors + getApp()->selectionMgr()->setEnabled( false, SVTK_Viewer::Type() ); + QListIterator itVTKSel( myVTKSelectors ); + while ( itVTKSel.hasNext() ) + if ( LightApp_VTKSelector* sr = itVTKSel.next() ) + sr->setEnabled(true); + } } void HEXABLOCKGUI::onViewManagerRemoved( SUIT_ViewManager* vm) { - DEBTRACE("HEXABLOCKGUI::::onViewManagerRemoved"); + DEBTRACE("HEXABLOCKGUI::::onViewManagerRemoved"); + + SUIT_ViewModel* viewer = vm->getViewModel(); + if (vm != NULL && vm->getType() == SVTK_Viewer::Type()) + { + //VTK View Manager removed + if (getApp()->activeModule()->moduleName().compare("HEXABLOCK") == 0) + { + //Process only if it's our view manager + SUIT_ViewManager* myVm = NULL; + if (currentDocGView != NULL && currentDocGView->getViewWindow() != NULL) + myVm = currentDocGView->getViewWindow()->getViewManager(); + + if (myVm == vm) + { + //close opened dialog + if (currentDialog != NULL) currentDialog->close(); + if (_treeViewDelegate != NULL) _treeViewDelegate->closeDialog(); + + initialMenus(); + } + } + + //remove its selector + QListIterator itVTKSel( myVTKSelectors ); + while ( itVTKSel.hasNext() ) + if ( LightApp_VTKSelector* sr = itVTKSel.next() ) + if ( sr->viewer() == viewer ) + { + delete myVTKSelectors.takeAt( myVTKSelectors.indexOf( sr ) ); + break; + } + return; + } + + //OCC + if ( vm && vm->getType() == OCCViewer_Viewer::Type() ) + { + //OCC View removed: remove its selector + QListIterator itOCCSel( myOCCSelectors ); + while ( itOCCSel.hasNext() ) + if ( GEOMGUI_OCCSelector* sr = itOCCSel.next() ) + if ( sr->viewer() == viewer ) + { + delete myOCCSelectors.takeAt( myOCCSelectors.indexOf( sr ) ); + break; + } + } } void HEXABLOCKGUI::onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ) { - QModelIndexList l = selected.indexes(); - if ( l.count() == 0 ) return; - if ( !l[0].isValid() ) return; - - QTreeView* theTree = NULL; - if ( sender() == _patternDataSelectionModel ){ - theTree = _patternDataTreeView; - } else if ( sender() == _patternBuilderSelectionModel ){ - theTree = _patternBuilderTreeView; - } else if ( sender() == _groupsSelectionModel ){ - theTree = _groupsTreeView; - } else if ( sender() == _meshSelectionModel ){ - theTree = _meshTreeView; - } - if ( theTree ){ - theTree->scrollTo ( l[0] ); - } + QModelIndexList l = selected.indexes(); + if ( l.count() == 0 ) return; + if ( !l[0].isValid() ) return; + VtkDocumentGraphicView* currentGraphicView = getCurrentVtkGraphicView(); + if ( currentGraphicView == NULL) return; + + QTreeView* theTree = NULL; + if ( sender() == currentGraphicView->getPatternDataSelectionModel() ){ + theTree = _patternDataTreeView; + } else if ( sender() == currentGraphicView->getPatternBuilderSelectionModel() ){ + theTree = _patternBuilderTreeView; + } else if ( sender() == currentGraphicView->getPatternGeomSelectionModel() ) { + theTree = _patternGeomTreeView; + } + else if ( sender() == currentGraphicView->getGroupsSelectionModel() ){ + theTree = _groupsTreeView; + } else if ( sender() == currentGraphicView->getMeshSelectionModel() ){ + theTree = _meshTreeView; + } + if ( theTree ){ + theTree->scrollTo ( l[0] ); + } } // void HEXABLOCKGUI::onTryClose(bool &isClosed, QxScene_ViewWindow* window) //CS_TODO @@ -674,38 +887,38 @@ void HEXABLOCKGUI::onSelectionChanged( const QItemSelection & selected, const QI bool HEXABLOCKGUI::createSComponent() //addComponent { - DEBTRACE("HEXABLOCKGUI::createSComponent"); - // --- Find or create "HEXABLOCK" SComponent in the study - - _PTR(Study) aStudy = (( SalomeApp_Study* )(getApp()->activeStudy()))->studyDS(); - _PTR(StudyBuilder) aBuilder (aStudy->NewBuilder()); - _PTR(GenericAttribute) anAttr; - _PTR(AttributeName) aName; - - _PTR(SComponent) aComponent = aStudy->FindComponent("HEXABLOCK"); - if ( !aComponent ){ - aComponent = aBuilder->NewComponent("HEXABLOCK"); - anAttr = aBuilder->FindOrCreateAttribute(aComponent, "AttributeName"); - aName = _PTR(AttributeName) (anAttr); - aName->SetValue(getApp()->moduleTitle("HEXABLOCK").toStdString()); - - anAttr = aBuilder->FindOrCreateAttribute(aComponent, "AttributePixMap"); - _PTR(AttributePixMap) aPixmap(anAttr); - aPixmap->SetPixMap("share/salome/resources/hexablock/ModuleHexablock.png"); - - aBuilder->DefineComponentInstance(aComponent, engineIOR().toStdString()); - DEBTRACE("HEXABLOCKGUI::createSComponent engineIOR=>"<DefineComponentInstance(aComponent, getApp()->defaultEngineIOR().toStdString()); -// DEBTRACE("HEXABLOCKGUI::createSComponent defaultEngineIOR=>"<defaultEngineIOR().toStdString()); - -// SalomeApp_DataModel::synchronize( aComponent, HEXABLOCKGUI::activeStudy() ); - return true; - } - return false; + DEBTRACE("HEXABLOCKGUI::createSComponent"); + // --- Find or create (if not done yet) "HEXABLOCK" SComponent in the study + + _PTR(Study) aStudy = (( SalomeApp_Study* )(getApp()->activeStudy()))->studyDS(); + _PTR(StudyBuilder) aBuilder (aStudy->NewBuilder()); + _PTR(GenericAttribute) anAttr; + _PTR(AttributeName) aName; + _PTR(AttributeGraphic) aGraphic; + + _PTR(SComponent) aComponent = aStudy->FindComponent("HEXABLOCK"); + if ( !aComponent ){ //Create hexablock component if there's not one yet + aComponent = aBuilder->NewComponent("HEXABLOCK"); + anAttr = aBuilder->FindOrCreateAttribute(aComponent, "AttributeName"); + aName = _PTR(AttributeName) (anAttr); + aName->SetValue(getApp()->moduleTitle("HEXABLOCK").toStdString()); + + anAttr = aBuilder->FindOrCreateAttribute(aComponent, "AttributePixMap"); + _PTR(AttributePixMap) aPixmap(anAttr); + // aPixmap->SetPixMap("share/salome/resources/hexablock/ModuleHexablock.png"); + aPixmap->SetPixMap(tr("ICO_MODULE_HEXABLOCK_SMALL").toStdString()); + + aBuilder->DefineComponentInstance(aComponent, engineIOR().toStdString()); + DEBTRACE("HEXABLOCKGUI::createSComponent engineIOR=>"<DefineComponentInstance(aComponent, getApp()->defaultEngineIOR().toStdString()); + // DEBTRACE("HEXABLOCKGUI::createSComponent defaultEngineIOR=>"<defaultEngineIOR().toStdString()); + + // SalomeApp_DataModel::synchronize( aComponent, HEXABLOCKGUI::activeStudy() ); + return true; + } + return false; } - - // bool HEXABLOCKGUI::isSelectionCompatible() // { // DEBTRACE("HEXABLOCKGUI::isSelectionCompatible"); @@ -726,1715 +939,2024 @@ bool HEXABLOCKGUI::createSComponent() //addComponent void HEXABLOCKGUI::setResource(SUIT_ResourceMgr* r) { - DEBTRACE("HEXABLOCKGUI::setResource"); - _myresource = new HEXABLOCKGUI_Resource(r); - _myresource->preferencesChanged(); + DEBTRACE("HEXABLOCKGUI::setResource"); + _myresource = new HEXABLOCKGUI_Resource(r); + _myresource->preferencesChanged(); } void HEXABLOCKGUI::createPreferences() { - DEBTRACE("HEXABLOCKGUI::createPreferences"); - _myresource->createPreferences(this); + DEBTRACE("HEXABLOCKGUI::createPreferences"); + _myresource->createPreferences(this); } void HEXABLOCKGUI::preferencesChanged( const QString& sect, const QString& name ) { - DEBTRACE("HEXABLOCKGUI::preferencesChanged"); - _myresource->preferencesChanged(sect, name); - if(name=="userCatalog") + DEBTRACE("HEXABLOCKGUI::preferencesChanged"); + _myresource->preferencesChanged(sect, name); + if(name=="userCatalog") { -// _genericGui->getCatalogWidget()->addCatalogFromFile(Resource::userCatalog.toStdString()); + // _genericGui->getCatalogWidget()->addCatalogFromFile(Resource::userCatalog.toStdString()); } } void HEXABLOCKGUI::studyActivated() //CS_TODO { - int newStudyId = getApp()->activeStudy()->id(); - DEBTRACE("HEXABLOCKGUI::studyActivated " << _oldStudyId << " " << newStudyId); + int newStudyId = getApp()->activeStudy()->id(); + DEBTRACE("HEXABLOCKGUI::studyActivated " << _oldStudyId << " " << newStudyId); - if (_oldStudyId != -1) - { -// _studyContextMap[_oldStudyId] = QtGuiContext::getQtCurrent(); -// if (_studyContextMap.count(newStudyId)) -// { -// DEBTRACE("switch to valid context " << QtGuiContext::getQtCurrent() << " " << _studyContextMap[newStudyId]); -// QtGuiContext::setQtCurrent(_studyContextMap[newStudyId]); -// } -// else -// { -// DEBTRACE("no switch to null context"); -// } - } - _oldStudyId = newStudyId; + if (_oldStudyId != -1) + { + // _studyContextMap[_oldStudyId] = QtGuiContext::getQtCurrent(); + // if (_studyContextMap.count(newStudyId)) + // { + // DEBTRACE("switch to valid context " << QtGuiContext::getQtCurrent() << " " << _studyContextMap[newStudyId]); + // QtGuiContext::setQtCurrent(_studyContextMap[newStudyId]); + // } + // else + // { + // DEBTRACE("no switch to null context"); + // } + } + _oldStudyId = newStudyId; } void HEXABLOCKGUI::treeContextMenu(const QPoint& aPosition) { - QModelIndex currentIndex = _patternDataTreeView->currentIndex(); - QVariant currentAssocVariant; - QString currentAssocEntry; - - currentAssocVariant = currentIndex.data( HEXA_ASSOC_ENTRY_ROLE ); - currentAssocEntry = currentIndex.data( HEXA_ASSOC_ENTRY_ROLE ).toString(); - if ( currentAssocVariant.isValid() && !currentAssocEntry.isEmpty() ){ - // _currentModel->allowEdition(); - QMenu menu( _patternDataTreeView ); - //Remove association - QAction *clearAct = menu.addAction( "Remove association(s)" ); - connect( clearAct, SIGNAL(triggered()), this, SLOT(clearAssociations()) ); - menu.exec( _patternDataTreeView->mapToGlobal( aPosition) ); - } - else { + QModelIndex currentIndex = _patternDataTreeView->currentIndex(); + QVariant currentAssocVariant; + QString currentAssocEntry; + + currentAssocVariant = currentIndex.data( HEXA_ASSOC_ENTRY_ROLE ); + currentAssocEntry = currentIndex.data( HEXA_ASSOC_ENTRY_ROLE ).toString(); + if ( currentAssocVariant.isValid() && !currentAssocEntry.isEmpty() ){ + // getCurrentModel()->allowEdition(); + QMenu menu( _patternDataTreeView ); + //Remove association + QAction *clearAct = menu.addAction( "Remove association(s)" ); + connect( clearAct, SIGNAL(triggered()), this, SLOT(clearAssociations()), Qt::UniqueConnection ); + menu.exec( _patternDataTreeView->mapToGlobal( aPosition) ); + } + else { - QStandardItem *item = _patternDataModel->itemFromIndex ( currentIndex ); + VtkDocumentGraphicView* currentVtkGraphicView = getCurrentVtkGraphicView(); + if (currentVtkGraphicView == NULL) return; + QStandardItem *item = currentVtkGraphicView->getPatternDataModel()->itemFromIndex(currentIndex); - //We don't do anything for single items - if ( item->type() == VERTEXITEM || item->type() == EDGEITEM || - item->type() == QUADITEM || item->type() == HEXAITEM) - return; + //We don't do anything for single items + if ( item->type() == VERTEXITEM || item->type() == EDGEITEM || + item->type() == QUADITEM || item->type() == HEXAITEM) + return; - //No associations for HEXA - QVariant treeVariant = currentIndex.data( HEXA_TREE_ROLE ); - if ( !treeVariant.isValid() ) return; - int eltType = treeVariant.toInt(); - if (eltType == HEXA_DIR_TREE) return; - QMenu menu( _patternDataTreeView ); + //No associations for HEXA + QVariant treeVariant = currentIndex.data( HEXA_TREE_ROLE ); + if ( !treeVariant.isValid() ) return; + int eltType = treeVariant.toInt(); + if (eltType == HEXA_DIR_TREE) return; + QMenu menu( _patternDataTreeView ); - //Show association(s) - QAction *showAssocAct = menu.addAction( "Show associations" ); - connect( showAssocAct, SIGNAL(triggered()), this, SLOT(showAssociations()) ); + //Show association(s) + QAction *showAssocAct = menu.addAction( "Show associations" ); + connect( showAssocAct, SIGNAL(triggered()), this, SLOT(showAssociations()), Qt::UniqueConnection ); - //Clear all associations - QAction *clearAllAssocAct = menu.addAction( "Remove all associations" ); - connect( clearAllAssocAct, SIGNAL(triggered()), this, SLOT(clearAllAssociations()) ); + //Clear all associations + QAction *clearAllAssocAct = menu.addAction( "Remove all associations" ); + connect( clearAllAssocAct, SIGNAL(triggered()), this, SLOT(clearAllAssociations()), Qt::UniqueConnection ); - menu.exec( _patternDataTreeView->mapToGlobal( aPosition) ); - } + menu.exec( _patternDataTreeView->mapToGlobal( aPosition) ); + } } void HEXABLOCKGUI::createAndFillDockWidget() { - QMainWindow *aParent = application()->desktop(); - - // Create dock widget (3 dock) - - //1) *********** user input panel ( contain user's edit dialog box ) - _dwInputPanel = new QDockWidget(aParent); -// QLayout* inputLayout = new QVBoxLayout(aParent); -// _dwInputPanel->setLayout(inputLayout); -// _dwInputPanel->setWindowFlags(Qt::FramelessWindowHint); -// _dwInputPanel->setWindowFlags(Qt::WindowTitleHint); - _dwInputPanel->setVisible(false); - _dwInputPanel->setWindowTitle("Input Panel"); -// _dwInputPanel->setMinimumHeight(DWINPUT_MINIMUM_HEIGHT); - _dwInputPanel->setMinimumWidth(DWINPUT_MINIMUM_WIDTH); // --- force a minimum until display - _dwInputPanel->raise(); - -// _stacked = new QStackedWidget(_dwInputPanel); -// _dwInputPanel->setWidget(_stacked); - - _treeViewDelegate = new DocumentDelegate(_dwInputPanel); - - //2) ************* document data ( Pattern, Association, Mesh ) in treeview representation - // Pattern - _dwPattern = new QDockWidget(aParent); - // _dwPattern->installEventFilter(this); - _dwPattern->setVisible(false); - _dwPattern->setWindowTitle("Model"); - _dwPattern->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display - - QFrame* patternFrame = new QFrame(_dwPattern); - patternFrame->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); - QVBoxLayout* patternLayout = new QVBoxLayout(patternFrame); - patternLayout->setSizeConstraint(QLayout::SetMaximumSize); - QSplitter *splitter = new QSplitter(Qt::Vertical,patternFrame); - _patternDataTreeView = new QTreeView(patternFrame);//_dwPattern); - _patternBuilderTreeView = new QTreeView(patternFrame); - splitter->addWidget(_patternDataTreeView); - splitter->addWidget(_patternBuilderTreeView); - patternLayout->addWidget(splitter); -// _patternDataTreeView->setMinimumHeight(DW_MINIMUM_WIDTH); - - _patternDataTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers/*QAbstractItemView::DoubleClicked*/); - _patternDataTreeView->setSelectionMode(QAbstractItemView::SingleSelection/*QAbstractItemView::MultiSelection*/);//);//QAbstractItemView::DoubleClicked, QAbstractItemView::SelectedClicked) - _patternDataTreeView->setItemDelegate(_treeViewDelegate); - - - _patternBuilderTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); - _patternBuilderTreeView->setItemDelegate(_treeViewDelegate); - _dwPattern->setWidget(patternFrame); - patternFrame->show(); - //_dwPattern->raise(); - - // Groups - _dwGroups = new QDockWidget(aParent); -// _dwGroups->installEventFilter(this); - - _dwGroups->setVisible(false); - _dwGroups->setWindowTitle("Groups"); - _dwGroups->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display - _groupsTreeView = new QTreeView(_dwGroups); -// _associationTreeView->setMinimumHeight(DW_MINIMUM_WIDTH); - _groupsTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); - _groupsTreeView->setItemDelegate(_treeViewDelegate); - _dwGroups->setWidget(_groupsTreeView); - _groupsTreeView->show(); - - // Mesh - _dwMesh = new QDockWidget(aParent); -// _dwMesh->installEventFilter(this); - _dwMesh->setVisible(false); - _dwMesh->setWindowTitle("Mesh"); - _dwMesh->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display - _meshTreeView = new QTreeView(_dwMesh); - // _meshTreeView->setMinimumHeight(DW_MINIMUM_WIDTH); - _meshTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); - _meshTreeView->setSelectionMode(QAbstractItemView::SingleSelection); - _meshTreeView->setItemDelegate(_treeViewDelegate); - _dwMesh->setWidget(_meshTreeView); - _meshTreeView->show(); - // _dwMesh->raise(); - - - - //3) ************* documents ( salome objectbrowser ) - QDockWidget *_dwObjectBrowser = 0; - QWidget* wid = getApp()->objectBrowser()->treeView(); - // QWidget *wid = application()->objectBrowser()->treeView(); - QWidget *w = wid->parentWidget(); - while ( w && !_dwObjectBrowser ) { - _dwObjectBrowser = ::qobject_cast( w ); - w = w->parentWidget(); - } -// _dwObjectBrowser->installEventFilter(this); -// _dwObjectBrowser->setVisible(false); - _dwObjectBrowser->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display - _dwObjectBrowser->setWindowTitle("Study"); - - - // dock widget position - // aParent->addDockWidget(Qt::LeftDockWidgetArea, _dwPattern); - // aParent->addDockWidget(Qt::RightDockWidgetArea, _dwInputPanel); - // aParent->addDockWidget( Qt::LeftDockWidgetArea, _dwPattern ); - aParent->addDockWidget( Qt::LeftDockWidgetArea, _dwObjectBrowser ); - aParent->addDockWidget( Qt::LeftDockWidgetArea, _dwInputPanel ); - - aParent->tabifyDockWidget( _dwObjectBrowser, _dwPattern ); -// aParent->tabifyDockWidget( _dwPattern, /*_dwAssociation ); -// aParent->tabifyDockWidget( _dwAssociation, */_dwGroups ); - aParent->tabifyDockWidget( _dwPattern, _dwGroups ); - aParent->tabifyDockWidget( _dwGroups, _dwMesh ); + QMainWindow *aParent = application()->desktop(); + + // Create dock widget (3 dock) + + //1) *********** user input panel ( contain user's edit dialog box ) + _dwInputPanel = new QDockWidget(aParent); + // QLayout* inputLayout = new QVBoxLayout(aParent); + // _dwInputPanel->setLayout(inputLayout); + // _dwInputPanel->setWindowFlags(Qt::FramelessWindowHint); + // _dwInputPanel->setWindowFlags(Qt::WindowTitleHint); + _dwInputPanel->setVisible(false); + _dwInputPanel->setWindowTitle("Input Panel"); + // _dwInputPanel->setMinimumHeight(DWINPUT_MINIMUM_HEIGHT); + _dwInputPanel->setMinimumWidth(DWINPUT_MINIMUM_WIDTH); // --- force a minimum until display +// _dwInputPanel->raise(); + + // _stacked = new QStackedWidget(_dwInputPanel); + // _dwInputPanel->setWidget(_stacked); + + _treeViewDelegate = new DocumentDelegate(_dwInputPanel); + + //2) ************* document data ( Pattern, Association, Mesh ) in treeview representation + // Pattern + _dwPattern = new QDockWidget(aParent); + // _dwPattern->installEventFilter(this); + _dwPattern->setVisible(false); + _dwPattern->setWindowTitle("Model"); + _dwPattern->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display + + QFrame* patternFrame = new QFrame(_dwPattern); + patternFrame->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + QVBoxLayout* patternLayout = new QVBoxLayout(patternFrame); + patternLayout->setSizeConstraint(QLayout::SetMaximumSize); + QSplitter *splitter = new QSplitter(Qt::Vertical,patternFrame); + _patternDataTreeView = new QTreeView(patternFrame);//_dwPattern); + _patternBuilderTreeView = new QTreeView(patternFrame); + _patternGeomTreeView = new QTreeView(patternFrame); + splitter->addWidget(_patternDataTreeView); + splitter->addWidget(_patternBuilderTreeView); + splitter->addWidget(_patternGeomTreeView); + patternLayout->addWidget(splitter); + // _patternDataTreeView->setMinimumHeight(DW_MINIMUM_WIDTH); + + _patternDataTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers/*QAbstractItemView::DoubleClicked*/); + _patternDataTreeView->setSelectionMode(QAbstractItemView::SingleSelection/*QAbstractItemView::MultiSelection*/);//);//QAbstractItemView::DoubleClicked, QAbstractItemView::SelectedClicked) + _patternDataTreeView->setItemDelegate(_treeViewDelegate); + + + _patternBuilderTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); + _patternBuilderTreeView->setItemDelegate(_treeViewDelegate); + + _patternGeomTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers); + _patternGeomTreeView->setSelectionMode(QAbstractItemView::SingleSelection/*QAbstractItemView::MultiSelection*/); + + _dwPattern->setWidget(patternFrame); + patternFrame->show(); + //_dwPattern->raise(); + + // Groups + _dwGroups = new QDockWidget(aParent); + // _dwGroups->installEventFilter(this); + + _dwGroups->setVisible(false); + _dwGroups->setWindowTitle("Groups"); + _dwGroups->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display + _groupsTreeView = new QTreeView(_dwGroups); + // _associationTreeView->setMinimumHeight(DW_MINIMUM_WIDTH); + _groupsTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); + _groupsTreeView->setItemDelegate(_treeViewDelegate); + _dwGroups->setWidget(_groupsTreeView); + _groupsTreeView->show(); + + // Mesh + _dwMesh = new QDockWidget(aParent); + // _dwMesh->installEventFilter(this); + _dwMesh->setVisible(false); + _dwMesh->setWindowTitle("Mesh"); + _dwMesh->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display + _meshTreeView = new QTreeView(_dwMesh); + // _meshTreeView->setMinimumHeight(DW_MINIMUM_WIDTH); + _meshTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); + _meshTreeView->setSelectionMode(QAbstractItemView::SingleSelection); + _meshTreeView->setItemDelegate(_treeViewDelegate); + _dwMesh->setWidget(_meshTreeView); + _meshTreeView->show(); + // _dwMesh->raise(); + + + + //3) ************* documents ( salome objectbrowser ) + QDockWidget *_dwObjectBrowser = 0; + QWidget* wid = getApp()->objectBrowser()->treeView(); + // QWidget *wid = application()->objectBrowser()->treeView(); + QWidget *w = wid->parentWidget(); + while ( w && !_dwObjectBrowser ) { + _dwObjectBrowser = ::qobject_cast( w ); + w = w->parentWidget(); + } + // _dwObjectBrowser->installEventFilter(this); + // _dwObjectBrowser->setVisible(false); + _dwObjectBrowser->setMinimumWidth(DW_MINIMUM_WIDTH); // --- force a minimum until display + _dwObjectBrowser->setWindowTitle("Study"); + + + // dock widget position + // aParent->addDockWidget(Qt::LeftDockWidgetArea, _dwPattern); + // aParent->addDockWidget(Qt::RightDockWidgetArea, _dwInputPanel); + // aParent->addDockWidget( Qt::LeftDockWidgetArea, _dwPattern ); + aParent->addDockWidget( Qt::LeftDockWidgetArea, _dwObjectBrowser ); + aParent->addDockWidget( Qt::LeftDockWidgetArea, _dwInputPanel ); + + aParent->tabifyDockWidget( _dwObjectBrowser, _dwPattern ); + // aParent->tabifyDockWidget( _dwPattern, /*_dwAssociation ); + // aParent->tabifyDockWidget( _dwAssociation, */_dwGroups ); + aParent->tabifyDockWidget( _dwPattern, _dwGroups ); + aParent->tabifyDockWidget( _dwGroups, _dwMesh ); #if QT_VERSION >= 0x040500 - aParent->setTabPosition(Qt::AllDockWidgetAreas, Resource::tabPanelsUp? QTabWidget::North: QTabWidget::South); + aParent->setTabPosition(Qt::AllDockWidgetAreas, Resource::tabPanelsUp? QTabWidget::North: QTabWidget::South); #endif -// connect( _dwPattern, SIGNAL( visibilityChanged(bool) ), this, SLOT( showPatternMenus(bool) ) ); -// // connect( _dwAssociation, SIGNAL( visibilityChanged(bool) ), this, SLOT( showAssociationMenus(bool) ) ); -// connect( _dwGroups, SIGNAL( visibilityChanged(bool) ), this, SLOT( showGroupsMenus(bool) ) ); -// connect( _dwMesh, SIGNAL( visibilityChanged(bool) ), this, SLOT( showMeshMenus(bool) ) ); + // connect( _dwPattern, SIGNAL( visibilityChanged(bool) ), this, SLOT( showPatternMenus(bool) ) ); + // // connect( _dwAssociation, SIGNAL( visibilityChanged(bool) ), this, SLOT( showAssociationMenus(bool) ) ); + // connect( _dwGroups, SIGNAL( visibilityChanged(bool) ), this, SLOT( showGroupsMenus(bool) ) ); + // connect( _dwMesh, SIGNAL( visibilityChanged(bool) ), this, SLOT( showMeshMenus(bool) ) ); - // popup menu on data tree view - _patternDataTreeView->setContextMenuPolicy(Qt::CustomContextMenu); - connect(_patternDataTreeView, - SIGNAL(customContextMenuRequested(const QPoint &)), - this, - SLOT(treeContextMenu(const QPoint &))); + // popup menu on data tree view + _patternDataTreeView->setContextMenuPolicy(Qt::CustomContextMenu); + connect(_patternDataTreeView, + SIGNAL(customContextMenuRequested(const QPoint &)), + this, + SLOT(treeContextMenu(const QPoint &)), Qt::UniqueConnection); } void HEXABLOCKGUI::createActions() { - QMainWindow *aParent = application()->desktop(); - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - - // Document - _newAct = createAction(_menuId++, - tr("Create a new document"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_NEW_DOCUMENT")), - tr("New Document"), - tr("Create a new document"), - 0, aParent, false, this, SLOT(newDocument())); - _newAct->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_N ); // --- QKeySequence::New ambiguous in SALOME - - _importAct = createAction(_menuId++, - tr("Load a document"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_LOAD_DOCUMENT")), - tr("Load Document"), - tr("Load a document"), - 0, aParent, false, this, SLOT(loadDocument())); - _importAct->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_O); // --- QKeySequence::Open ambiguous in SALOME - - _saveAct = createAction(_menuId++, - tr("Save the document"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_SAVE_DOCUMENT")), - tr("Save Document"), - tr("Save the document"), - 0, aParent, false, this, SLOT(saveDocument())); - -// _testAct = createAction(_menuId++, tr("Test"), resMgr->loadPixmap("HEXABLOCK", tr("ICON_TEST")), -// tr("Test"), tr("New test"), -// 0, aParent, false, this, SLOT(test_association())); - - // Pattern Data creation - _addVertex = createAction(_menuId++, - tr("Create a vertex"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_VERTEX")), - tr("Add Vertex"), - tr("Create a new vertex"), - 0, aParent, false, this, SLOT(addVertex())); - - _addEdge = createAction(_menuId++, - tr("Create an edge"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_EDGE")), - tr("Add Edge"), - tr("Create a new edge"), - 0, aParent, false, this, SLOT(addEdge())); - - _addQuad = createAction(_menuId++, - tr("Create a quadrangle"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_QUAD")), - tr("Add Quadrangle"), - tr("Create a new quadrangle"), - 0, aParent, false, this, SLOT(addQuad())); - - _addHexa = createAction(_menuId++, - tr("Create an hexahedron"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_HEXA")), - tr("Add Hexahedron"), - tr("Create a new hexahedron"), - 0, aParent, false, this, SLOT(addHexa())); - - // Builder Data creation - _addVector = createAction(_menuId++, - tr("Create a vector"), - resMgr->loadPixmap( "HEXABLOCK", tr("ICON_ADD_VECTOR")), - tr("Add Vector"), - tr("Create a new vector"), - 0, aParent, false, this, SLOT(addVector())); - - _addCylinder = createAction(_menuId++, - tr("Create a cylinder"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_CYLINDER")), - tr("Add Cylinder"), - tr("Create a new cylinder"), - 0, aParent, false, this, SLOT(addCylinder())); - - _addPipe = createAction(_menuId++, - tr("Create a pipe"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_PIPE")), - tr("Add Pipe"), - tr("Create a new pipe"), - 0, aParent, false, this, SLOT(addPipe())); - - _makeGrid = createAction(_menuId++, - tr("Make a grid"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_GRID")), - tr("Make Grid"), - tr("Make a grid"), - 0, aParent, false, this, SLOT(makeGrid())); - - _makeCylinder = createAction(_menuId++, - tr("Make a cylinder"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_CYLINDER")), - tr("Make Cylinder"), - tr("Make a cylinder"), - 0, aParent, false, this, SLOT(makeCylinder())); - - _makePipe = createAction(_menuId++, - tr("Make a pipe"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_PIPE")), - tr("Make Pipe"), - tr("Make a pipe"), - 0, aParent, false, this, SLOT(makePipe())); - - _makeCylinders = createAction(_menuId++, - tr("Make cylinders"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_CYLINDERS")), - tr("Make Cylinders"), - tr("Make cylinders"), - 0, aParent, false, this, SLOT(makeCylinders())); - - _makePipes = createAction(_menuId++, - tr("Make pipes"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_PIPES")), - tr("Make Pipes"), - tr("Make pipes"), - 0, aParent, false, this, SLOT(makePipes())); - -// // _makeRind = createAction( _menuId++, tr("Make rind"), resMgr->loadPixmap( "HEXABLOCK", tr("ICON_MAKE_RIND")), -// // tr("Make rind"), tr("Make rind"), -// // 0, aParent, false, this, SLOT(makeRind())); - - _makeHemiSphere = createAction(_menuId++, - tr("Make an hemisphere"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_HEMISPHERE")), - tr("Make Hemisphere"), - tr("Make an hemisphere"), - 0, aParent, false, this, SLOT(makeHemiSphere())); - - // Pattern Data edition - _removeHexa = createAction(_menuId++, - tr("Remove hexahedra"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_REMOVE_HEXA")), - tr("Remove Hexahedra"), - tr("Remove hexahedra"), - 0, aParent, false, this, SLOT(removeHexa())); - - _prismQuad = createAction(_menuId++, - tr("Prism quadrangles"), - resMgr->loadPixmap( "HEXABLOCK", tr("ICON_PRISM_QUAD")), - tr("Prism Quadrangles"), - tr("Prism quadrangles"), - 0, aParent, false, this, SLOT(prismQuad())); - - _joinQuad = createAction(_menuId++, - tr("Join quadrangles"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_JOIN_QUAD")), - tr("Join Quadrangles"), - tr("Join quadrangles with hexahedra"), - 0, aParent, false, this, SLOT(joinQuad())); - - _merge = createAction(_menuId++, - tr("Merge"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MERGE")), - tr("Merge"), - tr("Merge"), - 0, aParent, false, this, SLOT(merge())); - - _disconnect = createAction(_menuId++, - tr("Disconnect"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_DISCONNECT")), - tr("Disconnect"), - tr("Disconnect edges, vertexes or quadrangles"), - 0, aParent, false, this, SLOT(disconnectElts())); - - _cutEdge = createAction(_menuId++, - tr("Cut edge"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_CUT_EDGE")), - tr("Cut Edge"), - tr("Cut edge"), - 0, aParent, false, this, SLOT(cutEdge())); - - _makeTransformation = createAction(_menuId++, - tr("Make transformation"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_TRANSFORMATION")), - tr("Make Transformation"), - tr("Make transformation"), - 0, aParent, false, this, SLOT(makeTransformation())); - - _makeSymmetry = createAction(_menuId++, - tr("Make symmetry"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_SYMMETRY")), - tr("Make Symmetry"), - tr("Make symmetry"), - 0, aParent, false, this, SLOT(makeSymmetry())); - - _performTransformation = createAction(_menuId++, - tr("Perform transformation"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_PERFORM_TRANSFORMATION")), - tr("Perform Transformation"), - tr("Perform transformation"), - 0, aParent, false, this, SLOT(performTransformation())); - - _performSymmetry = createAction(_menuId++, - tr("Perform symmetry"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_PERFORM_SYMMETRY")), - tr("Perform Symmetry"), - tr("Perform symmetry"), - 0, aParent, false, this, SLOT(performSymmetry())); - - _replaceHexa = createAction(_menuId++, - tr("Replace hexahedron"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_REPLACE_HEXA")), - tr("Replace Hexahedron"), - tr("Replace hexahedron"), - 0, aParent, false, this, SLOT(replaceHexa())); - - _quadRevolution = createAction(_menuId++, - tr("Quad revolution"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_QUAD_REVOLUTION")), - tr("Quad Revolution"), - tr("Quad revolution"), - 0, aParent, false, this, SLOT(quadRevolution())); - - // Association - _assocVertex = createAction(_menuId++, - tr("Make vertex association"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_VERTEX_ASSOCIATION")), - tr("Make Vertex association"), - tr("Make vertex association"), - 0, aParent, false, this, SLOT(assocVertex())); - - _assocEdge = createAction(_menuId++, - tr("Make edge association"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_EDGE_ASSOCIATION")), - tr("Make Edge Association"), - tr("Make edge association"), - 0, aParent, false, this, SLOT(assocEdge())); - - _assocQuad = createAction(_menuId++, - tr("Make quadrangle association"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_QUAD_ASSOCIATION")), - tr("Make Quadrangle Association"), - tr("Make quadrangle association"), - 0, aParent, false, this, SLOT(assocQuad())); - - // Group - _addGroup = createAction(_menuId++, - tr("Add a group"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_GROUP")), - tr("Add Group"), - tr("Add a group"), - 0, aParent, false, this, SLOT(addGroup())); - - _removeGroup = createAction(_menuId++, - tr("Remove a group"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_REMOVE_GROUP")), - tr("Remove Group"), - tr("Remove a group"), - 0, aParent, false, this, SLOT(removeGroup())); - - // Mesh - _addLaw = createAction(_menuId++, - tr("Add a law"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_LAW")), - tr("Add Law"), - tr("Add a law"), - 0, aParent, false, this, SLOT(addLaw())); - - _removeLaw = createAction(_menuId++, - tr("Remove a law"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_REMOVE_LAW")), - tr("Remove Law"), - tr("Remove a law"), - 0, aParent, false, this, SLOT(removeLaw())); - - _setPropagation = createAction(_menuId++, - tr("Set propagation"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_SET_PROPAGATION")), - tr("Set Propagation"), - tr("Set propagation"), - 0, aParent, false, this, SLOT(setPropagation())); - - _computeMesh = createAction(_menuId++, - tr("Compute mesh"), - resMgr->loadPixmap("HEXABLOCK", tr("ICON_COMPUTE_MESH")), - tr("Compute Mesh"), - tr("Compute mesh"), - 0, aParent, false, this, SLOT(computeMesh())); - - - // _newAct->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_N ); // --- QKeySequence::New ambiguous in SALOME - // QAction* createAction(const int id, - // const QString& toolTip, - // const QIcon& icon, - // const QString& menu, - // const QString& status, - // const int shortCut, - // QObject* parent =0, - // bool checkable = false, - // QObject* receiver =0, - // const char* member =0); + QMainWindow *aParent = application()->desktop(); + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + + // Document + _newAct = createAction(_menuId++, + tr("Create a new document"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_NEW_DOCUMENT")), + tr("New Document"), + tr("Create a new document"), + 0, aParent, false, this, SLOT(newDocument())); + _newAct->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_N ); // --- QKeySequence::New ambiguous in SALOME + + _importAct = createAction(_menuId++, + tr("Load a document"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_LOAD_DOCUMENT")), + tr("Load Document"), + tr("Load a document"), + 0, aParent, false, this, SLOT(loadDocument())); + _importAct->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_O); // --- QKeySequence::Open ambiguous in SALOME + + _saveAct = createAction(_menuId++, + tr("Save the document"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_SAVE_DOCUMENT")), + tr("Save Document"), + tr("Save the document"), + 0, aParent, false, this, SLOT(saveDocument())); + + // _testAct = createAction(_menuId++, tr("Test"), resMgr->loadPixmap("HEXABLOCK", tr("ICON_TEST")), + // tr("Test"), tr("New test"), + // 0, aParent, false, this, SLOT(test_association())); + + // Pattern Data creation + _addVertex = createAction(_menuId++, + tr("Create a vertex"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_VERTEX")), + tr("Add Vertex"), + tr("Create a new vertex"), + 0, aParent, false, this, SLOT(addVertex())); + + _addEdge = createAction(_menuId++, + tr("Create an edge"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_EDGE")), + tr("Add Edge"), + tr("Create a new edge"), + 0, aParent, false, this, SLOT(addEdge())); + + _addQuad = createAction(_menuId++, + tr("Create a quadrangle"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_QUAD")), + tr("Add Quadrangle"), + tr("Create a new quadrangle"), + 0, aParent, false, this, SLOT(addQuad())); + + _addHexa = createAction(_menuId++, + tr("Create an hexahedron"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_HEXA")), + tr("Add Hexahedron"), + tr("Create a new hexahedron"), + 0, aParent, false, this, SLOT(addHexa())); + + // Builder Data creation + _addVector = createAction(_menuId++, + tr("Create a vector"), + resMgr->loadPixmap( "HEXABLOCK", tr("ICON_ADD_VECTOR")), + tr("Add Vector"), + tr("Create a new vector"), + 0, aParent, false, this, SLOT(addVector())); + + _addCylinder = createAction(_menuId++, + tr("Create a cylinder"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_CYLINDER")), + tr("Add Cylinder"), + tr("Create a new cylinder"), + 0, aParent, false, this, SLOT(addCylinder())); + + _addPipe = createAction(_menuId++, + tr("Create a pipe"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_PIPE")), + tr("Add Pipe"), + tr("Create a new pipe"), + 0, aParent, false, this, SLOT(addPipe())); + + _makeGrid = createAction(_menuId++, + tr("Make a grid"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_GRID")), + tr("Make Grid"), + tr("Make a grid"), + 0, aParent, false, this, SLOT(makeGrid())); + + _makeCylinder = createAction(_menuId++, + tr("Make a cylinder"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_CYLINDER")), + tr("Make Cylinder"), + tr("Make a cylinder"), + 0, aParent, false, this, SLOT(makeCylinder())); + + _makePipe = createAction(_menuId++, + tr("Make a pipe"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_PIPE")), + tr("Make Pipe"), + tr("Make a pipe"), + 0, aParent, false, this, SLOT(makePipe())); + + _makeCylinders = createAction(_menuId++, + tr("Make cylinders"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_CYLINDERS")), + tr("Make Cylinders"), + tr("Make cylinders"), + 0, aParent, false, this, SLOT(makeCylinders())); + + _makePipes = createAction(_menuId++, + tr("Make pipes"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_PIPES")), + tr("Make Pipes"), + tr("Make pipes"), + 0, aParent, false, this, SLOT(makePipes())); + + // // _makeRind = createAction( _menuId++, tr("Make rind"), resMgr->loadPixmap( "HEXABLOCK", tr("ICON_MAKE_RIND")), + // // tr("Make rind"), tr("Make rind"), + // // 0, aParent, false, this, SLOT(makeRind())); + + _makeHemiSphere = createAction(_menuId++, + tr("Make an hemisphere"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_HEMISPHERE")), + tr("Make Hemisphere"), + tr("Make an hemisphere"), + 0, aParent, false, this, SLOT(makeHemiSphere())); + + // Pattern Data edition + _removeHexa = createAction(_menuId++, + tr("Remove hexahedra"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_REMOVE_HEXA")), + tr("Remove Hexahedra"), + tr("Remove hexahedra"), + 0, aParent, false, this, SLOT(removeHexa())); + + _prismQuad = createAction(_menuId++, + tr("Prism quadrangles"), + resMgr->loadPixmap( "HEXABLOCK", tr("ICON_PRISM_QUAD")), + tr("Prism Quadrangles"), + tr("Prism quadrangles"), + 0, aParent, false, this, SLOT(prismQuad())); + + _joinQuad = createAction(_menuId++, + tr("Join quadrangles"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_JOIN_QUAD")), + tr("Join Quadrangles"), + tr("Join quadrangles with hexahedra"), + 0, aParent, false, this, SLOT(joinQuad())); + + _merge = createAction(_menuId++, + tr("Merge"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MERGE")), + tr("Merge"), + tr("Merge"), + 0, aParent, false, this, SLOT(merge())); + + _disconnect = createAction(_menuId++, + tr("Disconnect"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_DISCONNECT")), + tr("Disconnect"), + tr("Disconnect edges, vertexes or quadrangles"), + 0, aParent, false, this, SLOT(disconnectElts())); + + _cutEdge = createAction(_menuId++, + tr("Cut edge"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_CUT_EDGE")), + tr("Cut Edge"), + tr("Cut edge"), + 0, aParent, false, this, SLOT(cutEdge())); + + _makeTransformation = createAction(_menuId++, + tr("Make transformation"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_TRANSFORMATION")), + tr("Make Transformation"), + tr("Make transformation"), + 0, aParent, false, this, SLOT(makeTransformation())); + + _makeSymmetry = createAction(_menuId++, + tr("Make symmetry"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_MAKE_SYMMETRY")), + tr("Make Symmetry"), + tr("Make symmetry"), + 0, aParent, false, this, SLOT(makeSymmetry())); + + _performTransformation = createAction(_menuId++, + tr("Perform transformation"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_PERFORM_TRANSFORMATION")), + tr("Perform Transformation"), + tr("Perform transformation"), + 0, aParent, false, this, SLOT(performTransformation())); + + _performSymmetry = createAction(_menuId++, + tr("Perform symmetry"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_PERFORM_SYMMETRY")), + tr("Perform Symmetry"), + tr("Perform symmetry"), + 0, aParent, false, this, SLOT(performSymmetry())); + + _replaceHexa = createAction(_menuId++, + tr("Replace hexahedron"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_REPLACE_HEXA")), + tr("Replace Hexahedron"), + tr("Replace hexahedron"), + 0, aParent, false, this, SLOT(replaceHexa())); + + _quadRevolution = createAction(_menuId++, + tr("Quad revolution"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_QUAD_REVOLUTION")), + tr("Quad Revolution"), + tr("Quad revolution"), + 0, aParent, false, this, SLOT(quadRevolution())); + + // Association + _assocVertex = createAction(_menuId++, + tr("Make vertex association"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_VERTEX_ASSOCIATION")), + tr("Make Vertex association"), + tr("Make vertex association"), + 0, aParent, false, this, SLOT(assocVertex())); + + _assocEdge = createAction(_menuId++, + tr("Make edge association"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_EDGE_ASSOCIATION")), + tr("Make Edge Association"), + tr("Make edge association"), + 0, aParent, false, this, SLOT(assocEdge())); + + _assocQuad = createAction(_menuId++, + tr("Make quadrangle association"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_QUAD_ASSOCIATION")), + tr("Make Quadrangle Association"), + tr("Make quadrangle association"), + 0, aParent, false, this, SLOT(assocQuad())); + + // Group + _addGroup = createAction(_menuId++, + tr("Add a group"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_GROUP")), + tr("Add Group"), + tr("Add a group"), + 0, aParent, false, this, SLOT(addGroup())); + + _removeGroup = createAction(_menuId++, + tr("Remove a group"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_REMOVE_GROUP")), + tr("Remove Group"), + tr("Remove a group"), + 0, aParent, false, this, SLOT(removeGroup())); + + // Mesh + _addLaw = createAction(_menuId++, + tr("Add a law"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_ADD_LAW")), + tr("Add Law"), + tr("Add a law"), + 0, aParent, false, this, SLOT(addLaw())); + + _removeLaw = createAction(_menuId++, + tr("Remove a law"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_REMOVE_LAW")), + tr("Remove Law"), + tr("Remove a law"), + 0, aParent, false, this, SLOT(removeLaw())); + + _setPropagation = createAction(_menuId++, + tr("Set propagation"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_SET_PROPAGATION")), + tr("Set Propagation"), + tr("Set propagation"), + 0, aParent, false, this, SLOT(setPropagation())); + + _computeMesh = createAction(_menuId++, + tr("Compute mesh"), + resMgr->loadPixmap("HEXABLOCK", tr("ICON_COMPUTE_MESH")), + tr("Compute Mesh"), + tr("Compute mesh"), + 0, aParent, false, this, SLOT(computeMesh())); + + QPixmap pix; + _showModelInfoAct = createAction(_menuId++, + tr("Show Model Info"), + QIcon(pix), + tr("MODEL_INFO"),//TODO: must be added in translation file + tr("MODEL_INFO"), + 0, aParent, false, this, SLOT(showModelInfo())); + + _addShapeAct = createAction(_menuId++, + tr("Add Shape"), + QIcon(pix), + tr("ADD_SHAPE"),//TODO: must be added in translation file + tr("ADD_SHAPE"), + 0, aParent, false, this, SLOT(addShape())); + + //Show actor +// _showAct = createAction(_menuId++, +// tr("Show"), +// QIcon(pix), +// tr("Show"), +// tr("Show the actor"), +// 0, aParent, false, this, SLOT(showActor())); + //Hide actor +// _hideAct = createAction(_menuId++, +// tr("Hide"), +// QIcon(pix), +// tr("Hide"), +// tr("Hide the actor"), +// 0, aParent, false, this, SLOT(hideActor())); + + //Show only +// _showOnlyAct = createAction(_menuId++, +// tr("Show Only"), +// QIcon(pix), +// tr("Show Only"), +// tr("Show only this actor"), +// 0, aParent, false, this, SLOT(showOnlyActor())); + + + // _newAct->setShortcut( Qt::CTRL + Qt::SHIFT + Qt::Key_N ); // --- QKeySequence::New ambiguous in SALOME + // QAction* createAction(const int id, + // const QString& toolTip, + // const QIcon& icon, + // const QString& menu, + // const QString& status, + // const int shortCut, + // QObject* parent =0, + // bool checkable = false, + // QObject* receiver =0, + // const char* member =0); } void HEXABLOCKGUI::createMenus() { - int aMenuId, subMenuId; - aMenuId = createMenu( tr("MEN_FILE"), -1, -1 ); - createMenu( separator(), aMenuId, -1, 10 ); - aMenuId = createMenu( tr("HEXABLOCK"), aMenuId, -1, 10 ); - createMenu( _newAct, aMenuId ); - createMenu( _importAct, aMenuId ); - createMenu( _saveAct, aMenuId ); -// createMenu( _testAct, aMenuId ); - -// aMenuId = createMenu( tr( "HEXABLOCK" ), -1, -1, 30 ); - aMenuId = createMenu( tr( "Document" ), -1, -1, 30 ); - createMenu( _newAct, aMenuId );//, 10 - createMenu( _importAct, aMenuId ); - createMenu( _saveAct, aMenuId ); -// createMenu( _testAct, aMenuId ); - - aMenuId = createMenu( tr("Model"), -1, -1, 30 ); - subMenuId = createMenu( tr( "Construction" ), aMenuId, -1 ); - createMenu( _addVertex, subMenuId ); - createMenu( _addEdge, subMenuId ); - createMenu( _addQuad, subMenuId ); - createMenu( _addHexa, subMenuId ); - //createMenu( separator(), aMenuId); - - // Pattern Builder - createMenu( _addVector, subMenuId ); - createMenu( _addCylinder, subMenuId ); - createMenu( _addPipe, subMenuId ); - //createMenu( separator(), aMenuId); - createMenu( _makeGrid, subMenuId ); //Cartesian, Cylindrical, Spherical - createMenu( _makeCylinder, subMenuId ); - createMenu( _makePipe, subMenuId ); - createMenu( _makeCylinders,subMenuId ); - createMenu( _makePipes, subMenuId ); -// createMenu( _makeRind, aMenuId ); - createMenu( _makeHemiSphere,subMenuId ); - //createMenu( separator(), aMenuId); - - // Pattern Data Edition - subMenuId = createMenu( tr( "Operation" ), aMenuId, -1 ); - createMenu( _removeHexa, subMenuId ); - createMenu( _prismQuad, subMenuId ); - createMenu( _joinQuad, subMenuId ); - createMenu( _merge, subMenuId );// createMenu( _mergeVertices, aMenuId ); // createMenu( _mergeEdges, aMenuId ); - createMenu( _disconnect, subMenuId ); - createMenu( _cutEdge, subMenuId ); - createMenu( _makeTransformation, subMenuId ); // createMenu( _makeTranslation, aMenuId ); - createMenu( _makeSymmetry, subMenuId ); - createMenu( _performTransformation, subMenuId ); - createMenu( _performSymmetry, subMenuId ); - createMenu( _replaceHexa, subMenuId ); - createMenu( _quadRevolution, subMenuId ); - - // Association - aMenuId = createMenu( tr("Association"), -1, -1, 30 ); - createMenu( _assocVertex, aMenuId ); - createMenu( _assocEdge, aMenuId ); - createMenu( _assocQuad, aMenuId ); - - // Group - aMenuId = createMenu( tr("Groups"), -1, -1, 30 ); - createMenu( _addGroup, aMenuId ); - createMenu( _removeGroup, aMenuId ); //CS_TODO - - // Law - aMenuId = createMenu( tr("Mesh "), -1, -1, 30 ); - createMenu( _addLaw, aMenuId ); - createMenu( _removeLaw, aMenuId ); - createMenu( _setPropagation, aMenuId ); - createMenu( _computeMesh, aMenuId ); + int aMenuId, subMenuId; + aMenuId = createMenu( tr("MEN_FILE"), -1, -1 ); + createMenu( separator(), aMenuId, -1, 10 ); + aMenuId = createMenu( tr("HEXABLOCK"), aMenuId, -1, 10 ); + createMenu( _newAct, aMenuId ); + createMenu( _importAct, aMenuId ); + createMenu( _saveAct, aMenuId ); + // createMenu( _testAct, aMenuId ); + + // aMenuId = createMenu( tr( "HEXABLOCK" ), -1, -1, 30 ); + aMenuId = createMenu( tr( "Document" ), -1, -1, 30 ); + createMenu( _newAct, aMenuId );//, 10 + createMenu( _importAct, aMenuId ); + createMenu( _saveAct, aMenuId ); + // createMenu( _testAct, aMenuId ); + + aMenuId = createMenu( tr("Model"), -1, -1, 30 ); + subMenuId = createMenu( tr( "Construction" ), aMenuId, -1 ); + createMenu( _addVertex, subMenuId ); + createMenu( _addEdge, subMenuId ); + createMenu( _addQuad, subMenuId ); + createMenu( _addHexa, subMenuId ); + createMenu( separator(), subMenuId ); + + // Pattern Builder + createMenu( _addVector, subMenuId ); + createMenu( _addCylinder, subMenuId ); + createMenu( _addPipe, subMenuId ); + createMenu( separator(), subMenuId); + createMenu( _makeGrid, subMenuId ); //Cartesian, Cylindrical, Spherical + createMenu( _makeHemiSphere,subMenuId ); + createMenu( separator(), subMenuId); + createMenu( _makeCylinder, subMenuId ); + createMenu( _makePipe, subMenuId ); + createMenu( _makeCylinders,subMenuId ); + createMenu( _makePipes, subMenuId ); + // createMenu( _makeRind, aMenuId ); + + // Pattern Data Edition + subMenuId = createMenu( tr( "Operation" ), aMenuId, -1 ); + createMenu( _removeHexa, subMenuId ); + createMenu( _prismQuad, subMenuId ); + createMenu( _joinQuad, subMenuId ); + createMenu( _merge, subMenuId );// createMenu( _mergeVertices, aMenuId ); // createMenu( _mergeEdges, aMenuId ); + createMenu( _disconnect, subMenuId ); + createMenu( _cutEdge, subMenuId ); + createMenu( _makeTransformation, subMenuId ); // createMenu( _makeTranslation, aMenuId ); + createMenu( _makeSymmetry, subMenuId ); + createMenu( _performTransformation, subMenuId ); + createMenu( _performSymmetry, subMenuId ); + createMenu( _replaceHexa, subMenuId ); + createMenu( _quadRevolution, subMenuId ); + + // Association + aMenuId = createMenu( tr("Association"), -1, -1, 30 ); + createMenu( _assocVertex, aMenuId ); + createMenu( _assocEdge, aMenuId ); + createMenu( _assocQuad, aMenuId ); + + // Group + aMenuId = createMenu( tr("Groups"), -1, -1, 30 ); + createMenu( _addGroup, aMenuId ); + createMenu( _removeGroup, aMenuId ); //CS_TODO + + // Law + aMenuId = createMenu( tr("Mesh "), -1, -1, 30 ); + createMenu( _addLaw, aMenuId ); + createMenu( _removeLaw, aMenuId ); + createMenu( _setPropagation, aMenuId ); + createMenu( _computeMesh, aMenuId ); + + //show model infomation menu + QString aRule = "$component={'HEXABLOCK'}"; + popupMgr()->insert( _showModelInfoAct, -1, -1 ); // link the model information action to context menu + popupMgr()->setRule( _showModelInfoAct, aRule); + + //associate shape to a document menu + popupMgr()->insert( _addShapeAct, -1, -1 ); + popupMgr()->setRule( _addShapeAct, aRule ); + + //------------------------------------------------- + // Display / Erase + //------------------------------------------------- + // QString lc = "$"; // VSR : instead of QtxPopupSelection::defEquality(); + // QString dc = "selcount"; // VSR : instead of QtxPopupSelection::defSelCountParam() + // QString isNotEmpty("numberOfNodes <> 0"); + // QString aClient = QString( "%1client in {%2}" ).arg( lc ).arg( "'VTKViewer'" ); + // QString aType = QString( "%1type in {%2}" ).arg( lc ); + //// aType = aType.arg( mesh_part ); + // + // aClient = "($client in {'VTKViewer' 'ObjectBrowser'})"; + // QString anActiveVTK = QString("activeView = '%1'").arg(SVTK_Viewer::Type()); + // QString aSelCount = QString( "%1 > 0" ).arg( dc ); + +// popupMgr()->insert( separator(), -1, -1 ); +// QString aRule = "$component={'HEXABLOCK'}";/* and ( type='(" + aClient + " and " + +// aType + " and " + aSelCount + " and " + anActiveVTK + " and " + isNotEmpty + " %1 ) )";*/ +// // MESSAGE("aClient = " << aClient.toStdString()); +// // MESSAGE("aType = " << aType.toStdString()); +// // MESSAGE("aSelCount = " << aSelCount.toStdString()); +// // MESSAGE("anActiveVTK = " << anActiveVTK.toStdString()); +// // MESSAGE("isNotEmpty = " << isNotEmpty.toStdString()); +// // MESSAGE("aRule = " << aRule.toStdString()); +// popupMgr()->insert( _showAct, -1, -1 ); // DISPLAY +// popupMgr()->setRule( _showAct, aRule.arg( "and (not isVisible)" ), QtxPopupMgr::VisibleRule ); +// +// popupMgr()->insert( _hideAct, -1, -1 ); // ERASE +// popupMgr()->setRule( _hideAct, aRule.arg( "and isVisible" ), QtxPopupMgr::VisibleRule ); +// +// popupMgr()->insert( _showOnlyAct, -1, -1 ); // DISPLAY_ONLY +// popupMgr()->setRule(_showOnlyAct, aRule.arg( "" ), QtxPopupMgr::VisibleRule ); +// +// popupMgr()->insert( separator(), -1, -1 ); + } void HEXABLOCKGUI::createTools() { - int aToolId; - - aToolId = createTool ( tr( "HexaBlock Toolbar" ) ); - createTool( _newAct, aToolId ); - createTool( _importAct, aToolId ); - createTool( _saveAct, aToolId ); -// createTool( _testAct, aToolId ); - //createTool( separator(), aToolId ); - - // Pattern Data - aToolId = createTool ( tr( "Construction" ) ); - createTool( _addVertex, aToolId ); - createTool( _addEdge, aToolId ); - createTool( _addQuad, aToolId ); - createTool( _addHexa, aToolId ); - //createTool( separator(), aToolId ); - - // Pattern Builder - createTool( _addVector, aToolId ); - createTool( _addCylinder, aToolId ); - createTool( _addPipe, aToolId ); - //createTool( separator(), aToolId ); - - createTool( _makeGrid, aToolId ); - createTool( _makeCylinder, aToolId ); - createTool( _makePipe, aToolId ); - createTool( _makeCylinders,aToolId ); - createTool( _makePipes, aToolId ); -// createTool( _makeRind, aToolId); - createTool( _makeHemiSphere, aToolId ); - //createTool( separator(), aToolId ); - - // Pattern Data Edition - aToolId = createTool ( tr( "Operation" ) ); - createTool( _removeHexa, aToolId ); - createTool( _prismQuad, aToolId ); - createTool( _joinQuad, aToolId ); - createTool( _merge, aToolId ); - createTool( _disconnect, aToolId ); - createTool( _cutEdge, aToolId ); - createTool( _makeTransformation, aToolId ); - createTool( _makeSymmetry, aToolId ); - createTool( _performTransformation, aToolId ); - createTool( _performSymmetry, aToolId ); - createTool( _replaceHexa, aToolId ); - createTool( _quadRevolution, aToolId ); - //createTool( separator(), aToolId ); - - // Association - aToolId = createTool ( tr( "Association" ) ); - createTool( _assocVertex, aToolId ); - createTool( _assocEdge, aToolId ); - createTool( _assocQuad, aToolId ); - //createTool( separator(), aToolId ); - - // Group - aToolId = createTool ( tr( "Group" ) ); - createTool( _addGroup, aToolId ); - createTool( _removeGroup, aToolId ); //CS_TODO - //createTool( separator(), aToolId ); - - // Law - aToolId = createTool ( tr( "Mesh" ) ); - createTool( _addLaw, aToolId ); - createTool( _removeLaw, aToolId ); - createTool( _setPropagation, aToolId ); - createTool( _computeMesh, aToolId ); + int aToolId; + + aToolId = createTool ( tr( "HexaBlock Toolbar" ) ); + createTool( _newAct, aToolId ); + createTool( _importAct, aToolId ); + createTool( _saveAct, aToolId ); + // createTool( _testAct, aToolId ); + //createTool( separator(), aToolId ); + + // Pattern Data + aToolId = createTool ( tr( "Construction" ) ); + createTool( _addVertex, aToolId ); + createTool( _addEdge, aToolId ); + createTool( _addQuad, aToolId ); + createTool( _addHexa, aToolId ); + createTool( separator(), aToolId ); + + // Pattern Builder + createTool( _addVector, aToolId ); + createTool( _addCylinder, aToolId ); + createTool( _addPipe, aToolId ); + createTool( separator(), aToolId ); + + createTool( _makeGrid, aToolId ); + createTool( _makeHemiSphere, aToolId ); + createTool( separator(), aToolId ); + createTool( _makeCylinder, aToolId ); + createTool( _makePipe, aToolId ); + createTool( _makeCylinders,aToolId ); + createTool( _makePipes, aToolId ); + // createTool( _makeRind, aToolId); +// createTool( separator(), aToolId ); + + // Pattern Data Edition + aToolId = createTool ( tr( "Operation" ) ); + createTool( _removeHexa, aToolId ); + createTool( _prismQuad, aToolId ); + createTool( _joinQuad, aToolId ); + createTool( _merge, aToolId ); + createTool( _disconnect, aToolId ); + createTool( _cutEdge, aToolId ); + createTool( _makeTransformation, aToolId ); + createTool( _makeSymmetry, aToolId ); + createTool( _performTransformation, aToolId ); + createTool( _performSymmetry, aToolId ); + createTool( _replaceHexa, aToolId ); + createTool( _quadRevolution, aToolId ); + //createTool( separator(), aToolId ); + + // Association + aToolId = createTool ( tr( "Association" ) ); + createTool( _assocVertex, aToolId ); + createTool( _assocEdge, aToolId ); + createTool( _assocQuad, aToolId ); + //createTool( separator(), aToolId ); + + // Group + aToolId = createTool ( tr( "Group" ) ); + createTool( _addGroup, aToolId ); + createTool( _removeGroup, aToolId ); //CS_TODO + //createTool( separator(), aToolId ); + + // Law + aToolId = createTool ( tr( "Mesh" ) ); + createTool( _addLaw, aToolId ); + createTool( _removeLaw, aToolId ); + createTool( _setPropagation, aToolId ); + createTool( _computeMesh, aToolId ); } void HEXABLOCKGUI::initialMenus() { - showDocumentMenus( true ); - showPatternMenus( false ); - showAssociationMenus( false ); - showGroupsMenus( false ); - showMeshMenus( false ); + showDocumentMenus( true ); + showPatternMenus( false ); + showAssociationMenus( false ); + showGroupsMenus( false ); + showMeshMenus( false ); } void HEXABLOCKGUI::showAllMenus() { - showDocumentMenus( true ); - showPatternMenus( true ); - showAssociationMenus( true ); - showGroupsMenus( true ); - showMeshMenus( true ); + showDocumentMenus( true ); + showPatternMenus( true ); + showAssociationMenus( true ); + showGroupsMenus( true ); + showMeshMenus( true ); } void HEXABLOCKGUI::showDocumentMenus(bool show) { - DEBTRACE("HEXABLOCKGUI::showDocumentMenus " << show); - show = true; // - setMenuShown(_newAct, show); - setToolShown(_newAct, show); - setMenuShown(_importAct, show); - setToolShown(_importAct, show); - setMenuShown(_saveAct, show); - setToolShown(_saveAct, show); -// setMenuShown(_testAct, show); -// setToolShown(_testAct, show); + DEBTRACE("HEXABLOCKGUI::showDocumentMenus " << show); + show = true; // + setMenuShown(_newAct, show); + setToolShown(_newAct, show); + setMenuShown(_importAct, show); + setToolShown(_importAct, show); + setMenuShown(_saveAct, show); + setToolShown(_saveAct, show); + // setMenuShown(_testAct, show); + // setToolShown(_testAct, show); } void HEXABLOCKGUI::showPatternMenus(bool show) { - DEBTRACE("HEXABLOCKGUI::showPatternMenus " << show); - DEBTRACE("_currentModel " << _currentModel ); - if ( show && !_currentModel ) return; - - setMenuShown(_addVertex, show );//true); - setToolShown(_addVertex, show); - setMenuShown(_addEdge, show );//true); - setToolShown(_addEdge, show); - setMenuShown(_addQuad, show );//true); - setToolShown(_addQuad, show); - setMenuShown(_addHexa, show );//true); - setToolShown(_addHexa, show); - - - setMenuShown( _addVector, show );//true); - setToolShown( _addVector, show); - setMenuShown( _addCylinder, show );//true); - setToolShown( _addCylinder, show); - setMenuShown( _addPipe, show );//true); - setToolShown( _addPipe, show); - setMenuShown( _makeGrid, show );//true); - setToolShown( _makeGrid, show); - setMenuShown( _makeCylinder, show );//true); - setToolShown( _makeCylinder, show); - setMenuShown( _makePipe, show );//true); - setToolShown( _makePipe, show); - setMenuShown( _makeCylinders, show );//true); - setToolShown( _makeCylinders, show); - setMenuShown( _makePipes, show );//true); - setToolShown( _makePipes, show); -// setMenuShown( _makeRind, show );//true); -// setToolShown( _makeRind, show); - setMenuShown( _makeHemiSphere, show );//true); - setToolShown( _makeHemiSphere, show); - - // Pattern Data Edition - setMenuShown( _removeHexa, show );//true); - setToolShown( _removeHexa, show); - setMenuShown( _prismQuad, show );//true); - setToolShown( _prismQuad, show); - setMenuShown( _joinQuad, show );//true); - setToolShown( _joinQuad, show); - setMenuShown( _merge, show );//true); - setToolShown( _merge, show); - setMenuShown( _disconnect, show );//true); - setToolShown( _disconnect, show); - setMenuShown( _cutEdge, show );//true); - setToolShown( _cutEdge, show); - setMenuShown( _makeTransformation, show );//true); - setToolShown( _makeTransformation, show); - setMenuShown( _makeSymmetry, show );//true); - setToolShown( _makeSymmetry, show); - setMenuShown( _performTransformation, show );//true); - setToolShown( _performTransformation, show); - setMenuShown( _performSymmetry, show );//true); - setToolShown( _performSymmetry, show); - setMenuShown( _replaceHexa, show );//true); - setToolShown( _replaceHexa, show); - setMenuShown( _quadRevolution, show );//true); - setToolShown( _quadRevolution, show); + DEBTRACE("HEXABLOCKGUI::showPatternMenus " << show); + DEBTRACE("getCurrentModel() " << getCurrentModel() ); + if ( show && !getCurrentModel() ) return; + + setMenuShown(_addVertex, show );//true); + setToolShown(_addVertex, show); + setMenuShown(_addEdge, show );//true); + setToolShown(_addEdge, show); + setMenuShown(_addQuad, show );//true); + setToolShown(_addQuad, show); + setMenuShown(_addHexa, show );//true); + setToolShown(_addHexa, show); + + + setMenuShown( _addVector, show );//true); + setToolShown( _addVector, show); + setMenuShown( _addCylinder, show );//true); + setToolShown( _addCylinder, show); + setMenuShown( _addPipe, show );//true); + setToolShown( _addPipe, show); + setMenuShown( _makeGrid, show );//true); + setToolShown( _makeGrid, show); + setMenuShown( _makeCylinder, show );//true); + setToolShown( _makeCylinder, show); + setMenuShown( _makePipe, show );//true); + setToolShown( _makePipe, show); + setMenuShown( _makeCylinders, show );//true); + setToolShown( _makeCylinders, show); + setMenuShown( _makePipes, show );//true); + setToolShown( _makePipes, show); + // setMenuShown( _makeRind, show );//true); + // setToolShown( _makeRind, show); + setMenuShown( _makeHemiSphere, show );//true); + setToolShown( _makeHemiSphere, show); + + // Pattern Data Edition + setMenuShown( _removeHexa, show );//true); + setToolShown( _removeHexa, show); + setMenuShown( _prismQuad, show );//true); + setToolShown( _prismQuad, show); + setMenuShown( _joinQuad, show );//true); + setToolShown( _joinQuad, show); + setMenuShown( _merge, show );//true); + setToolShown( _merge, show); + setMenuShown( _disconnect, show );//true); + setToolShown( _disconnect, show); + setMenuShown( _cutEdge, show );//true); + setToolShown( _cutEdge, show); + setMenuShown( _makeTransformation, show );//true); + setToolShown( _makeTransformation, show); + setMenuShown( _makeSymmetry, show );//true); + setToolShown( _makeSymmetry, show); + setMenuShown( _performTransformation, show );//true); + setToolShown( _performTransformation, show); + setMenuShown( _performSymmetry, show );//true); + setToolShown( _performSymmetry, show); + setMenuShown( _replaceHexa, show );//true); + setToolShown( _replaceHexa, show); + setMenuShown( _quadRevolution, show );//true); + setToolShown( _quadRevolution, show); } void HEXABLOCKGUI::showAssociationMenus(bool show) { - DEBTRACE("HEXABLOCKGUI::showAssociationMenus" << show); - if ( show && !_currentModel ) return; + DEBTRACE("HEXABLOCKGUI::showAssociationMenus" << show); + if ( show && !getCurrentModel() ) return; - // Association Edition - setMenuShown( _assocVertex, show ); - setToolShown( _assocVertex, show); - setMenuShown( _assocEdge, show ); - setToolShown( _assocEdge, show); - setMenuShown( _assocQuad, show ); - setToolShown( _assocQuad, show); + // Association Edition + setMenuShown( _assocVertex, show ); + setToolShown( _assocVertex, show); + setMenuShown( _assocEdge, show ); + setToolShown( _assocEdge, show); + setMenuShown( _assocQuad, show ); + setToolShown( _assocQuad, show); } void HEXABLOCKGUI::showGroupsMenus(bool show) { - DEBTRACE("HEXABLOCKGUI::showGroupsMenus" << show); - if ( show && !_currentModel ) return; - setMenuShown( _addGroup, show );//true); - setToolShown( _addGroup, show); - setMenuShown( _removeGroup , show );//true); - setToolShown( _removeGroup , show); + DEBTRACE("HEXABLOCKGUI::showGroupsMenus" << show); + if ( show && !getCurrentModel() ) return; + setMenuShown( _addGroup, show );//true); + setToolShown( _addGroup, show); + setMenuShown( _removeGroup , show );//true); + setToolShown( _removeGroup , show); } void HEXABLOCKGUI::showMeshMenus(bool show) { - DEBTRACE("HEXABLOCKGUI::showMeshMenus" << show); - if ( show && !_currentModel ) return; - setMenuShown( _addLaw, show );//true); - setToolShown( _addLaw, show); - setMenuShown( _removeLaw, show );//true); - setToolShown( _removeLaw, show);; - setMenuShown( _setPropagation, show );//true); - setToolShown( _setPropagation, show); - setMenuShown( _computeMesh, show); //true); - setToolShown( _computeMesh, show); + DEBTRACE("HEXABLOCKGUI::showMeshMenus" << show); + if ( show && !getCurrentModel() ) return; + setMenuShown( _addLaw, show );//true); + setToolShown( _addLaw, show); + setMenuShown( _removeLaw, show );//true); + setToolShown( _removeLaw, show);; + setMenuShown( _setPropagation, show );//true); + setToolShown( _setPropagation, show); + setMenuShown( _computeMesh, show); //true); + setToolShown( _computeMesh, show); } +void HEXABLOCKGUI::showActor() +{ + //TODO: Implement the real one (this is not show only actor, but show actor) + VtkDocumentGraphicView* currentVtkGView = getCurrentVtkGraphicView(); + if (currentVtkGView == NULL || currentVtkGView->getViewWindow() == NULL || + currentVtkGView->isEmpty() || currentVtkGView->getDocumentActor() == NULL) + return; + currentVtkGView->getViewWindow()->setFocus(); + currentVtkGView->getViewWindow()->Display(currentVtkGView->getDocumentActor()->getIO()); + currentVtkGView->update(); + currentVtkGView->getViewWindow()->onFitAll(); -void HEXABLOCKGUI::switchModel(SUIT_ViewWindow *view) -{ - DEBTRACE("HEXABLOCKGUI::switchModel " << view); + //update the visibility state now + SalomeApp_Study* aStudy = HEXABLOCKGUI::activeStudy(); + SUIT_ViewManager* vman = currentVtkGView->getViewWindow()->getViewManager(); + if (aStudy == NULL || vman == NULL) return; - if ( _documentModels.count(view) == 0 ){ - DEBTRACE("HEXABLOCKGUI::switchModel : no model found, cannot switch"); - initialMenus(); - return; - } + Handle(SALOME_InteractiveObject) anIO = currentVtkGView->getDocumentActor()->getIO(); + aStudy->setObjectProperty(vman->getId(), anIO->getEntry(), VISIBILITY_PROP, 1 ); + displayer()->setVisibilityState(anIO->getEntry(), Qtx::ShownState); +} + +void HEXABLOCKGUI::showOnlyActor() +{ + VtkDocumentGraphicView* currentVtkGView = getCurrentVtkGraphicView(); + if (currentVtkGView == NULL || currentVtkGView->getViewWindow() == NULL || + currentVtkGView->isEmpty() || currentVtkGView->getDocumentActor() == NULL) + return; - if ( _currentModel != _documentModels[view] ){ // need to switch - if (_dwInputPanel){ - QWidget* w = _dwInputPanel->widget(); - if (w) w->close(); + SALOME_Actor *actor = NULL; + vtkActor *aVTKActor = NULL; + Handle(SALOME_InteractiveObject) anIO; + + SUIT_ViewManager* vman = currentVtkGView->getViewWindow()->getViewManager(); + SalomeApp_Study* aStudy = HEXABLOCKGUI::activeStudy(); + vtkRenderer *aRenderer = currentDocGView->getViewWindow()->getRenderer(); + if (aStudy == NULL || vman == NULL || aRenderer == NULL) return; + + //update the visibility state for all actors ----------- + VTK::ActorCollectionCopy aCopy(aRenderer->GetActors()); + vtkActorCollection *aCollection = aCopy.GetActors(); + if (aCollection == NULL) return; + aCollection->InitTraversal(); + + while( aVTKActor = aCollection->GetNextActor() ){ + actor = dynamic_cast( aVTKActor ); + if ( actor && actor->hasIO() ){ + anIO = actor->getIO(); + if( anIO->hasEntry()) + { + aStudy->setObjectProperty(vman->getId(), anIO->getEntry(), VISIBILITY_PROP, 0 ); + displayer()->setVisibilityState(anIO->getEntry(), Qtx::HiddenState); + }//if + }//if + }//while + + //show only the current actor ----------------- + currentVtkGView->getViewWindow()->setFocus(); + currentVtkGView->getViewWindow()->DisplayOnly(currentVtkGView->getDocumentActor()->getIO()); + currentVtkGView->update(); + currentVtkGView->getViewWindow()->onFitAll(); + anIO = currentVtkGView->getDocumentActor()->getIO(); + aStudy->setObjectProperty(vman->getId(), anIO->getEntry(), VISIBILITY_PROP, 1 ); + displayer()->setVisibilityState(anIO->getEntry(), Qtx::ShownState); + + + //showOnly in occ viewer ------------- + + OCCViewer_ViewWindow* occView = currentOccGView == NULL ? NULL : currentOccGView->getViewWindow(); + DocumentModel* docModel = currentVtkGView->getDocumentModel(); + if (occView == NULL || docModel == NULL) return; + SALOME_View* vf = dynamic_cast(occView->getViewManager()->getViewModel()); + if (vf == NULL) return; + + GEOM_Displayer* disp = geomBaseHelper->getDisplayer(); + if (disp == NULL) + { + MESSAGE("Displayer IS NULL"); + return; } + _PTR(Study) aStudyDS = aStudy->studyDS(); + if (aStudyDS == NULL) return; - // models - _currentModel = _documentModels[view]; - _patternDataModel->setSourceModel(_currentModel); - _patternBuilderModel->setSourceModel(_currentModel); -// _associationsModel->setSourceModel(_currentModel); - _groupsModel->setSourceModel(_currentModel); - _meshModel->setSourceModel(_currentModel); + //erase all shapes from the occ viewer + disp->EraseAll(false, true, vf); - // associate models and views - _currentGraphicView = _documentView[view]; -// _currentGraphicView->setModel(_patternDataModel); -// connect( _currentModel, SIGNAL(patternDataChanged() ), _currentGraphicView, SLOT ( onPatternDatachanged() ) ); - _currentGraphicView->setModel(_currentModel); + //show only the shapes of the document + QList entries = docModel->getShapesEntries(); - _patternDataTreeView->setModel(_patternDataModel); //_currentModel - _patternBuilderTreeView->setModel(_patternBuilderModel);//_currentModel -// _associationTreeView->setModel(_associationsModel);; - _groupsTreeView->setModel(_groupsModel); - _meshTreeView->setModel(_meshModel); + CORBA::Object_var aCorbaObj = CORBA::Object::_nil(); + GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_nil(); + HEXABLOCKGUI::geomBaseHelper->erasePreview(true); - // set selections for each view -// if ( _patternDataSelectionModel ) delete _patternDataSelectionModel; -// if ( _patternBuilderSelectionModel ) delete _patternBuilderSelectionModel; -// if ( _groupsSelectionModel ) delete _groupsSelectionModel; -// if ( _meshSelectionModel ) delete _meshSelectionModel; + foreach(const QString& entry, entries) + { + if (!entry.isEmpty()) + { + _PTR(SObject) aSChild = aStudyDS->FindObjectID( entry.toStdString() ); + aCorbaObj = corbaObj( aSChild ); + aGeomObj = GEOM::GEOM_Object::_narrow( aCorbaObj ); + if ( !CORBA::is_nil(aGeomObj) ){ + geomBaseHelper->display(aGeomObj._retn()); +// QString objIOR = GEOMBase::GetIORFromObject( aGeomObj._retn() ); +// Handle(GEOM_AISShape) aSh = GEOMBase::ConvertIORinGEOMAISShape( objIOR );//, true ) +// if ( !aSh.IsNull() ) +// disp->Display(aSh->getIO(), true, vf); +// else +// { +// MESSAGE("aSh IS NULL"); +// } + } + } + } + occView->onResetView (); +} - _patternDataSelectionModel = new PatternDataSelectionModel( _patternDataModel ); - _patternBuilderSelectionModel = new PatternBuilderSelectionModel( _patternBuilderModel, _patternDataSelectionModel ); - _groupsSelectionModel = new GroupsSelectionModel( _groupsModel ); - _meshSelectionModel = new MeshSelectionModel( _meshModel ); +void HEXABLOCKGUI::hideActor() +{ + VtkDocumentGraphicView* currentVtkGView = getCurrentVtkGraphicView(); + if (currentVtkGView == NULL || currentVtkGView->isEmpty() || + currentVtkGView->getViewWindow() == NULL || + currentVtkGView->getDocumentActor() == NULL) return; - _patternDataSelectionModel->setSalomeSelectionMgr( selectionMgr() ); -// _meshSelectionModel->setSalomeSelectionMgr( selectionMgr() ); -// _patternDataSelectionModel->setGeomEngine( _geomEngine ); +// currentVtkGView->getViewWindow()->setFocus(); + currentVtkGView->getViewWindow()->Erase(currentVtkGView->getDocumentActor()->getIO()); + currentVtkGView->getViewWindow()->onFitAll(); - _currentGraphicView->setSelectionModel(_patternDataSelectionModel); + //update the visibility state now + SalomeApp_Study* aStudy = HEXABLOCKGUI::activeStudy(); + SUIT_ViewManager* vman = currentVtkGView->getViewWindow()->getViewManager(); + if (aStudy == NULL || vman == NULL) return; - _patternDataTreeView->setSelectionModel(_patternDataSelectionModel); - _patternDataTreeView->setEditTriggers(/*QAbstractItemView::EditKeyPressed*/QAbstractItemView::AllEditTriggers /*QAbstractItemView::NoEditTriggers*/); + Handle(SALOME_InteractiveObject) anIO = currentVtkGView->getDocumentActor()->getIO(); + aStudy->setObjectProperty(vman->getId(), anIO->getEntry(), VISIBILITY_PROP, 0 ); + displayer()->setVisibilityState(anIO->getEntry(), Qtx::HiddenState); +} - _patternBuilderTreeView->setSelectionModel(_patternBuilderSelectionModel); - _patternBuilderTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); - _groupsTreeView->setSelectionModel(_groupsSelectionModel); - _groupsTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); +VtkDocumentGraphicView* HEXABLOCKGUI::getCurrentVtkGraphicView() +{ +// VtkDocumentGraphicView* gv = graphicViewsHandler->getDocumentGraphicView(currentVtkView); +// return graphicViewsHandler->getDocumentGraphicView(currentVtkView); + return currentDocGView; +} - _meshTreeView->setSelectionModel( _meshSelectionModel ); - _meshTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); +void HEXABLOCKGUI::showDockWidgets(bool isVisible) +{ + DEBTRACE("HEXABLOCKGUI::showDockWidgets " << isVisible); + + if (_dwObjectBrowser) _dwObjectBrowser->setVisible(isVisible); + if (_dwObjectBrowser) _dwObjectBrowser->toggleViewAction()->setVisible(isVisible); + if (_dwPattern) _dwPattern->setVisible(isVisible); + if (_dwPattern) _dwPattern->toggleViewAction()->setVisible(isVisible); - // delegate for edition - _treeViewDelegate->setDocumentModel( _currentModel ); - _treeViewDelegate->setPatternDataSelectionModel( _patternDataSelectionModel ); - _treeViewDelegate->setPatternBuilderSelectionModel( _patternBuilderSelectionModel ); - _treeViewDelegate->setGroupsSelectionModel( _groupsSelectionModel /*_groupsTreeView->selectionModel()*/ ); - _treeViewDelegate->setMeshSelectionModel( _meshSelectionModel/*_meshTreeView->selectionModel()*/ ); + // if (_dwAssociation) _dwAssociation->setVisible(isVisible); + // if (_dwAssociation) _dwAssociation->toggleViewAction()->setVisible(isVisible); + if (_dwMesh) _dwMesh->setVisible(isVisible); + if (_dwMesh) _dwMesh->toggleViewAction()->setVisible(isVisible); - connect( _patternDataSelectionModel, SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - connect( _patternBuilderSelectionModel, SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - connect( _groupsSelectionModel, SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - connect( _meshSelectionModel, SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + if (_dwGroups) _dwGroups->setVisible(isVisible); + if (_dwGroups) _dwGroups->toggleViewAction()->setVisible(isVisible); - } +// if (_dwInputPanel) _dwInputPanel->setVisible(isVisible); +// if (_dwInputPanel) _dwInputPanel->toggleViewAction()->setVisible(isVisible); - showPatternMenus(true); +// QWidget* w = _dwInputPanel->widget(); +// if (w) w->show(); + // if ( isVisible ) _dwObjectBrowser->raise();//_dwPattern->raise(); } +// void HEXABLOCKGUI::raiseStacked() +// { +// // if (_dwStacked) _dwStacked->raise(); +// } -void HEXABLOCKGUI::showDockWidgets(bool isVisible) +void HEXABLOCKGUI::testDocument() { - DEBTRACE("HEXABLOCKGUI::showDockWidgets " << isVisible); + //CS_TEST + // ---------- + // QStandardItem *parentItem = getCurrentModel()->invisibleRootItem(); + // QStandardItem *myItem = new QStandardItem("MyItem"); + // parentItem->appendRow(myItem); + // // ---------- + // QModelIndex v0 = getCurrentModel()->addVertex(0., 0., 0.); + // QModelIndex v1 = getCurrentModel()->addVertex(5., 0., 0.); + // QModelIndex v2 = getCurrentModel()->addVertex(5., 5., 0.); + // QModelIndex v3 = getCurrentModel()->addVertex(0., 5., 0.); + // QModelIndex v4 = getCurrentModel()->addVertex(0., 0., 5.); + // QModelIndex v5 = getCurrentModel()->addVertex(5., 0., 5.); + // QModelIndex v6 = getCurrentModel()->addVertex(5., 5., 5.); + // QModelIndex v7 = getCurrentModel()->addVertex(0., 5., 5.); + // // + // // + // QModelIndex q0 = getCurrentModel()->addQuadVertices( v0, v1, v2, v3 ); + // QModelIndex q1 = getCurrentModel()->addQuadVertices( v4, v5, v6, v7 ); + // QModelIndex q2 = getCurrentModel()->addQuadVertices( v0, v3, v7, v4 ); + // QModelIndex q3 = getCurrentModel()->addQuadVertices( v1, v2, v6, v5 ); + // QModelIndex q4 = getCurrentModel()->addQuadVertices( v0, v1, v5, v4 ); + // QModelIndex q5 = getCurrentModel()->addQuadVertices( v3, v2, v6, v7 ); + // + // QModelIndex h0 = getCurrentModel()->addHexaQuad( q0, q1, q2, q3, q4, q5 ); + // QModelIndex vx = getCurrentModel()->addVector(1., 0., 0.); + // QModelIndex vy = getCurrentModel()->addVector(0., 1., 0.); + // QModelIndex vz = getCurrentModel()->addVector(0., 0., 1.); + // + + + + // // QModelIndex orig1 = getCurrentModel()->addVertex (0, 0,0); + // // QModelIndex orig2 = getCurrentModel()->addVertex (50,0,0); + // // QModelIndex vz = getCurrentModel()->addVector (0,0,1); + // // QModelIndex vx = getCurrentModel()->addVector (1,0,0); + // // + // // int nr = 4; + // // int nri = 3; + // // int nre = nr; + // // int na = 9; + // // int nl = 5; + // // + // // QModelIndex cyl = getCurrentModel()->addCylinder (orig1, vz, nr, nl); + // // QModelIndex pipe = getCurrentModel()->addPipe (orig2, vz, nri, nre, nl); + // // + // // getCurrentModel()->makeCylinder (cyl, vx, nr, na, nl); + // // getCurrentModel()->makePipe(pipe, vx, nr, na, nl); + + + + // newMesh( "toto", 3, "FactoryServer"); + // newMesh +} - if (_dwObjectBrowser) _dwObjectBrowser->setVisible(isVisible); - if (_dwObjectBrowser) _dwObjectBrowser->toggleViewAction()->setVisible(isVisible); +void HEXABLOCKGUI::test_make_cart_grid() +{ + QModelIndex orig1 = getCurrentModel()->addVertex( 0, 0, 0); + QModelIndex orig2 = getCurrentModel()->addVertex( 10, 0, 0); + QModelIndex orig3 = getCurrentModel()->addVertex( 0, 10, 0); + QModelIndex orig4 = getCurrentModel()->addVertex( 10, 10, 0); + QModelIndex orig5 = getCurrentModel()->addVertex( 0, 20, 0); + QModelIndex orig6 = getCurrentModel()->addVertex( 10, 20, 0); - if (_dwPattern) _dwPattern->setVisible(isVisible); - if (_dwPattern) _dwPattern->toggleViewAction()->setVisible(isVisible); + QModelIndex vz = getCurrentModel()->addVector(0, 0, 1); + QModelIndex vx = getCurrentModel()->addVector(1, 0, 0); -// if (_dwAssociation) _dwAssociation->setVisible(isVisible); -// if (_dwAssociation) _dwAssociation->toggleViewAction()->setVisible(isVisible); + //int dr = 1; + //int dl = 1; + //int nr = 2; + //int nl = 3; - if (_dwMesh) _dwMesh->setVisible(isVisible); - if (_dwMesh) _dwMesh->toggleViewAction()->setVisible(isVisible); + // QModelIndex c1 = getCurrentModel()->makeCylindrical(orig1, vx, vz, dr, 360, dl, nr, 4, nl, true); + // QModelIndex c2 = getCurrentModel()->makeCylindrical(orig2, vx, vz, dr, 360, dl, nr, 8, nl, true); + // QModelIndex c3 = getCurrentModel()->makeCylindrical(orig3, vx, vz, dr, 270, dl, nr, 8, nl, true); + // QModelIndex c4 = getCurrentModel()->makeCylindrical(orig4, vx, vz, dr, 270, dl, nr, 7, nl, true); + // QModelIndex c5 = getCurrentModel()->makeCylindrical(orig5, vx, vz, dr, 360, dl, nr, 5, nl, true); + // QModelIndex c6 = getCurrentModel()->makeCylindrical(orig6, vx, vz, dr, 360, dl, nr, 6, nl, true); - if (_dwGroups) _dwGroups->setVisible(isVisible); - if (_dwGroups) _dwGroups->toggleViewAction()->setVisible(isVisible); +} - if (_dwInputPanel) _dwInputPanel->setVisible(isVisible); - if (_dwInputPanel) _dwInputPanel->toggleViewAction()->setVisible(isVisible); - QWidget* w = _dwInputPanel->widget(); - if (w) w->show(); -// if ( isVisible ) _dwObjectBrowser->raise();//_dwPattern->raise(); -} +void HEXABLOCKGUI::test_make_elmts_transform() +{ + int size_x = 1; + int size_y = 1; + int size_z = 2; -// void HEXABLOCKGUI::raiseStacked() -// { -// // if (_dwStacked) _dwStacked->raise(); -// } + QModelIndex orig = getCurrentModel()->addVertex(0, 0, 0); + QModelIndex dirVr = getCurrentModel()->addVector(1, 1, 1); + QModelIndex grid = getCurrentModel()->makeCartesian(orig, dirVr, size_x, size_y, size_z);//, 0, 0, 0); + // orig.setScalar(2); + // file_name = os.path.join(os.environ['TMP'], 'transfo0.vtk') + // getCurrentModel()->saveVtk(file_name) + QModelIndex devant = getCurrentModel()->addVector(5, 0, 0); + QModelIndex grid2 = getCurrentModel()->makeTranslation(grid, devant); -DocumentGraphicView* HEXABLOCKGUI::newGraphicView() -{ - MESSAGE("HEXABLOCKGUI::newGraphicView"); - DocumentGraphicView *newGView = NULL; - SUIT_ViewWindow *suitVW = NULL; + // file_name = os.path.join(os.environ['TMP'], 'transfo_translation.vtk') + // getCurrentModel()->saveVtk(file_name) - //For the first time initialize occ view manager - if (_documentView.size() == 0) - { - occViewManager = getApp()->getViewManager( OCCViewer_Viewer::Type(), true ); - occViewManager->getActiveView()->setClosable(false); - currentOccView = dynamic_cast(occViewManager->getActiveView()); - } - - vtkViewManager = getApp()->getViewManager( SVTK_Viewer::Type(), true ); - if (_documentView.size() == 0) - { - suitVW = vtkViewManager->getActiveView(); - suitVW->setClosable(false); - } - else - suitVW = vtkViewManager->createViewWindow(); - - currentVtkView = dynamic_cast(suitVW); - currentVtkView->installEventFilter(this); - newGView = new DocumentGraphicView(getApp(), suitVW, application()->desktop()); - _documentView[suitVW] = newGView; - return newGView; -} - -//DocumentGraphicView* HEXABLOCKGUI::newGraphicView() -//{ -// MESSAGE("HEXABLOCKGUI::newGraphicView"); -// DocumentGraphicView *newGView = 0; -// SUIT_ViewWindow *suitVW = NULL; -// -// SUIT_ViewManager *vtkViewManager = getApp()->getViewManager(SVTK_Viewer::Type(), true); -// MESSAGE("suitVM->getViewsCount() => " << suitVM->getViewsCount() ); -// suitVW = suitVM->getActiveView(); -// if ( _documentView.count(suitVW) > 0) -// suitVW = suitVM->createViewWindow(); -// -// if ( suitVW ){ -//// suitVW->setClosable(false); -// suitVW->setClosable(true); -// newGView = new DocumentGraphicView(getApp(), suitVW, application()->desktop()); -// _documentView[suitVW] = newGView; -// } -// -// return newGView; -//} + QModelIndex grid4 = getCurrentModel()->makeRotation(grid2, orig, dirVr, 45); -void HEXABLOCKGUI::testDocument() -{ - //CS_TEST - // ---------- -// QStandardItem *parentItem = _currentModel->invisibleRootItem(); -// QStandardItem *myItem = new QStandardItem("MyItem"); -// parentItem->appendRow(myItem); -// // ---------- -// QModelIndex v0 = _currentModel->addVertex(0., 0., 0.); -// QModelIndex v1 = _currentModel->addVertex(5., 0., 0.); -// QModelIndex v2 = _currentModel->addVertex(5., 5., 0.); -// QModelIndex v3 = _currentModel->addVertex(0., 5., 0.); -// QModelIndex v4 = _currentModel->addVertex(0., 0., 5.); -// QModelIndex v5 = _currentModel->addVertex(5., 0., 5.); -// QModelIndex v6 = _currentModel->addVertex(5., 5., 5.); -// QModelIndex v7 = _currentModel->addVertex(0., 5., 5.); -// // -// // -// QModelIndex q0 = _currentModel->addQuadVertices( v0, v1, v2, v3 ); -// QModelIndex q1 = _currentModel->addQuadVertices( v4, v5, v6, v7 ); -// QModelIndex q2 = _currentModel->addQuadVertices( v0, v3, v7, v4 ); -// QModelIndex q3 = _currentModel->addQuadVertices( v1, v2, v6, v5 ); -// QModelIndex q4 = _currentModel->addQuadVertices( v0, v1, v5, v4 ); -// QModelIndex q5 = _currentModel->addQuadVertices( v3, v2, v6, v7 ); -// -// QModelIndex h0 = _currentModel->addHexaQuad( q0, q1, q2, q3, q4, q5 ); -// QModelIndex vx = _currentModel->addVector(1., 0., 0.); -// QModelIndex vy = _currentModel->addVector(0., 1., 0.); -// QModelIndex vz = _currentModel->addVector(0., 0., 1.); -// + // file_name = os.path.join(os.environ['TMP'], 'transfo_rotation.vtk'); + // getCurrentModel()->saveVtk(file_name); + // print "...test make elements by transforming elements OK" +} -// // QModelIndex orig1 = _currentModel->addVertex (0, 0,0); -// // QModelIndex orig2 = _currentModel->addVertex (50,0,0); -// // QModelIndex vz = _currentModel->addVector (0,0,1); -// // QModelIndex vx = _currentModel->addVector (1,0,0); -// // -// // int nr = 4; -// // int nri = 3; -// // int nre = nr; -// // int na = 9; -// // int nl = 5; -// // -// // QModelIndex cyl = _currentModel->addCylinder (orig1, vz, nr, nl); -// // QModelIndex pipe = _currentModel->addPipe (orig2, vz, nri, nre, nl); -// // -// // _currentModel->makeCylinder (cyl, vx, nr, na, nl); -// // _currentModel->makePipe(pipe, vx, nr, na, nl); +void HEXABLOCKGUI::test() +{ + DEBTRACE("HEXABLOCKGUI::test"); + VtkDocumentGraphicView* currentDGView = getCurrentVtkGraphicView(); + if (currentDGView == NULL) return; + currentDGView->update(); + +} +void HEXABLOCKGUI::test_association() +{ + DEBTRACE("HEXABLOCKGUI::test_association"); + newDocument(); + + QModelIndex v0, v1, v2, v3, e0, e1, q0; + + DocumentModel::GeomObj v0Assoc, v1Assoc, v2Assoc, v3Assoc; + DocumentModel::GeomObj e0AssocA, e1AssocA, e1AssocB, e1AssocC; + DocumentModel::GeomObj q0AssocA, q0AssocB; + + DocumentModel::GeomObj v0Assoc_test, v1Assoc_test, v2Assoc_test, v3Assoc_test; + QList e1Assocs_test; + DocumentModel::GeomObj q0Assoc_test; + + v0 = getCurrentModel()->addVertex(0, 0, 0); + v1 = getCurrentModel()->addVertex(1, 0, 0); + v2 = getCurrentModel()->addVertex(1, 1, 0); + v3 = getCurrentModel()->addVertex(0, 1, 0); + e0 = getCurrentModel()->addEdgeVertices(v0, v1); + e1 = getCurrentModel()->addEdgeVertices(v1, v2); + q0 = getCurrentModel()->addQuadVertices( v0, v1, v2, v3 ); + + + // >>> face3.GetEntry()'0:1:4' + // >>> e1.GetEntry()'0:1:8' + // >>> e2.GetEntry()'0:1:9' + // >>> e3.GetEntry()'0:1:10' + // >>> e4.GetEntry()'0:1:11' + // >>> v1.GetEntry()'0:1:12' + // >>> v2.GetEntry()'0:1:13' + // >>> v3.GetEntry()'0:1:14' + // >>> v4.GetEntry()'0:1:15' + + + // v0Assoc.name = "geomV0"; + // v0Assoc.entry = "0:1:1:1:3:6";//"0:1:12"; + // v0Assoc.brep = "brepV0"; + // v1Assoc.name = "geomV1"; + // v1Assoc.entry = "0:1:1:1:3:7";//"0:1:13"; + // v1Assoc.brep = "brepV1"; + // v2Assoc.name = "geomV2"; + // v2Assoc.entry = "0:1:1:1:3:8";//"0:1:14"; + // v2Assoc.brep = "brepV2"; + // v3Assoc.name = "geomV3"; + // v3Assoc.entry = "0:1:1:1:3:9";//"0:1:15"; + // v3Assoc.brep = "brepV3"; + // + // + // + // e0AssocA.name = "geomE0a"; + // e0AssocA.entry = "0:1:1:1:3:5";//"0:1:8"; + // e0AssocA.brep = "brepE0a"; + // e0AssocA.start = 0.10; + // e0AssocA.end = 0.95; + // + // + // + // e1AssocA.name = "geomE1a"; + // e1AssocA.entry = "0:1:1:1:3:2";//"0:1:8"; + // e1AssocA.brep = "brepE1a"; + // e1AssocA.start = 0.12; + // e1AssocA.end = 0.89; + // e1AssocB.name = "geomE1b"; + // e1AssocB.entry = "0:1:1:1:3:3";//"0:1:9"; + // e1AssocB.brep = "brepE1b"; + // e1AssocB.start = 0.20; + // e1AssocB.end = 0.80; + // e1AssocC.name = "geomE1c"; + // e1AssocC.entry = "0:1:1:1:3:4";//"0:1:10"; + // e1AssocC.brep = "brepE1c"; + // e1AssocC.start = 0.16; + // e1AssocC.end = 0.96; + // + // q0AssocA.name = "geomQuad"; + // q0AssocA.entry = "0:1:1:1:3"; + // q0AssocA.brep = "brepq0"; + // + // q0AssocB.name = "geomQuad"; + // q0AssocB.entry = "0:1:1:1:4"; + // q0AssocB.brep = "brepq0"; + // + // getCurrentModel()->addAssociation( v0, v0Assoc ); + // getCurrentModel()->addAssociation( v1, v1Assoc ); + // getCurrentModel()->addAssociation( v2, v2Assoc ); + // getCurrentModel()->addAssociation( v3, v3Assoc ); + // + // + // getCurrentModel()->addAssociation( e0, e0AssocA ); + // + // getCurrentModel()->addAssociation( e1, e1AssocA ); + // getCurrentModel()->addAssociation( e1, e1AssocB ); + // getCurrentModel()->addAssociation( e1, e1AssocC ); + // + // getCurrentModel()->addAssociation( q0, q0AssocA ); + // getCurrentModel()->addAssociation( q0, q0AssocB ); + + + + + + // v0Assoc_test = getCurrentModel()->getAssociations( v0 )[0]; + // v1Assoc_test = getCurrentModel()->getAssociations( v1 )[0]; + // v2Assoc_test = getCurrentModel()->getAssociations( v2 )[0]; + // v3Assoc_test = getCurrentModel()->getAssociations( v3 )[0]; + // ASSERT( v0Assoc.name == v0Assoc_test.name ); + // ASSERT( v1Assoc.name == v1Assoc_test.name ); + // ASSERT( v2Assoc.name == v2Assoc_test.name ); + // ASSERT( v3Assoc.name == v3Assoc_test.name ); + // ASSERT( v0Assoc.entry == v0Assoc_test.entry ); + // ASSERT( v1Assoc.entry == v1Assoc_test.entry ); + // ASSERT( v2Assoc.entry == v2Assoc_test.entry ); + // ASSERT( v3Assoc.entry == v3Assoc_test.entry ); + // + // + // e1Assocs_test = getCurrentModel()->getAssociations( e1 ); + // ASSERT( e1Assocs_test[0].name == e1AssocA.name ); + // ASSERT( e1Assocs_test[1].name == e1AssocB.name ); + // ASSERT( e1Assocs_test[2].name == e1AssocC.name ); + // ASSERT( e1Assocs_test[0].entry == e1AssocA.entry ); + // ASSERT( e1Assocs_test[1].entry == e1AssocB.entry ); + // ASSERT( e1Assocs_test[2].entry == e1AssocC.entry ); + // ASSERT( e1Assocs_test[0].start == e1AssocA.start ); + // ASSERT( e1Assocs_test[1].start == e1AssocB.start ); + // ASSERT( e1Assocs_test[2].start == e1AssocC.start ); + // ASSERT( e1Assocs_test[0].end == e1AssocA.end ); + // ASSERT( e1Assocs_test[1].end == e1AssocB.end ); + // ASSERT( e1Assocs_test[2].end == e1AssocC.end ); + // + // q0Assoc_test = getCurrentModel()->getAssociations( q0 )[0]; + // ASSERT( q0Assoc_test.name == q0Assoc.name ); + // ASSERT( q0Assoc_test.entry == q0Assoc.entry ); + + + DEBTRACE("HEXABLOCKGUI::test_association fin"); +} + +//clear all used dialogs by the current model +void HEXABLOCKGUI::clearDialogs() +{ + std::set::const_iterator debut (currentModelDialogs.begin()), + fin (currentModelDialogs.end()); + for(;debut!=fin;++debut) (*debut)->clear(); + + if (_vertexAssocDiag != NULL) _vertexAssocDiag->clear(); //not a subclass of HexaBaseDialog + + currentModelDialogs.clear(); //empty the used dialogs list +} + +HexaBaseDialog* HEXABLOCKGUI::getDlgBox(VtkDocumentGraphicView* dgview) +{ + if (!gViewDlgBox.contains(dgview)) return NULL; + return gViewDlgBox[dgview]; +} + +void HEXABLOCKGUI::switchOnGraphicView(VtkDocumentGraphicView* dgview) +{ + if (dgview == NULL) return; + + switchOffGraphicView(dgview, false); //to avoid double connect + + //connect signals + connect( selectionMgr(), SIGNAL( currentSelectionChanged() ), + dgview->getPatternDataSelectionModel(), SLOT( salomeSelectionChanged() ), Qt::UniqueConnection ); + connect( dgview->getPatternDataSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + connect( dgview->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + connect( dgview->getPatternGeomSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + connect( dgview->getGroupsSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + connect( dgview->getMeshSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + + if (currentDocGView != NULL) + { + if (currentDocGView->getViewWindow() != NULL) + dgview->setViewWindow(currentDocGView->getViewWindow()); + else + { + dgview->setViewWindow(graphicViewsHandler->createVtkWindow()); + dgview->getViewWindow()->installEventFilter(this); + } + } + dgview->getViewWindow()->setFocus(); -// newMesh( "toto", 3, "FactoryServer"); -// newMesh + showAllMenus(); + //_showDialogBox(getDlgBox(dgview)); } -void HEXABLOCKGUI::test_make_cart_grid() +void HEXABLOCKGUI::switchOffGraphicView(VtkDocumentGraphicView* dgview, bool saveCurrentDlg) { -QModelIndex orig1 = _currentModel->addVertex( 0, 0, 0); -QModelIndex orig2 = _currentModel->addVertex( 10, 0, 0); -QModelIndex orig3 = _currentModel->addVertex( 0, 10, 0); -QModelIndex orig4 = _currentModel->addVertex( 10, 10, 0); -QModelIndex orig5 = _currentModel->addVertex( 0, 20, 0); -QModelIndex orig6 = _currentModel->addVertex( 10, 20, 0); + if (dgview == NULL) return; -QModelIndex vz = _currentModel->addVector(0, 0, 1); -QModelIndex vx = _currentModel->addVector(1, 0, 0); + //disconnect signals + disconnect( selectionMgr(), SIGNAL( currentSelectionChanged() ), + dgview->getPatternDataSelectionModel(), SLOT( salomeSelectionChanged() ) ); + disconnect( dgview->getPatternDataSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + disconnect( dgview->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + disconnect( dgview->getPatternGeomSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + disconnect( dgview->getGroupsSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + disconnect( dgview->getMeshSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); -//int dr = 1; -//int dl = 1; -//int nr = 2; -//int nl = 3; + if (saveCurrentDlg) + gViewDlgBox[dgview] = currentDialog; -// QModelIndex c1 = _currentModel->makeCylindrical(orig1, vx, vz, dr, 360, dl, nr, 4, nl, true); -// QModelIndex c2 = _currentModel->makeCylindrical(orig2, vx, vz, dr, 360, dl, nr, 8, nl, true); -// QModelIndex c3 = _currentModel->makeCylindrical(orig3, vx, vz, dr, 270, dl, nr, 8, nl, true); -// QModelIndex c4 = _currentModel->makeCylindrical(orig4, vx, vz, dr, 270, dl, nr, 7, nl, true); -// QModelIndex c5 = _currentModel->makeCylindrical(orig5, vx, vz, dr, 360, dl, nr, 5, nl, true); -// QModelIndex c6 = _currentModel->makeCylindrical(orig6, vx, vz, dr, 360, dl, nr, 6, nl, true); + //close opened dialog + if (currentDialog != NULL) currentDialog->close(); + if (_treeViewDelegate != NULL) _treeViewDelegate->closeDialog(); -} + initialMenus(); +} -void HEXABLOCKGUI::test_make_elmts_transform() +void HEXABLOCKGUI::switchModel(VtkDocumentGraphicView* dgview) { + DEBTRACE("HEXABLOCKGUI::switchModel " << dgview); -int size_x = 1; -int size_y = 1; -int size_z = 2; + if (dgview == NULL /*|| dgview == currentDocGView*/ ) //Need to switch? + { + MESSAGE("HEXABLOCKGUI::switchModel : no need to switch!"); + return; + } -QModelIndex orig = _currentModel->addVertex(0, 0, 0); -QModelIndex dirVr = _currentModel->addVector(1, 1, 1); + //switch off the current document graphic view (disconnect signals...) + if (currentDocGView != NULL) + { + //Hide current actor + hideActor(); + switchOffGraphicView(currentDocGView); + } -QModelIndex grid = _currentModel->makeCartesian(orig, dirVr, size_x, size_y, size_z);//, 0, 0, 0); -// orig.setScalar(2); + //clear the dialogs used by the current model so they can be used by the new model + if (currentDocGView != dgview) clearDialogs(); -// file_name = os.path.join(os.environ['TMP'], 'transfo0.vtk') -// _currentModel->saveVtk(file_name) -QModelIndex devant = _currentModel->addVector(5, 0, 0); -QModelIndex grid2 = _currentModel->makeTranslation(grid, devant); + _patternDataTreeView->setModel(dgview->getPatternDataModel()); + _patternBuilderTreeView->setModel(dgview->getPatternBuilderModel()); + _patternGeomTreeView->setModel(dgview->getPatternGeomModel()); + _groupsTreeView->setModel(dgview->getGroupsModel()); + _meshTreeView->setModel(dgview->getMeshModel()); -// file_name = os.path.join(os.environ['TMP'], 'transfo_translation.vtk') -// _currentModel->saveVtk(file_name) + _patternDataTreeView->setSelectionModel(dgview->getPatternDataSelectionModel()); + _patternDataTreeView->setEditTriggers(/*QAbstractItemView::EditKeyPressed*/QAbstractItemView::AllEditTriggers /*QAbstractItemView::NoEditTriggers*/); -QModelIndex grid4 = _currentModel->makeRotation(grid2, orig, dirVr, 45); + _patternBuilderTreeView->setSelectionModel(dgview->getPatternBuilderSelectionModel()); + _patternBuilderTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); + _patternGeomTreeView->setSelectionModel(dgview->getPatternGeomSelectionModel()); + _patternGeomTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers); -// file_name = os.path.join(os.environ['TMP'], 'transfo_rotation.vtk'); -// _currentModel->saveVtk(file_name); + _groupsTreeView->setSelectionModel(dgview->getGroupsSelectionModel()); + _groupsTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); + _meshTreeView->setSelectionModel(dgview->getMeshSelectionModel()); + _meshTreeView->setEditTriggers(QAbstractItemView::AllEditTriggers); -// print "...test make elements by transforming elements OK" + //switch on this graphic view (connect signals...) + switchOnGraphicView(dgview); + currentDocGView = dgview; + if (_vertexAssocDiag != NULL) + { + _vertexAssocDiag->setDocumentModel(getCurrentModel()); + _vertexAssocDiag->setPatternDataSelectionModel(currentDocGView->getPatternDataSelectionModel()); + } + currentDocGView->getViewWindow()->setFocus(); + showOnlyActor(); + currentDocGView->getDocumentModel()->refresh(); + showAllMenus(); } +// void detruitDialog() { + // currentDialog = NULL; -void HEXABLOCKGUI::test() -{ - DEBTRACE("HEXABLOCKGUI::test"); - _currentGraphicView->update(); + // if (_sdjfgjh) delete _sdjfgjh; + + +// } + + +DocumentModel* HEXABLOCKGUI::getCurrentModel() +{ + if (currentDocGView == NULL) return NULL; + return currentDocGView->getDocumentModel(); } -void HEXABLOCKGUI::test_association() + +HEXABLOCKGUI::ViewType HEXABLOCKGUI::getActiveViewType() { - DEBTRACE("HEXABLOCKGUI::test_association"); - newDocument(); - - QModelIndex v0, v1, v2, v3, e0, e1, q0; - - DocumentModel::GeomObj v0Assoc, v1Assoc, v2Assoc, v3Assoc; - DocumentModel::GeomObj e0AssocA, e1AssocA, e1AssocB, e1AssocC; - DocumentModel::GeomObj q0AssocA, q0AssocB; - - DocumentModel::GeomObj v0Assoc_test, v1Assoc_test, v2Assoc_test, v3Assoc_test; - QList e1Assocs_test; - DocumentModel::GeomObj q0Assoc_test; - - v0 = _currentModel->addVertex(0, 0, 0); - v1 = _currentModel->addVertex(1, 0, 0); - v2 = _currentModel->addVertex(1, 1, 0); - v3 = _currentModel->addVertex(0, 1, 0); - e0 = _currentModel->addEdgeVertices(v0, v1); - e1 = _currentModel->addEdgeVertices(v1, v2); - q0 = _currentModel->addQuadVertices( v0, v1, v2, v3 ); - - -// >>> face3.GetEntry()'0:1:4' -// >>> e1.GetEntry()'0:1:8' -// >>> e2.GetEntry()'0:1:9' -// >>> e3.GetEntry()'0:1:10' -// >>> e4.GetEntry()'0:1:11' -// >>> v1.GetEntry()'0:1:12' -// >>> v2.GetEntry()'0:1:13' -// >>> v3.GetEntry()'0:1:14' -// >>> v4.GetEntry()'0:1:15' - - -// v0Assoc.name = "geomV0"; -// v0Assoc.entry = "0:1:1:1:3:6";//"0:1:12"; -// v0Assoc.brep = "brepV0"; -// v1Assoc.name = "geomV1"; -// v1Assoc.entry = "0:1:1:1:3:7";//"0:1:13"; -// v1Assoc.brep = "brepV1"; -// v2Assoc.name = "geomV2"; -// v2Assoc.entry = "0:1:1:1:3:8";//"0:1:14"; -// v2Assoc.brep = "brepV2"; -// v3Assoc.name = "geomV3"; -// v3Assoc.entry = "0:1:1:1:3:9";//"0:1:15"; -// v3Assoc.brep = "brepV3"; -// -// -// -// e0AssocA.name = "geomE0a"; -// e0AssocA.entry = "0:1:1:1:3:5";//"0:1:8"; -// e0AssocA.brep = "brepE0a"; -// e0AssocA.start = 0.10; -// e0AssocA.end = 0.95; -// -// -// -// e1AssocA.name = "geomE1a"; -// e1AssocA.entry = "0:1:1:1:3:2";//"0:1:8"; -// e1AssocA.brep = "brepE1a"; -// e1AssocA.start = 0.12; -// e1AssocA.end = 0.89; -// e1AssocB.name = "geomE1b"; -// e1AssocB.entry = "0:1:1:1:3:3";//"0:1:9"; -// e1AssocB.brep = "brepE1b"; -// e1AssocB.start = 0.20; -// e1AssocB.end = 0.80; -// e1AssocC.name = "geomE1c"; -// e1AssocC.entry = "0:1:1:1:3:4";//"0:1:10"; -// e1AssocC.brep = "brepE1c"; -// e1AssocC.start = 0.16; -// e1AssocC.end = 0.96; -// -// q0AssocA.name = "geomQuad"; -// q0AssocA.entry = "0:1:1:1:3"; -// q0AssocA.brep = "brepq0"; -// -// q0AssocB.name = "geomQuad"; -// q0AssocB.entry = "0:1:1:1:4"; -// q0AssocB.brep = "brepq0"; -// -// _currentModel->addAssociation( v0, v0Assoc ); -// _currentModel->addAssociation( v1, v1Assoc ); -// _currentModel->addAssociation( v2, v2Assoc ); -// _currentModel->addAssociation( v3, v3Assoc ); -// -// -// _currentModel->addAssociation( e0, e0AssocA ); -// -// _currentModel->addAssociation( e1, e1AssocA ); -// _currentModel->addAssociation( e1, e1AssocB ); -// _currentModel->addAssociation( e1, e1AssocC ); -// -// _currentModel->addAssociation( q0, q0AssocA ); -// _currentModel->addAssociation( q0, q0AssocB ); + SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); + if (anApp == NULL) return UNKNOWN; + SUIT_ViewManager* activeVm = anApp->activeViewManager(); + if (activeVm == NULL) return UNKNOWN; + QString vmType = activeVm->getType(); + if ( (vmType == SVTK_Viewer::Type()) || (vmType == VTKViewer_Viewer::Type()) ) + return VTK; + else if ( vmType == OCCViewer_Viewer::Type() ) + return OCC; + return UNKNOWN; +} +pair HEXABLOCKGUI::newHexaDocument() +{ + // Create Document from HEXABLOCK ENGINE + // WARNING : IN HEXABLOCK component, GUI and ENGINE share the same process + HEXABLOCK_ORB::Document_ptr docIn = _hexaEngine->addDocument("default"); + HEXA_NS::Document* doc = NULL; + QString docEntry; -// v0Assoc_test = _currentModel->getAssociations( v0 )[0]; -// v1Assoc_test = _currentModel->getAssociations( v1 )[0]; -// v2Assoc_test = _currentModel->getAssociations( v2 )[0]; -// v3Assoc_test = _currentModel->getAssociations( v3 )[0]; -// ASSERT( v0Assoc.name == v0Assoc_test.name ); -// ASSERT( v1Assoc.name == v1Assoc_test.name ); -// ASSERT( v2Assoc.name == v2Assoc_test.name ); -// ASSERT( v3Assoc.name == v3Assoc_test.name ); -// ASSERT( v0Assoc.entry == v0Assoc_test.entry ); -// ASSERT( v1Assoc.entry == v1Assoc_test.entry ); -// ASSERT( v2Assoc.entry == v2Assoc_test.entry ); -// ASSERT( v3Assoc.entry == v3Assoc_test.entry ); -// -// -// e1Assocs_test = _currentModel->getAssociations( e1 ); -// ASSERT( e1Assocs_test[0].name == e1AssocA.name ); -// ASSERT( e1Assocs_test[1].name == e1AssocB.name ); -// ASSERT( e1Assocs_test[2].name == e1AssocC.name ); -// ASSERT( e1Assocs_test[0].entry == e1AssocA.entry ); -// ASSERT( e1Assocs_test[1].entry == e1AssocB.entry ); -// ASSERT( e1Assocs_test[2].entry == e1AssocC.entry ); -// ASSERT( e1Assocs_test[0].start == e1AssocA.start ); -// ASSERT( e1Assocs_test[1].start == e1AssocB.start ); -// ASSERT( e1Assocs_test[2].start == e1AssocC.start ); -// ASSERT( e1Assocs_test[0].end == e1AssocA.end ); -// ASSERT( e1Assocs_test[1].end == e1AssocB.end ); -// ASSERT( e1Assocs_test[2].end == e1AssocC.end ); -// -// q0Assoc_test = _currentModel->getAssociations( q0 )[0]; -// ASSERT( q0Assoc_test.name == q0Assoc.name ); -// ASSERT( q0Assoc_test.entry == q0Assoc.entry ); + // looking doc impl ( c++ ) + Document_impl* dServant = DownCast( docIn ); + ASSERT( dServant ); + if ( dServant) doc = dServant->GetImpl(); + // looking for docEntry + if ( !CORBA::is_nil(docIn) ){ + CORBA::String_var anIOR = SalomeApp_Application::orb()->object_to_string( docIn ); + QString docIOR = anIOR.in(); + SalomeApp_Study* study = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); + if ( !docIOR.isEmpty() ) { + _PTR(SObject) SO( study->studyDS()->FindObjectIOR( docIOR.toLatin1().constData() ) ); + if ( SO ) + docEntry = SO->GetID().c_str(); + } + } + DEBTRACE("HEXABLOCKGUI::newHexaDocument docEntry "<desktop(); - QWidget *central = aParent->centralWidget(); - if (central) - central->setFocus(); - else - DEBTRACE("No Central Widget"); - - // BasicGUI_PointDlg* aDlg = new BasicGUI_PointDlg( NULL, aParent ); - // aDlg->show(); - - // Create Document from HEXABLOCK ENGINE - // WARNING : IN HEXABLOCK component, GUI and ENGINE share the same process - HEXABLOCK_ORB::Document_ptr docIn = _hexaEngine->addDocument("default"); - - HEXA_NS::Document* doc = NULL; - QString docEntry; - - // looking doc impl ( c++ ) - Document_impl* dServant = DownCast( docIn ); - ASSERT( dServant ); - if ( dServant) doc = dServant->GetImpl(); - - // doc->reorderFaces(); //CS_TEST - - // looking for docEntry - if ( !CORBA::is_nil(docIn) ){ - CORBA::String_var anIOR = SalomeApp_Application::orb()->object_to_string( docIn ); - QString docIOR = anIOR.in(); - SalomeApp_Study* study = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - if ( !docIOR.isEmpty() ) { - _PTR(SObject) SO( study->studyDS()->FindObjectIOR( docIOR.toLatin1().constData() ) ); - if ( SO ) - docEntry = SO->GetID().c_str(); - } - } - - DEBTRACE("HEXABLOCKGUI::newDocument docEntry "<setHeaderData(0, Qt::Horizontal, tr("HELLOH0")); - // _currentModel->setHeaderData(1, Qt::Horizontal, tr("HELLOH1")); - // _currentModel->setHeaderData(0, Qt::Vertical, tr("HELLOV0")); - _patternDataModel = new PatternDataModel(this); - _patternBuilderModel = new PatternBuilderModel(this); - // _associationsModel = new AssociationsModel(this); - _groupsModel = new GroupsModel(this); - _meshModel = new MeshModel(this); - - _patternDataModel->setSourceModel(_currentModel); - _patternBuilderModel->setSourceModel(_currentModel); - // _associationsModel->setSourceModel(_currentModel); - _groupsModel->setSourceModel(_currentModel); - _meshModel->setSourceModel(_currentModel); - - // --- new Graphic view ( SVTK ) - _currentGraphicView = newGraphicView(); - suitVW = _currentGraphicView->get_SUIT_ViewWindow(); - - // --- setting model - _currentGraphicView->setModel(_currentModel); - // _currentGraphicView->setModel(_patternDataModel); - // connect( _currentModel, SIGNAL(patternDataChanged() ), _currentGraphicView, SLOT ( onPatternDatachanged() ) ); - _patternDataTreeView->setModel(_patternDataModel);//_currentModel; - // _patternDataTreeView->setModel(_currentModel);//; - _patternBuilderTreeView->setModel(_patternBuilderModel);//_currentModel; - // _associationTreeView->setModel(_associationsModel); - _groupsTreeView->setModel(_groupsModel); - _meshTreeView->setModel(_meshModel); - - - // if ( _patternDataSelectionModel ) delete _patternDataSelectionModel; - // if ( _patternBuilderSelectionModel ) delete _patternBuilderSelectionModel; - // if ( _groupsSelectionModel ) delete _groupsSelectionModel; - // if ( _meshSelectionModel ) delete _meshSelectionModel; - - // --- setting selection model - _patternDataSelectionModel = new PatternDataSelectionModel(_patternDataModel); - _patternBuilderSelectionModel = new PatternBuilderSelectionModel( _patternBuilderModel, _patternDataSelectionModel ); - _groupsSelectionModel = new GroupsSelectionModel(_groupsModel); - _meshSelectionModel = new MeshSelectionModel(_meshModel); - - _patternDataSelectionModel->setSalomeSelectionMgr( selectionMgr() ); - // _meshSelectionModel->setSalomeSelectionMgr( selectionMgr() ); - - _currentGraphicView->setSelectionModel(_patternDataSelectionModel); - _patternDataTreeView->setSelectionModel(_patternDataSelectionModel); - _patternDataTreeView->setSelectionMode(QAbstractItemView::SingleSelection); //QAbstractItemView::MultiSelection //CS_TEST - _patternBuilderTreeView->setSelectionModel(_patternBuilderSelectionModel); - _groupsTreeView->setSelectionModel(_groupsSelectionModel); - _meshTreeView->setSelectionModel(_meshSelectionModel); - _meshTreeView->setSelectionMode(QAbstractItemView::SingleSelection); - - _treeViewDelegate->setDocumentModel( _currentModel ); - _treeViewDelegate->setPatternDataSelectionModel( _patternDataSelectionModel ); - _treeViewDelegate->setPatternBuilderSelectionModel( _patternBuilderSelectionModel ); - _treeViewDelegate->setGroupsSelectionModel( _groupsSelectionModel/*_groupsTreeView->selectionModel()*/ ); - _treeViewDelegate->setMeshSelectionModel( _meshSelectionModel/*_meshTreeView->selectionModel()*/ ); - - - connect( _patternDataSelectionModel, SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - connect( _patternBuilderSelectionModel, SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - connect( _groupsSelectionModel, SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - connect( _meshSelectionModel, SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - - - // salome view/object browser/model management - _documentModels[ suitVW ] = _currentModel; - - // _salomeViews[ _currentModel ] = suitVW; - // std::map _salomeViews; - - _salomeViewWindows[docEntry] = suitVW; - currentVtkView = dynamic_cast( _currentGraphicView->get_SUIT_ViewWindow() ); - currentVtkView->raise(); - - // _currentGraphicView->setWindowTitle( _currentModel->getName() ); - // currentVtkView->setWindowTitle( _currentModel->getName() ); - // showDockWidgets(true); - // showPatternMenus - // _dwPattern->setVisible(true); - // _dwPattern->toggleViewAction()->setVisible(true); - _dwPattern->raise(); - // testDocument(); - // test_make_cart_grid(); - // test_make_elmts_transform(); - showAllMenus(); - getApp()->updateObjectBrowser(); - - graphicViewIsEmpty[suitVW] = true; -} + DEBTRACE("HEXABLOCKGUI::newDocument"); +// MESSAGE("===== NEW DOCUMENT: je commence ! " << jepeux); -void HEXABLOCKGUI::slot_modelChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) -{ - //std::cout << "HHHHHHHHHHHHHHHHHH Model changed." << std::endl; - //std::cout << "HHHHHHHHHHHHHHHHHH slot_modelChanged topLeft -> " << topLeft.data().toString().toStdString()<" << bottomRight.data().toString().toStdString()<desktop(); + QWidget *central = aParent->centralWidget(); + if (central) + central->setFocus(); + else + DEBTRACE("No Central Widget"); + + //Init OCC + if (currentOccGView == NULL) + { + currentOccGView = new OccGraphicView(graphicViewsHandler->createOccWindow(), + application()->desktop()); + currentOccGView->getViewWindow()->installEventFilter(this); + } + else if (currentOccGView->getViewWindow() == NULL) + { + currentOccGView->setViewWindow(graphicViewsHandler->createOccWindow()); + currentOccGView->getViewWindow()->installEventFilter(this); + } - _patternDataTreeView->openPersistentEditor( topLeft ); + //NEW DOCUMENT + // Create Document from HEXABLOCK ENGINE + pair docEntry_Doc ( newHexaDocument() ); + + VtkDocumentGraphicView* newGraphicView; + //One document at a time + if (currentDocGView != NULL) + { + if (currentDocGView->getViewWindow() == NULL) + { + currentDocGView->setViewWindow(graphicViewsHandler->createVtkWindow()); + currentDocGView->getViewWindow()->installEventFilter(this); + } + + // Create a new document with the current window + newGraphicView = graphicViewsHandler->createDocumentGraphicView( + new DocumentModel( docEntry_Doc.second, + docEntry_Doc.first, this ), + currentDocGView->getViewWindow(), + application()->desktop() ); + } + else + { + // Create the new Document Graphic View with a new window + newGraphicView = graphicViewsHandler->createDocumentGraphicView( + new DocumentModel( docEntry_Doc.second, + docEntry_Doc.first, this ), + graphicViewsHandler->createVtkWindow(), + application()->desktop() ); + newGraphicView->getViewWindow()->installEventFilter(this); + } + + if (newGraphicView == NULL) + //We couldn't create a new document graphic view + //we'd better show a dialog box info to inform the user + return; + + docs[docEntry_Doc.first] = newGraphicView; + switchModel(newGraphicView); //select the corresponding document in the browser instead + +// showAllMenus(); +// _dwPattern->raise(); + +// _PTR(Study) aStudy = (( SalomeApp_Study* )(getApp()->activeStudy()))->studyDS(); +// _PTR(SComponent) aComponent = aStudy->FindComponent("HEXABLOCK"); +// SalomeApp_DataModel::updateTree (aComponent, HEXABLOCKGUI::activeStudy()); + getApp()->updateObjectBrowser(); + showAllMenus(); +// jepeux = true; +// for (double i=0; i < 10000000000000000; ++i); + +// MESSAGE("===== NEW DOCUMENT: j'ai fini!"); -// // Make the combo boxes always displayed. -// for ( int i = 0; i < _currentModel->rowCount(); ++i ) -// { -// QModelIndex ind = _currentModel->index(i); -// _patternDataTreeView->openPersistentEditor( ind ); -// std::cout << "ind" << ind.data() << std::endl; -// } } + +//Loads the model from the xmlFile in the current graphic view void HEXABLOCKGUI::loadDocument( const QString &inFile ) { - DEBTRACE("HEXABLOCKGUI::loadDocument"); - QMainWindow *aParent = application()->desktop(); - QString selectedFile; + DEBTRACE("HEXABLOCKGUI::loadDocument"); - if ( inFile.isNull() ){ - QFileDialog dialog( aParent, tr("Open HexaBlock Document") , - QString::null, tr( "XML-Files (*.xml);;All Files (*)" ) ); - dialog.setHistory( getQuickDirList() ); - if (dialog.exec()){ - QStringList selectedFiles = dialog.selectedFiles(); - if (!selectedFiles.isEmpty()) - selectedFile = selectedFiles.first(); - } - } else - selectedFile = inFile; + createSComponent(); + QMainWindow *aParent = application()->desktop(); + QString selectedFile; + + if ( inFile.isNull() ){ + QFileDialog dialog( aParent, tr("Open HexaBlock Document") , + QString::null, tr( "XML-Files (*.xml);;All Files (*)" ) ); + dialog.setHistory( getQuickDirList() ); + + //use the last path as default + if (!(loadDocLastPath->absolutePath()).isEmpty()) + dialog.setDirectory(*loadDocLastPath); - if (! selectedFile.isEmpty()){ - if (vtkViewManager==NULL || vtkViewManager->getViewsCount()==0 || !graphicViewIsEmpty[vtkViewManager->getActiveView()]) - newDocument(); - _currentModel->load(selectedFile); - renameObject( _currentModel->documentEntry(), _currentModel->getName() ); - graphicViewIsEmpty[vtkViewManager->getActiveView()] = false; - } + if (dialog.exec()){ + QStringList selectedFiles = dialog.selectedFiles(); + if (!selectedFiles.isEmpty()) + selectedFile = selectedFiles.first(); + + //remember the selected path + *loadDocLastPath = dialog.directory(); + } + } else + selectedFile = inFile; + + if (! selectedFile.isEmpty()) + { + //we create a new document if necessary + if (currentDocGView == NULL) + //Need a new document + newDocument(); + else if (currentDocGView->getViewWindow() == NULL) //there's a document without a view + { + currentDocGView->setViewWindow(graphicViewsHandler->createVtkWindow()); + currentDocGView->getViewWindow()->installEventFilter(this); + } + + if (!currentDocGView->isEmpty()) + //we can only have one document for a graphic view + newDocument(); + + //we load the selected file in the current graphic view + currentDocGView->loadDocument(selectedFile); + DocumentModel* currentModel = getCurrentModel(); + renameObject( currentModel->documentEntry(), currentModel->getName() ); + +// _PTR(Study) aStudy = (( SalomeApp_Study* )(getApp()->activeStudy()))->studyDS(); +// _PTR(SComponent) aComponent = aStudy->FindComponent("HEXABLOCK"); +// SalomeApp_DataModel::updateTree (aComponent, HEXABLOCKGUI::activeStudy()); + getApp()->updateObjectBrowser(); + } + showOnlyActor(); } void HEXABLOCKGUI::saveDocument() { - QMainWindow *aParent = application()->desktop(); - QString anInitialPath = ""; - if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() ) - anInitialPath = QDir::currentPath(); -// QString aMeshName = anIO->getName(); - - QString aDocName = "document"; - QStringList filter; - filter.append( QObject::tr( "XML_FILES_FILTER" ) + " (*.xml)" ); - filter.append( QObject::tr( "ALL_FILES_FILTER" ) + " (*)" ); - QString aFilename = anInitialPath + QString("/") + aDocName; - aFilename = SUIT_FileDlg::getFileName( aParent, - aFilename, - filter, - tr( "Save HexaBlock Document" ), - false ); - if ( !aFilename.isEmpty() ) { - _currentModel->save( aFilename ); - } - //CS_TODO save doc + QMainWindow *aParent = application()->desktop(); +// QString anInitialPath = ""; +// if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() ) +// anInitialPath = QDir::currentPath(); + // QString aMeshName = anIO->getName(); + + + QString aDocName = "document", aFilename; + QStringList filter; + filter.append( QObject::tr( "XML_FILES_FILTER" ) + " (*.xml)" ); + filter.append( QObject::tr( "ALL_FILES_FILTER" ) + " (*)" ); + + //use the last selected directory as default path for file selection + aFilename = saveDocLastPath->absolutePath(); + if (!aFilename.isEmpty()) + aFilename += QString("/") + aDocName; + + //show the dialog for file selection + aFilename = SUIT_FileDlg::getFileName( aParent, + aFilename, + filter, + tr( "Save HexaBlock Document" ), + false ); + + //save the document in the selected file + if ( !aFilename.isEmpty() ) { + getCurrentVtkGraphicView()->saveDocument( aFilename ); + + //Remember the path for next save + QFileInfo fileInfo(aFilename); + *saveDocLastPath = fileInfo.dir(); + } + //CS_TODO save doc } +void HEXABLOCKGUI::slot_modelChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) +{ + //std::cout << "HHHHHHHHHHHHHHHHHH Model changed." << std::endl; + //std::cout << "HHHHHHHHHHHHHHHHHH slot_modelChanged topLeft -> " << topLeft.data().toString().toStdString()<" << bottomRight.data().toString().toStdString()<openPersistentEditor( topLeft ); + + // // Make the combo boxes always displayed. + // for ( int i = 0; i < getCurrentModel()->rowCount(); ++i ) + // { + // QModelIndex ind = getCurrentModel()->index(i); + // _patternDataTreeView->openPersistentEditor( ind ); + // std::cout << "ind" << ind.data() << std::endl; + // } +} + void HEXABLOCKGUI::_showDialogBox( HexaBaseDialog* diag ) { - MESSAGE("HEXABLOCKGUI::_showDialogBox()"); - if (vtkViewManager == NULL || vtkViewManager->getViewsCount() == 0) return; - if (!diag) return; - MESSAGE("if (!diag) return;"); - if (!_dwInputPanel) return; - MESSAGE("if (!_dwInputPanel) return;"); + if (diag == NULL || _dwInputPanel == NULL || + getCurrentVtkGraphicView() == NULL) return; + + //mark this dialog as used by the current model + currentModelDialogs.insert(diag); - currentDialog = diag; - diag->setDocumentModel(_currentModel); - diag->setPatternDataSelectionModel(_patternDataSelectionModel); - diag->setPatternBuilderSelectionModel(_patternBuilderSelectionModel); - diag->setGroupsSelectionModel(_groupsSelectionModel); - diag->setMeshSelectionModel(_meshSelectionModel); + //close the current dialog box info + if (_treeViewDelegate != NULL) + _treeViewDelegate->closeDialog(); - //close the current widget - if (_treeViewDelegate != NULL) - _treeViewDelegate->closeDialog(); + if (_dwInputPanel->widget()) + _dwInputPanel->widget()->close(); - if (_dwInputPanel->widget()) - _dwInputPanel->widget()->close(); + //Temporary for debugging EdgeAssoc Faked InfoDialog + if (diag == _edgeAssocDiag) + diag->debugEdgeAssoc = true; + else + diag->debugEdgeAssoc = false; - //Temporary for debugging EdgeAssoc Faked InfoDialog - if (diag == _edgeAssocDiag) - diag->debugEdgeAssoc = true; - else - diag->debugEdgeAssoc = false; + if (diag == _quadAssocDiag || diag == _edgeAssocDiag || diag == _addShapeDiag) + assocInProgress = true; + else + assocInProgress = false; - if (diag == _quadAssocDiag || diag == _edgeAssocDiag) - assocInProgress = true; - else - assocInProgress = false; + //show the dialog box in the dockwidget + diag->resetSizeAndShow(_dwInputPanel); - //show the dialog box in the dockwidget - diag->resetSizeAndShow(_dwInputPanel); - diag->setFocus(); + //clear the current selections + if (HEXABLOCKGUI::selectionMgr() != NULL) + HEXABLOCKGUI::selectionMgr()->clearSelected(); + + currentDialog = diag; + diag->setFocus(); } void HEXABLOCKGUI::addVertex() { - if ( !_vertexDiag ){ - _vertexDiag = new VertexDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _vertexDiag ); + if ( !_vertexDiag ){ + _vertexDiag = new VertexDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _vertexDiag ); + + //set default name + HEXA_NS::Document* doc = getCurrentModel() ? getCurrentModel()->getHexaDocument() : NULL; + if (_vertexDiag != NULL && doc != NULL) + _vertexDiag->name_le->setText(doc->getNextName(HEXA_NS::EL_VERTEX).c_str()); } void HEXABLOCKGUI::addEdge() { - if ( !_edgeDiag ){ - _edgeDiag = new EdgeDialog( _dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _edgeDiag ); + if ( !_edgeDiag ){ + _edgeDiag = new EdgeDialog( _dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _edgeDiag ); + + //set default name + HEXA_NS::Document* doc = getCurrentModel() ? getCurrentModel()->getHexaDocument() : NULL; + if (_edgeDiag != NULL && doc != NULL) + _edgeDiag->name_le->setText(doc->getNextName(HEXA_NS::EL_EDGE).c_str()); } void HEXABLOCKGUI::addQuad() { - if ( !_quadDiag ){ - _quadDiag = new QuadDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _quadDiag ); + if ( !_quadDiag ){ + _quadDiag = new QuadDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + + } + _showDialogBox( _quadDiag ); + + //set default name + HEXA_NS::Document* doc = getCurrentModel() ? getCurrentModel()->getHexaDocument() : NULL; + if (_quadDiag != NULL && doc != NULL) + _quadDiag->name_le->setText(doc->getNextName(HEXA_NS::EL_QUAD).c_str()); } void HEXABLOCKGUI::addHexa() { - if ( !_hexaDiag ){ - _hexaDiag = new HexaDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _hexaDiag ); + if ( !_hexaDiag ){ + _hexaDiag = new HexaDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _hexaDiag ); + + //set default name + HEXA_NS::Document* doc = getCurrentModel() ? getCurrentModel()->getHexaDocument() : NULL; + if (_hexaDiag != NULL && doc != NULL) + _hexaDiag->name_le->setText(doc->getNextName(HEXA_NS::EL_HEXA).c_str()); } void HEXABLOCKGUI::addVector() { - if ( !_vectorDiag ){ - _vectorDiag = new VectorDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _vectorDiag ); + if ( !_vectorDiag ){ + _vectorDiag = new VectorDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _vectorDiag ); + + //set default name + HEXA_NS::Document* doc = getCurrentModel() ? getCurrentModel()->getHexaDocument() : NULL; + if (_vectorDiag != NULL && doc != NULL) + _vectorDiag->name_le->setText(doc->getNextName(HEXA_NS::EL_VECTOR).c_str()); } void HEXABLOCKGUI::addCylinder() { - if ( !_cylinderDiag ){ - _cylinderDiag = new CylinderDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _cylinderDiag ); + if ( !_cylinderDiag ){ + _cylinderDiag = new CylinderDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _cylinderDiag ); + + //set default name + HEXA_NS::Document* doc = getCurrentModel() ? getCurrentModel()->getHexaDocument() : NULL; + if (_cylinderDiag != NULL && doc != NULL) + _cylinderDiag->name_le->setText(doc->getNextName(HEXA_NS::EL_CYLINDER).c_str()); } void HEXABLOCKGUI::addPipe() { - if ( !_pipeDiag){ - _pipeDiag = new PipeDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _pipeDiag ); + if ( !_pipeDiag){ + _pipeDiag = new PipeDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _pipeDiag ); + + //set default name + HEXA_NS::Document* doc = getCurrentModel() ? getCurrentModel()->getHexaDocument() : NULL; + if (_pipeDiag != NULL && doc != NULL) + _pipeDiag->name_le->setText(doc->getNextName(HEXA_NS::EL_CYLINDER).c_str()); } void HEXABLOCKGUI::makeGrid() { - if ( !_makeGridDiag ){ - _makeGridDiag = new MakeGridDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _makeGridDiag ); + if ( !_makeGridDiag ){ + _makeGridDiag = new MakeGridDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _makeGridDiag ); } void HEXABLOCKGUI::makeCylinder() { - if ( !_makeCylinderDiag ){ - _makeCylinderDiag = new MakeCylinderDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _makeCylinderDiag ); + if ( !_makeCylinderDiag ){ + _makeCylinderDiag = new MakeCylinderDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _makeCylinderDiag ); } void HEXABLOCKGUI::makePipe() { - if ( !_makePipeDiag ){ - _makePipeDiag = new MakePipeDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _makePipeDiag ); + if ( !_makePipeDiag ){ + _makePipeDiag = new MakePipeDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _makePipeDiag ); } void HEXABLOCKGUI::makeCylinders() { - if ( !_makeCylindersDiag ){ - _makeCylindersDiag = new MakeCylindersDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _makeCylindersDiag ); + if ( !_makeCylindersDiag ){ + _makeCylindersDiag = new MakeCylindersDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _makeCylindersDiag ); } void HEXABLOCKGUI::makePipes() { - if ( !_makePipesDiag ){ - _makePipesDiag = new MakePipesDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _makePipesDiag ); + if ( !_makePipesDiag ){ + _makePipesDiag = new MakePipesDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _makePipesDiag ); } void HEXABLOCKGUI::makeHemiSphere() // NEW HEXA3 { - if ( !_makeHemiSphereDiag ){ - _makeHemiSphereDiag = new MakeHemiSphereDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _makeHemiSphereDiag ); + if ( !_makeHemiSphereDiag ){ + _makeHemiSphereDiag = new MakeHemiSphereDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _makeHemiSphereDiag ); } void HEXABLOCKGUI::removeHexa() { - if ( !_removeHexaDiag ){ - _removeHexaDiag = new RemoveHexaDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _removeHexaDiag ); + if ( !_removeHexaDiag ){ + _removeHexaDiag = new RemoveHexaDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _removeHexaDiag ); } void HEXABLOCKGUI::prismQuad() { - if ( !_prismQuadDiag ){ - _prismQuadDiag = new PrismQuadDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _prismQuadDiag ); + if ( !_prismQuadDiag ){ + _prismQuadDiag = new PrismQuadDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _prismQuadDiag ); } void HEXABLOCKGUI::joinQuad() { - if ( !_joinQuadDiag ){ - _joinQuadDiag = new JoinQuadDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _joinQuadDiag ); + if ( !_joinQuadDiag ){ + _joinQuadDiag = new JoinQuadDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _joinQuadDiag ); } void HEXABLOCKGUI::merge() { - if ( !_mergeDiag ){ - _mergeDiag = new MergeDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _mergeDiag ); + if ( !_mergeDiag ){ + _mergeDiag = new MergeDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _mergeDiag ); } void HEXABLOCKGUI::disconnectElts() { - if ( !_disconnectDiag ){ - _disconnectDiag = new DisconnectDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _disconnectDiag ); + if ( !_disconnectDiag ){ + _disconnectDiag = new DisconnectDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _disconnectDiag ); } void HEXABLOCKGUI::cutEdge() { - if ( !_cutEdgeDiag ){ - _cutEdgeDiag = new CutEdgeDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _cutEdgeDiag ); + if ( !_cutEdgeDiag ){ + _cutEdgeDiag = new CutEdgeDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _cutEdgeDiag ); } void HEXABLOCKGUI::makeTransformation() { - if ( !_makeTransformationDiag ){ - _makeTransformationDiag = new MakeTransformationDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _makeTransformationDiag ); + if ( !_makeTransformationDiag ){ + _makeTransformationDiag = new MakeTransformationDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _makeTransformationDiag ); } void HEXABLOCKGUI::makeSymmetry() { - if ( !_makeSymmetryDiag ){ - _makeSymmetryDiag = new MakeSymmetryDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _makeSymmetryDiag ); + if ( !_makeSymmetryDiag ){ + _makeSymmetryDiag = new MakeSymmetryDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _makeSymmetryDiag ); } void HEXABLOCKGUI::performTransformation() { - if ( !_performTransformationDiag ){ - _performTransformationDiag = new PerformTransformationDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _performTransformationDiag ); + if ( !_performTransformationDiag ){ + _performTransformationDiag = new PerformTransformationDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _performTransformationDiag ); } void HEXABLOCKGUI::performSymmetry() { - if ( !_performSymmetryDiag ){ - _performSymmetryDiag = new PerformSymmetryDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _performSymmetryDiag ); + if ( !_performSymmetryDiag ){ + _performSymmetryDiag = new PerformSymmetryDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _performSymmetryDiag ); } void HEXABLOCKGUI::replaceHexa() // NEW HEXA3 { - if ( !_replaceHexaDiag ){ - _replaceHexaDiag = new ReplaceHexaDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _replaceHexaDiag ); + if ( !_replaceHexaDiag ){ + _replaceHexaDiag = new ReplaceHexaDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _replaceHexaDiag ); } void HEXABLOCKGUI::quadRevolution() // NEW HEXA3 { - if ( !_quadRevolutionDiag ){ - _quadRevolutionDiag = new QuadRevolutionDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _quadRevolutionDiag ); + if ( !_quadRevolutionDiag ){ + _quadRevolutionDiag = new QuadRevolutionDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _quadRevolutionDiag ); } @@ -2449,288 +2971,361 @@ void HEXABLOCKGUI::quadRevolution() // NEW HEXA3 void HEXABLOCKGUI::assocVertex() { - MESSAGE("HEXABLOCKGUI::assocVertex()"); - if (!_dwInputPanel) return; - QWidget* d = dynamic_cast(_dwInputPanel->parent()); + if (!_dwInputPanel) return; + QWidget* d = dynamic_cast(_dwInputPanel->parent()); - if ( !_vertexAssocDiag ){ - _vertexAssocDiag = new VertexAssocDialog( NULL, d ); - if (!_vertexAssocDiag) return; - } - _vertexAssocDiag->setDocumentModel(_currentModel); - _vertexAssocDiag->setPatternDataSelectionModel(_patternDataSelectionModel); + VtkDocumentGraphicView* currentDGView = getCurrentVtkGraphicView(); + if (currentDGView == NULL) return; - //close current widget - if (_treeViewDelegate != NULL) _treeViewDelegate->closeDialog(); - if (_dwInputPanel->widget()) _dwInputPanel->widget()->close(); + if ( !_vertexAssocDiag ){ + _vertexAssocDiag = new VertexAssocDialog( NULL, d ); + if (!_vertexAssocDiag) return; + } + _vertexAssocDiag->setDocumentModel(getCurrentModel()); + _vertexAssocDiag->setPatternDataSelectionModel(currentDGView->getPatternDataSelectionModel()); + + //close current widget + if (_treeViewDelegate != NULL) _treeViewDelegate->closeDialog(); + if (_dwInputPanel->widget()) _dwInputPanel->widget()->close(); - //add the vertex assoc dialog in the dockwidget - if ( !_dwInputPanel->isVisible() ) _dwInputPanel->setVisible(true); - _dwInputPanel->setWidget(_vertexAssocDiag); - _dwInputPanel->setWindowTitle(_vertexAssocDiag->windowTitle()); - _vertexAssocDiag->adjustSize(); - assocInProgress = true; - _vertexAssocDiag->show(); + //add the vertex assoc dialog in the dockwidget + if ( !_dwInputPanel->isVisible() ) _dwInputPanel->setVisible(true); + _dwInputPanel->setWidget(_vertexAssocDiag); + _dwInputPanel->setWindowTitle(_vertexAssocDiag->windowTitle()); + _vertexAssocDiag->adjustSize(); + assocInProgress = true; + _vertexAssocDiag->show(); } void HEXABLOCKGUI::assocEdge() { - if ( !_edgeAssocDiag ){ - _edgeAssocDiag = new EdgeAssocDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - _edgeAssocDiag->setGeomEngine( _geomEngine ); - } - _showDialogBox( _edgeAssocDiag ); + if ( !_edgeAssocDiag ){ + _edgeAssocDiag = new EdgeAssocDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + // _edgeAssocDiag->setGeomEngine( _geomEngine ); + } + _showDialogBox( _edgeAssocDiag ); } void HEXABLOCKGUI::assocQuad() { - if ( !_quadAssocDiag ){ - _quadAssocDiag = new QuadAssocDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _quadAssocDiag ); + if ( !_quadAssocDiag ){ + _quadAssocDiag = new QuadAssocDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _quadAssocDiag ); } void HEXABLOCKGUI::addGroup() { - if ( !_groupDiag ){ - _groupDiag = new GroupDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _groupDiag ); + if ( !_groupDiag ){ + _groupDiag = new GroupDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _groupDiag ); + if (_groupDiag != NULL && getCurrentModel() != NULL) + { + HEXA_NS::Document* doc = getCurrentModel()->getHexaDocument(); + if (doc == NULL) return; + char defaultName[16]; + sprintf (defaultName, "g%04d", doc->countGroup()); + _groupDiag->name_le->setText(defaultName); + } } - -/* void HEXABLOCKGUI::removeGroup() { - QItemSelectionModel *groupsSelectionModel = _groupsTreeView->selectionModel(); - QModelIndex selected = groupsSelectionModel->currentIndex(); - selected = _groupsModel->mapToSource( selected ); + VtkDocumentGraphicView* currentDGView = getCurrentVtkGraphicView(); + if (currentDGView == NULL) return; -/* - if ( !selected.isValid() ){ - SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE GROUP" ), tr( "No group selected!" ) ); - return; - } - - //Demande de confirmation de la suppression des groupes - if (SUIT_MessageBox::question( - 0, - tr("Remove Group"), - tr("Remove group : %1 ?").arg(selected.data().toString()), - SUIT_MessageBox::Ok | SUIT_MessageBox::Cancel, - SUIT_MessageBox::Cancel - ) == SUIT_MessageBox::Cancel) return; - - groupsSelectionModel->clearSelection(); - - std::cout << "////////////////////////// " << selected.data().toString().toStdString() << std::endl; - bool removed = _currentModel->removeGroup( selected ); - //std::cout << " " << selected.data().toString().toStdString() << std::endl; - if ( !removed ) { - SUIT_MessageBox::critical( 0, tr( "ERR_ERROR" ), tr( "CANNOT REMOVE %1" ).arg(selected.data().toString()) ); - groupsSelectionModel->clearSelection(); - return; - } -}*/ - - - -void HEXABLOCKGUI::removeGroup() -{ - QItemSelectionModel *groupsSelectionModel = _groupsTreeView->selectionModel(); - QModelIndexList l = groupsSelectionModel->selectedIndexes(); - int nbGroupsRemoved = 0; + QItemSelectionModel *groupsSelectionModel = _groupsTreeView->selectionModel(); + QModelIndexList l = groupsSelectionModel->selectedIndexes(); + int nbGroupsRemoved = 0; - if ( l.isEmpty() ){ - SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE GROUP" ), - tr( "No group selected!" ) ); - return; - } - - foreach( QModelIndex selected, l ){ - if ( selected.data(HEXA_TREE_ROLE) == GROUP_TREE ){ - selected = _groupsModel->mapToSource( selected ); - Q_ASSERT(selected.isValid()); - - //Confirm the deletion of the group - if (SUIT_MessageBox::question( - 0, - tr("Remove Group"), - tr("Remove group : %1 ?").arg(selected.data().toString()), - SUIT_MessageBox::Ok | SUIT_MessageBox::Cancel, - SUIT_MessageBox::Cancel - ) == SUIT_MessageBox::Cancel) return; - - bool removed = _currentModel->removeGroup( selected ); - if ( !removed ) { - SUIT_MessageBox::critical( 0, tr( "ERR_ERROR" ), - tr( "CANNOT REMOVE %1" ).arg(selected.data().toString()) ); + if ( l.isEmpty() ){ + SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE GROUP" ), + tr( "No group selected!" ) ); return; - } - nbGroupsRemoved++; } - } - if (!nbGroupsRemoved) - SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE GROUP" ), - tr( "No group selected!" ) ); -} + foreach( QModelIndex selected, l ){ + if ( selected.data(HEXA_TREE_ROLE) == GROUP_TREE ){ + selected = currentDGView->getGroupsModel()->mapToSource( selected ); + Q_ASSERT(selected.isValid()); + + //Confirm the deletion of the group + if (SUIT_MessageBox::question( + 0, + tr("Remove Group"), + tr("Remove group : %1 ?").arg(selected.data().toString()), + SUIT_MessageBox::Ok | SUIT_MessageBox::Cancel, + SUIT_MessageBox::Cancel + ) == SUIT_MessageBox::Cancel) return; + + bool removed = getCurrentModel()->removeGroup( selected ); + if ( !removed ) { + SUIT_MessageBox::critical( 0, tr( "ERR_ERROR" ), + tr( "CANNOT REMOVE %1" ).arg(selected.data().toString()) ); + return; + } + nbGroupsRemoved++; + } + } + if (!nbGroupsRemoved) + SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE GROUP" ), + tr( "No group selected!" ) ); +} void HEXABLOCKGUI::addLaw() { - if ( !_lawDiag ){ - _lawDiag = new LawDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _lawDiag ); + if ( !_lawDiag ){ + _lawDiag = new LawDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _lawDiag ); + if (_lawDiag != NULL && getCurrentModel() != NULL) + { + HEXA_NS::Document* doc = getCurrentModel()->getHexaDocument(); + if (doc == NULL) return; + char defaultName[16]; + sprintf (defaultName, "l%04d", doc->countLaw()); + _lawDiag->name_le->setText(defaultName); + } } void HEXABLOCKGUI::removeLaw() { + VtkDocumentGraphicView* currentDGView = getCurrentVtkGraphicView(); + if (currentDGView == NULL) return; - QModelIndexList l = _meshSelectionModel->selectedIndexes(); - int nbLawsRemoved = 0; - - if ( l.isEmpty() ){ - SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE LAW" ), - tr( "No law selected!" ) ); - return; - } - - foreach( QModelIndex selected, l ){ - if ( selected.data(HEXA_TREE_ROLE) == LAW_TREE ){ - selected = _meshModel->mapToSource( selected ); - Q_ASSERT(selected.isValid()); - - //Confirm the deletion of the law - if (SUIT_MessageBox::question( - 0, - tr("Remove Law"), - tr("Remove law : %1 ?\nAll propagations having this law will \ -have the default law.").arg(selected.data().toString()), - SUIT_MessageBox::Ok | SUIT_MessageBox::Cancel, - SUIT_MessageBox::Cancel - ) == SUIT_MessageBox::Cancel) return; + QModelIndexList l = currentDGView->getMeshSelectionModel()->selectedIndexes(); + int nbLawsRemoved = 0; - bool removed = _currentModel->removeLaw(selected); - if ( !removed ) { - SUIT_MessageBox::critical( 0, tr( "ERR_ERROR" ), - tr( "CANNOT REMOVE %1" ).arg(selected.data().toString()) ); + if ( l.isEmpty() ){ + SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE LAW" ), + tr( "No law selected!" ) ); return; - } - nbLawsRemoved++; } - } - if (!nbLawsRemoved) - SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE LAW" ), - tr( "No law selected!" ) ); + + foreach( QModelIndex selected, l ){ + if ( selected.data(HEXA_TREE_ROLE) == LAW_TREE ){ + selected = currentDGView->getMeshModel()->mapToSource( selected ); + Q_ASSERT(selected.isValid()); + + //Confirm the deletion of the law + if (SUIT_MessageBox::question( + 0, + tr("Remove Law"), + tr("Remove law : %1 ?\nAll propagations having this law will have the default law.").arg(selected.data().toString()), + SUIT_MessageBox::Ok | SUIT_MessageBox::Cancel, + SUIT_MessageBox::Cancel + ) == SUIT_MessageBox::Cancel) return; + + bool removed = getCurrentModel()->removeLaw(selected); + if ( !removed ) { + SUIT_MessageBox::critical( 0, tr( "ERR_ERROR" ), + tr( "CANNOT REMOVE %1" ).arg(selected.data().toString()) ); + return; + } + nbLawsRemoved++; + } + } + if (!nbLawsRemoved) + SUIT_MessageBox::information( 0, tr( "CANNOT REMOVE LAW" ), + tr( "No law selected!" ) ); } void HEXABLOCKGUI::setPropagation() { - if ( !_propagationDiag ){ - _propagationDiag = new PropagationDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _showDialogBox( _propagationDiag ); + if ( !_propagationDiag ){ + _propagationDiag = new PropagationDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _showDialogBox( _propagationDiag ); } // Dialog box to compute a mesh from a document // -------------------------------------------- - void HEXABLOCKGUI::computeMesh() { - if ( !_computeMeshDiag ){ - _computeMeshDiag = new ComputeMeshDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); - } - _computeMeshDiag->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); - _showDialogBox( _computeMeshDiag ); + if ( !_computeMeshDiag ){ + _computeMeshDiag = new ComputeMeshDialog(_dwInputPanel, HexaBaseDialog::NEW_MODE); + } + _computeMeshDiag->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + _showDialogBox( _computeMeshDiag ); } void HEXABLOCKGUI::clearAssociations() { -// QMessageBox::warning( 0, "windowTitle()", "clearAssociations" ); - QModelIndex iDataModel = _patternDataTreeView->currentIndex(); - QModelIndex iModel = _patternDataModel->mapToSource(iDataModel); + VtkDocumentGraphicView* currentDGView = getCurrentVtkGraphicView(); + if (currentDGView == NULL) return; + + // QMessageBox::warning( 0, "windowTitle()", "clearAssociations" ); + QModelIndex iDataModel = _patternDataTreeView->currentIndex(); + QModelIndex iModel = currentDGView->getPatternDataModel()->mapToSource(iDataModel); + + getCurrentModel()->clearEltAssociations(iModel); + + // SUIT_MessageBox::information( 0, tr( "HEXA_INFO" ), tr( "ASSOCIATION CLEARED" ) ); +} + +void HEXABLOCKGUI::showModelInfo() +{ + //create the info dialog if not yet + if (_modelInfoDiag == NULL) + _modelInfoDiag = new ModelInfoDialog(_dwInputPanel); - _currentModel->clearEltAssociations(iModel); + //show the model informations dialog + _showDialogBox( _modelInfoDiag ); +} + +void HEXABLOCKGUI::addShape() +{ + //create the info dialog if not yet + if (_addShapeDiag == NULL) + _addShapeDiag = new AddShapeDialog(_dwInputPanel); -// SUIT_MessageBox::information( 0, tr( "HEXA_INFO" ), tr( "ASSOCIATION CLEARED" ) ); + //show the model informations dialog + _showDialogBox( _addShapeDiag ); } void HEXABLOCKGUI::clearAllAssociations() { - //Confirm the deletion of the associations - if (SUIT_MessageBox::question( - 0, - tr("Clear Associations"), - tr("Clear all associations ?"), - SUIT_MessageBox::Ok | SUIT_MessageBox::Cancel, - SUIT_MessageBox::Cancel - ) == SUIT_MessageBox::Cancel) return; + VtkDocumentGraphicView* currentDGView = getCurrentVtkGraphicView(); + if (currentDGView == NULL) return; + + int currentChildIndex = 0; + QModelIndex currentIndex = currentDGView->getPatternDataModel()->mapToSource(_patternDataTreeView->currentIndex()); + if (!currentIndex.isValid()) return; + QVariant currentAssocVariant; + QString currentAssocEntry; + + //Confirm the deletion of the associations + QVariant treeVariant = currentIndex.data( HEXA_TREE_ROLE ); + if ( !treeVariant.isValid() ) return; + int eltType = treeVariant.toInt(); + QString typeStr = ""; + HEXA_NS::EnumElt hexaType; + if (eltType == VERTEX_DIR_TREE) + { + typeStr = tr("TREE_ITEM_VERTEX").toUpper(); + hexaType = HEXA_NS::EL_VERTEX; + } + else if (eltType == EDGE_DIR_TREE) + { + typeStr = tr("TREE_ITEM_EDGE").toUpper(); + hexaType = HEXA_NS::EL_EDGE; + } + else if (eltType == QUAD_DIR_TREE) + { + typeStr = tr("TREE_ITEM_QUAD").toUpper(); + hexaType = HEXA_NS::EL_QUAD; + } - int currentChildIndex = 0; - QModelIndex currentIndex = _patternDataModel->mapToSource(_patternDataTreeView->currentIndex()); - QVariant currentAssocVariant; - QString currentAssocEntry; + if (SUIT_MessageBox::question( + 0, + tr("CLEAR_ASSOCIATIONS"), + tr("CLEAR_ALL_ASSOCIATIONS_ON") + " " + typeStr + "?", + SUIT_MessageBox::Ok | SUIT_MessageBox::Cancel, + SUIT_MessageBox::Cancel + ) == SUIT_MessageBox::Cancel) return; - QModelIndex currentChild = currentIndex.child(currentChildIndex++, 0); - while( currentChild.isValid() ) { - currentAssocVariant = currentChild.data( HEXA_ASSOC_ENTRY_ROLE ); - currentAssocEntry = currentChild.data( HEXA_ASSOC_ENTRY_ROLE ).toString(); - if ( currentAssocVariant.isValid() && !currentAssocEntry.isEmpty() ) - _currentModel->clearEltAssociations(currentChild); + DocumentModel* docModel = getCurrentModel(); + if (docModel == NULL) return; + docModel->clearAssociation(hexaType); - currentChild = currentChild.sibling(currentChildIndex++, 0); - } +// QModelIndex currentChild = currentIndex.child(currentChildIndex++, 0); +// while( currentChild.isValid() ) { +// +// currentAssocVariant = currentChild.data( HEXA_ASSOC_ENTRY_ROLE ); +// currentAssocEntry = currentChild.data( HEXA_ASSOC_ENTRY_ROLE ).toString(); +// if ( currentAssocVariant.isValid() && !currentAssocEntry.isEmpty() ) +// getCurrentModel()->clearEltAssociations(currentChild); +// +// currentChild = currentChild.sibling(currentChildIndex++, 0); +// } - //SUIT_MessageBox::information( 0, tr( "HEXA_INFO" ), tr( "ASSOCIATION CLEARED" ) ); + //SUIT_MessageBox::information( 0, tr( "HEXA_INFO" ), tr( "ASSOCIATION CLEARED" ) ); } void HEXABLOCKGUI::showAssociations() { - QModelIndexList elts; - int currentChildIndex = 0; - QVariant currentAssocVariant; - QString currentAssocEntry; - QModelIndex currentIndex = _patternDataTreeView->currentIndex(); - QModelIndex currentChild = currentIndex.child(currentChildIndex++, 0); + VtkDocumentGraphicView* currentDGView = getCurrentVtkGraphicView(); + if (currentDGView == NULL) return; - while( currentChild.isValid() ) { + QModelIndexList elts; + int currentChildIndex = 0; + QVariant currentAssocVariant; + QString currentAssocEntry; + QModelIndex currentIndex = _patternDataTreeView->currentIndex(); + QModelIndex currentChild = currentIndex.child(currentChildIndex++, 0); - currentAssocVariant = currentChild.data( HEXA_ASSOC_ENTRY_ROLE ); - currentAssocEntry = currentChild.data( HEXA_ASSOC_ENTRY_ROLE ).toString(); - if ( currentAssocVariant.isValid() && !currentAssocEntry.isEmpty() ) - elts << currentChild; + while( currentChild.isValid() ) { - currentChild = currentChild.sibling(currentChildIndex++, 0); - } - _patternDataSelectionModel-> highlightVTKElts( elts ); + currentAssocVariant = currentChild.data( HEXA_ASSOC_ENTRY_ROLE ); + currentAssocEntry = currentChild.data( HEXA_ASSOC_ENTRY_ROLE ).toString(); + if ( currentAssocVariant.isValid() && !currentAssocEntry.isEmpty() ) + elts << currentChild; + currentChild = currentChild.sibling(currentChildIndex++, 0); + } + currentDGView->getPatternDataSelectionModel()->highlightEltsWithAssocs(elts); } LightApp_SelectionMgr* HEXABLOCKGUI::selectionMgr() { - SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); - if( anApp ) - return dynamic_cast( anApp->selectionMgr() ); - else - return NULL; + SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); + if( anApp ) + return dynamic_cast( anApp->selectionMgr() ); + else + return NULL; +} + +bool HEXABLOCKGUI::eventFilter(QObject *obj, QEvent *event) +{ + if ( currentDialog == NULL ) return false; + + if ( event->type() == QEvent::Enter ){ // ENTER EVENT + + // The window acquire the focus when the cursor enter + + //OCC - window enter + OCCViewer_ViewWindow* occWindow = dynamic_cast(obj); + if ( occWindow != NULL) + { + if (!occWindow->hasFocus()) occWindow->setFocus(); + if (currentDialog != NULL && !currentDialog->isHidden()) + currentDialog->onWindowActivated(occWindow->getViewManager()); + } + + //VTK + SVTK_ViewWindow* vtkWindow = dynamic_cast(obj); + if ( vtkWindow != NULL) + { + if (!vtkWindow->hasFocus()) vtkWindow->setFocus(); + if (currentDialog != NULL && !currentDialog->isHidden()) + currentDialog->onWindowActivated(vtkWindow->getViewManager()); + } + + //Don't pass the signal + return true; + } + else + //standard event processing + return QObject::eventFilter(obj, event); } QStringList HEXABLOCKGUI::getQuickDirList() { - QStringList dirList; - SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); - if ( resMgr ) - dirList = resMgr->stringValue( "FileDlg", "QuickDirList" ).split( ';', QString::SkipEmptyParts ); - return dirList; + QStringList dirList; + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + if ( resMgr ) + dirList = resMgr->stringValue( "FileDlg", "QuickDirList" ).split( ';', QString::SkipEmptyParts ); + + return dirList; } @@ -2739,15 +3334,15 @@ QStringList HEXABLOCKGUI::getQuickDirList() extern "C" { - HEXABLOCKGUI_EXPORT CAM_Module* createModule() - { +HEXABLOCKGUI_EXPORT CAM_Module* createModule() + { return new HEXABLOCKGUI(); - } + } - HEXABLOCKGUI_EXPORT char* getModuleVersion() - { +HEXABLOCKGUI_EXPORT char* getModuleVersion() + { return (char*)HEXABLOCK_VERSION_STR; - } + } } @@ -2755,6 +3350,7 @@ extern "C" // int dim, // const std::string& container ) // { + // SalomeApp_Application* app = getApp(); // int activeStudyId = app->activeStudy()->id(); // @@ -2766,7 +3362,7 @@ extern "C" // std::cout << "_smeshEngine =>" << _smeshEngine << std::endl; // std::cout << "_geomEngine =>" << _geomEngine << std::endl; // -// HEXA_NS::Document* docImpl = _currentModel->documentImpl(); +// HEXA_NS::Document* docImpl = getCurrentModel()->documentImpl(); // std::cout << "docImpl =>" << docImpl << std::endl; // std::cout << "docImpl->getFile() =>" << docImpl->getFile() << std::endl; // HEXABLOCK_ORB::Document_var anDocObj= _hexaEngine->loadDocument( docImpl->getFile() ); @@ -2867,42 +3463,6 @@ SMESH::SMESH_Gen_var SMESHGUI::GetSMESHGen() return myComponentSMESH; }*/ - bool HEXABLOCKGUI::eventFilter(QObject *obj, QEvent *event) - { - if ( event->type() == QEvent::Enter ){//QEvent::Show ){ //QEvent::KeyPress) { -// showDocumentMenus( false ); -// showPatternMenus( false ); -// showAssociationMenus( false ); -// showGroupsMenus( false ); -// showMeshMenus( false ); -// if ( obj == _dwObjectBrowser ) { -// showDocumentMenus( true ); -// } else if ( obj == _dwPattern ) { -// showPatternMenus( true ); -// } else if ( obj == _dwAssociation ) { -// showAssociationMenus( true ); -// } else if ( obj == _dwGroups ) { -// showGroupsMenus( true ); -// } else if ( obj == _dwMesh ) { -// -// showMeshMenus( true ); -// } - OCCViewer_ViewWindow* occWindow = dynamic_cast(obj); - if ( occWindow != NULL ) - { - occWindow->setFocus(); - } - SVTK_ViewWindow* vtkWindow = dynamic_cast(obj); - if (vtkWindow != NULL) - { -// vtkWindow->setFocus(); - } - return true; - } else { - // standard event processing - return QObject::eventFilter(obj, event); - } - } // try { // // throw SALOME_Exception(LOCALIZED("assocVertex")); diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI.hxx index 10817e9..49e7126 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI.hxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI.hxx @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -32,6 +33,7 @@ #include #include +#include // #include #include @@ -46,6 +48,8 @@ #include "GEOMGUI_OCCSelector.h" +#include "hexa_base.hxx" + @@ -58,7 +62,9 @@ namespace HEXABLOCK { namespace GUI { - class DocumentGraphicView; + class VtkDocumentGraphicView; + class OccGraphicView; + class GraphicViewsHandler; class DocumentDelegate; class DocumentModel; class PatternDataModel; @@ -104,6 +110,8 @@ namespace HEXABLOCK class ReplaceHexaDialog; class QuadRevolutionDialog; class MakeHemiSphereDialog; + class ModelInfoDialog; + class AddShapeDialog; } } @@ -114,6 +122,7 @@ class SUIT_ViewWindow; class SVTK_ViewWindow; class OCCViewer_ViewWindow; class LightApp_VTKSelector; +class MyGEOMBase_Helper; // // SALOME KERNEL includes // #include @@ -133,6 +142,12 @@ public: HEXABLOCKGUI(); virtual ~HEXABLOCKGUI(); + enum ViewType { + VTK, + OCC, + UNKNOWN + }; + static SalomeApp_Study* activeStudy(); static HEXABLOCK_ORB::HEXABLOCK_Gen_ptr InitHEXABLOCKGen( SalomeApp_Application* ); @@ -141,10 +156,17 @@ public: static LightApp_SelectionMgr* selectionMgr(); + //add an object in the study + static QString addInStudy(QString& fileName); + - static SVTK_ViewWindow* currentVtkView; - static OCCViewer_ViewWindow* currentOccView; +// static SVTK_ViewWindow* currentVtkView; + static HEXABLOCK::GUI::VtkDocumentGraphicView* currentDocGView; + static HEXABLOCK::GUI::OccGraphicView* currentOccGView; + static MyGEOMBase_Helper* geomBaseHelper; static bool assocInProgress; + static SalomeApp_Application* myApplication; + static GEOMGUI_OCCSelector* currentOccSelector; //HEXABLOCK::GUI::DocumentModel* @@ -162,6 +184,9 @@ public: virtual void preferencesChanged( const QString& sect, const QString& name ); virtual void studyActivated(); + ///Returns a new HEXA_NS::Document and it's entry in the study + std::pair newHexaDocument(); + //------------------------------------ void createAndFillDockWidget(); void createActions(); @@ -170,15 +195,24 @@ public: void initialMenus(); void showAllMenus(); + void updateSelectors(); // void showBaseMenus(bool show); // void showEditionMenus(bool show); // void showExecMenus(bool show); // void showCommonMenus(bool show); - void switchModel(SUIT_ViewWindow *view); + void switchModel(HEXABLOCK::GUI::VtkDocumentGraphicView* dgview); + void switchOnGraphicView(HEXABLOCK::GUI::VtkDocumentGraphicView* dgview); + void switchOffGraphicView(HEXABLOCK::GUI::VtkDocumentGraphicView* dgview, + bool saveCurrentDlg = true); void showDockWidgets(bool isVisible); + HEXABLOCK::GUI::VtkDocumentGraphicView* getCurrentVtkGraphicView(); + HEXABLOCK::GUI::VtkDocumentGraphicView* getDocument(SalomeApp_DataObject* studyObject); + HEXABLOCK::GUI::DocumentModel* getCurrentModel(); + HEXABLOCK::GUI::HexaBaseDialog* getDlgBox(HEXABLOCK::GUI::VtkDocumentGraphicView* view); + static ViewType getActiveViewType(); public slots: bool deactivateModule( SUIT_Study* theStudy); @@ -201,6 +235,9 @@ protected slots: // void onTryClose(bool &isClosed, QxScene_ViewWindow* window); void onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ); + void showActor(); + void hideActor(); + void showOnlyActor(); protected: // virtual CAM_DataModel* createDataModel(); @@ -280,6 +317,12 @@ private slots: void setPropagation(); void computeMesh(); + //show the current model's information (nb vertex, edge, ... and more) + void showModelInfo(); + + //associate a shape to a document + void addShape(); + //Clears associations of a single element (VERTEX, EDGE, QUAD, ...) void clearAssociations(); @@ -295,7 +338,9 @@ private: QStringList getQuickDirList(); - HEXABLOCK::GUI::DocumentGraphicView* newGraphicView(); +// HEXABLOCK::GUI::DocumentGraphicView* newGraphicView(); + void restoreGraphicViews(); + void clearDialogs(); // ------------------------------------------------------------------------------------------------- @@ -342,8 +387,11 @@ private: HEXABLOCK::GUI::ReplaceHexaDialog* _replaceHexaDiag; HEXABLOCK::GUI::QuadRevolutionDialog* _quadRevolutionDiag; HEXABLOCK::GUI::MakeHemiSphereDialog* _makeHemiSphereDiag; + HEXABLOCK::GUI::ModelInfoDialog* _modelInfoDiag; + HEXABLOCK::GUI::AddShapeDialog* _addShapeDiag; + std::set currentModelDialogs; // Actions int _menuId; // Object Browser @@ -406,50 +454,45 @@ private: // Meshing QAction *_computeMesh; + QAction* _showModelInfoAct; + + QAction* _addShapeAct; + +// QAction *_showAct; +// QAction *_showOnlyAct; +// QAction *_hideAct; + // ------------------------------------------------------------------------------------------------- // Model/View implementation // ------------------------------------------------------------------------------------------------- - // MODEL MODEL MODEL MODEL MODEL MODEL MODEL MODEL MODEL - HEXABLOCK::GUI::DocumentModel *_currentModel;// a model for each document : 1..n ( multiple document allowed ) - HEXABLOCK::GUI::PatternDataModel *_patternDataModel; // sub-part of DocumentModel - HEXABLOCK::GUI::PatternBuilderModel *_patternBuilderModel; // sub-part of DocumentModel HEXABLOCK::GUI::AssociationsModel *_associationsModel; // sub-part of DocumentModel - HEXABLOCK::GUI::GroupsModel *_groupsModel; // sub-part of DocumentModel - HEXABLOCK::GUI::MeshModel *_meshModel; // sub-part of DocumentModel + // VIEW VIEW VIEW VIEW VIEW VIEW VIEW VIEW VIEW VIEW - QTreeView *_patternDataTreeView; // document's pattern : 1 ( only one view ) - QTreeView *_patternBuilderTreeView; // document's pattern : 1 ( only one view ) - QTreeView *_associationTreeView; // document's association : 1 ( only one view ) - QTreeView *_groupsTreeView; // document's groups - QTreeView *_meshTreeView; // document's mesh property: 1 ( only one view ) - HEXABLOCK::GUI::DocumentGraphicView *_currentGraphicView;// graphical view (SVTK view) of the document : 1..n ( multiple view ) + QTreeView* _patternDataTreeView; // document's pattern : 1 ( only one view ) + QTreeView* _patternBuilderTreeView; // document's pattern : 1 ( only one view ) + QTreeView* _patternGeomTreeView; // the geometries' tree view + QTreeView* _associationTreeView; // document's association : 1 ( only one view ) + QTreeView* _groupsTreeView; // document's groups + QTreeView* _meshTreeView; // document's mesh property: 1 ( only one view ) // DELEGATE DELEGATE DELEGATE DELEGATE DELEGATE DELEGATE DELEGATE HEXABLOCK::GUI::DocumentDelegate *_treeViewDelegate; // specific editor for each item of the tree - // SELECTION_MODEL SELECTION_MODEL SELECTION_MODEL SELECTION_MODEL SELECTION_MODEL - HEXABLOCK::GUI::PatternDataSelectionModel *_patternDataSelectionModel; // 1..n selection - HEXABLOCK::GUI::PatternBuilderSelectionModel *_patternBuilderSelectionModel;// 1..n selection - HEXABLOCK::GUI::GroupsSelectionModel *_groupsSelectionModel; - HEXABLOCK::GUI::MeshSelectionModel *_meshSelectionModel; + HEXABLOCK::GUI::GraphicViewsHandler* graphicViewsHandler; //vtk views hanlder (create, close, ...) // SALOME SALOME SALOME SALOME SALOME SALOME SALOME SALOME SALOME SALOME - SUIT_ViewManager *vtkViewManager; - SUIT_ViewManager *occViewManager; - std::map _salomeViewWindows; // key = entry - - // SALOME/QT SALOME/QT SALOME/QT SALOME/QT SALOME/QT SALOME/QT - std::map _documentModels; - std::map _documentView; - std::map graphicViewIsEmpty; -// static std::map _salomeViews; + std::map docs; // key = entry + QMap gViewDlgBox; // key = entry // int _documentCnt; bool _isSaved; bool moduleActivatedOnce; + QDir* loadDocLastPath; + QDir* saveDocLastPath; + void testDocument(); void test_make_cart_grid(); diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentDelegate.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentDelegate.cxx index 1951143..6597621 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentDelegate.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentDelegate.cxx @@ -39,11 +39,6 @@ using namespace HEXABLOCK::GUI; DocumentDelegate::DocumentDelegate(QDockWidget *dw, QObject *parent) : QItemDelegate(parent), _dw(dw), - _documentModel(0), - _patternDataSelectionModel(0), - _patternBuilderSelectionModel(0), - _groupsSelectionModel(0), - _meshSelectionModel(0), _currentEditor(NULL) { // connect( this, SIGNAL( closeEditor(QWidget *, QAbstractItemDelegate::EndEditHint) ), @@ -57,10 +52,6 @@ QWidget *DocumentDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const { - MESSAGE("DocumentDelegate::createEditor(){"); - MESSAGE("* parent is: " << parent); - MESSAGE("* _dw is: " << _dw); - MESSAGE("* item is: " << index.data(Qt::DisplayRole).toString().toStdString()); //close current editor if there's one before creating a new one if (_currentEditor != NULL) @@ -75,8 +66,9 @@ QWidget *DocumentDelegate::createEditor( QWidget *parent, if ( !_dw->isVisible() ) _dw->setVisible(true); switch ( index.data(HEXA_TREE_ROLE).toInt() ){ - case VERTEX_TREE : editor = new VertexDialog(_dw, HexaBaseDialog::UPDATE_MODE); break; - case EDGE_TREE : editor = new EdgeDialog(_dw, /*HexaBaseDialog::NEW_MODE*/HexaBaseDialog::INFO_MODE); break; +// case VERTEX_TREE : editor = new VertexDialog(_dw, HexaBaseDialog::UPDATE_MODE); break; //Modification + case VERTEX_TREE : editor = new VertexDialog(_dw, HexaBaseDialog::INFO_MODE); break; + case EDGE_TREE : editor = new EdgeDialog(_dw, HexaBaseDialog::INFO_MODE); break; case QUAD_TREE : editor = new QuadDialog(_dw, HexaBaseDialog::INFO_MODE); break; case HEXA_TREE : editor = new HexaDialog(_dw, HexaBaseDialog::INFO_MODE); break; case VECTOR_TREE : editor = new VectorDialog(_dw, HexaBaseDialog::INFO_MODE); break; @@ -85,28 +77,18 @@ QWidget *DocumentDelegate::createEditor( QWidget *parent, // case ELEMENTS_TREE : break; // case CROSSELEMENTS_TREE : break; case GROUP_TREE : editor = new GroupDialog(_dw, HexaBaseDialog::INFO_MODE/*UPDATE_MODE*/); break; - case LAW_TREE : editor = new LawDialog(_dw, HexaBaseDialog::UPDATE_MODE); break; + case LAW_TREE : editor = new LawDialog(_dw, HexaBaseDialog::INFO_MODE); break; case PROPAGATION_TREE : editor = new PropagationDialog(_dw, HexaBaseDialog::INFO_MODE); break; } if ( editor != NULL ){ - if ( _documentModel ) editor->setDocumentModel( _documentModel ); - if ( _patternDataSelectionModel ) - { - editor->setPatternDataSelectionModel( _patternDataSelectionModel ); -// _patternDataSelectionModel->currentDialog = editor; - } - if ( _patternBuilderSelectionModel ) editor->setPatternBuilderSelectionModel( _patternBuilderSelectionModel); - if ( _groupsSelectionModel ) editor->setGroupsSelectionModel( _groupsSelectionModel ); - if ( _meshSelectionModel ) editor->setMeshSelectionModel( _meshSelectionModel); - HEXABLOCKGUI::assocInProgress = false; + //show the editor in the dockwidget editor->resetSizeAndShow(_dw); } else _dw->close(); - MESSAGE("}"); _currentEditor = editor; return editor; @@ -127,51 +109,51 @@ void DocumentDelegate::closeDialog() void DocumentDelegate::setEditorData( QWidget *editor, const QModelIndex &index) const { - MESSAGE("DocumentDelegate::setEditorData(){"); - MESSAGE("* item is: " << index.data(Qt::DisplayRole).toString().toStdString()); - -// HexaBaseDialog* editor = dynamic_cast( editor ); + HexaBaseDialog* hexaEditor = dynamic_cast( editor ); + if (hexaEditor == NULL) return; + DocumentModel* documentModel = hexaEditor->getDocumentModel(); + if (documentModel == NULL) return; switch ( index.data(HEXA_TREE_ROLE).toInt() ){ case VERTEX_TREE : { // HEXA_NS::Vertex *value = index.data( HEXA_DATA_ROLE ).value< HEXA_NS::Vertex* >(); - HEXA_NS::Vertex *value = _documentModel->getHexaPtr(index); + HEXA_NS::Vertex *value = documentModel->getHexaPtr(index); VertexDialog *vertexEditor = static_cast(editor); vertexEditor->setValue(value); } break; case EDGE_TREE : { - HEXA_NS::Edge *value = _documentModel->getHexaPtr(index); + HEXA_NS::Edge *value = documentModel->getHexaPtr(index); EdgeDialog *edgeEditor = static_cast(editor); edgeEditor->setValue(value); } break; case QUAD_TREE : { - HEXA_NS::Quad *value = _documentModel->getHexaPtr(index); + HEXA_NS::Quad *value = documentModel->getHexaPtr(index); QuadDialog *quadEditor = static_cast(editor); quadEditor->setValue(value); } break; case HEXA_TREE : { - HEXA_NS::Hexa *value = _documentModel->getHexaPtr(index); + HEXA_NS::Hexa *value = documentModel->getHexaPtr(index); HexaDialog *hexaEditor = static_cast(editor); hexaEditor->setValue(value); } break; case VECTOR_TREE : { - HEXA_NS::Vector *value = _documentModel->getHexaPtr(index); + HEXA_NS::Vector *value = documentModel->getHexaPtr(index); VectorDialog *vectorEditor = static_cast(editor); vectorEditor->setValue(value); } break; case CYLINDER_TREE : { - HEXA_NS::Cylinder *value = _documentModel->getHexaPtr(index); + HEXA_NS::Cylinder *value = documentModel->getHexaPtr(index); CylinderDialog *cylinderEditor = static_cast(editor); cylinderEditor->setValue(value); } break; case PIPE_TREE : { - HEXA_NS::Pipe *value = _documentModel->getHexaPtr(index); + HEXA_NS::Pipe *value = documentModel->getHexaPtr(index); PipeDialog *pipeEditor= static_cast(editor); pipeEditor->setValue(value); } @@ -198,7 +180,6 @@ void DocumentDelegate::setEditorData( QWidget *editor, break; } - MESSAGE("}"); } @@ -207,6 +188,7 @@ bool DocumentDelegate::editorEvent ( QEvent *event, const QStyleOptionViewItem &option, const QModelIndex &index ) { +/************************************************************ MESSAGE("DocumentDelegate::editorEvent(){"); MESSAGE("* item is: " << index.data().toString().toStdString()); MESSAGE("* event is: " << event->type() ); @@ -219,14 +201,20 @@ bool DocumentDelegate::editorEvent ( QEvent *event, } //return QItemDelegate::editorEvent ( event, model, option, index ); + *************************************************************/ return false; } bool DocumentDelegate::eventFilter ( QObject * editor, QEvent * event ) { if ( event->type() == QEvent::FocusOut ){ - //((QWidget*) editor->parent())->close(); - return true; + return true; //do nothing for this signal } + else if (event->type() == QEvent::HideToParent && editor != NULL) + { + //close the current editor when the tree is reduced + ((QWidget*) editor->parent())->close(); + } + return false; } diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentDelegate.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentDelegate.hxx index 27d4ff0..c43b791 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentDelegate.hxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentDelegate.hxx @@ -46,15 +46,20 @@ namespace HEXABLOCK Q_OBJECT public: + /// close the editor void closeDialog(); + DocumentDelegate( QDockWidget *dw, QObject *parent = 0); + /// create the editor QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; + /// set editor's data void setEditorData( QWidget *editor, const QModelIndex &index) const; + /// set the editor's model void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const {}; @@ -63,15 +68,6 @@ namespace HEXABLOCK const QStyleOptionViewItem &option, const QModelIndex &index ) const {}; - //Can be used by editor - void setDocumentModel( DocumentModel* m ){_documentModel = m;} - - //Selections - void setPatternDataSelectionModel( PatternDataSelectionModel* s ){_patternDataSelectionModel = s;} - void setPatternBuilderSelectionModel( PatternBuilderSelectionModel* s ){_patternBuilderSelectionModel = s;} - void setGroupsSelectionModel( GroupsSelectionModel* s ){_groupsSelectionModel = s ;} - void setMeshSelectionModel( MeshSelectionModel* s ){_meshSelectionModel = s;} - protected: mutable QWidget* _currentEditor; virtual bool editorEvent ( QEvent * event, @@ -86,14 +82,6 @@ namespace HEXABLOCK private: QDockWidget* _dw; // creator's container - // can be used by editor - DocumentModel* _documentModel; - - PatternDataSelectionModel* _patternDataSelectionModel; - PatternBuilderSelectionModel* _patternBuilderSelectionModel; - GroupsSelectionModel* _groupsSelectionModel; - MeshSelectionModel* _meshSelectionModel; - private slots: void commitEditor(); diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentGraphicView.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentGraphicView.cxx deleted file mode 100755 index 08ae35a..0000000 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentGraphicView.cxx +++ /dev/null @@ -1,1123 +0,0 @@ -// Copyright (C) 2009-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library 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 -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -//#define _DEVDEBUG_ - -#include - -#include - -#include - -#include "utilities.h" - -#include - - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// VTK includes -#include -#include -#include -#include -#include -#include -// test tutorial (sphere) -#include -#include - -// test point (cf. SMESHGUI) -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "vtkLookupTable.h" -#include "vtkPoints.h" -#include "vtkCellArray.h" -#include "vtkFloatArray.h" -#include "vtkPolyData.h" -#include "vtkPolyDataMapper.h" -#include "vtkActor.h" -#include "vtkPointData.h" -#include "vtkProperty.h" - - -// #include "vtkStructuredGridReader.h" -#include "vtkUnstructuredGridReader.h" - - -#include - - - - - -#ifndef M_PI -#define M_PI 3.1415927 -#endif - -#include "HEXABLOCKGUI_Trace.hxx" -#include "HEXABLOCKGUI_DocumentModel.hxx" -#include "HEXABLOCKGUI_DocumentGraphicView.hxx" - - - -using namespace std; -using namespace HEXABLOCK::GUI; - -Document_Actor::Document_Actor( HEXA_NS::Document* doc, const QString& entry ): - SALOME_Actor(), - _doc( doc ) -{ - DEBTRACE("Document_Actor::Document_Actor " << entry.toLatin1() ); - Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject( entry.toLatin1(), "HEXABLOCK" );//,theName); CS_TODO - setIO(anIO); - vtkUnstructuredGrid* aGrid = getUnstructuredGrid(); -// std::cout << "Document_Actor aGrid->GetNumberOfCells() =>"<< aGrid->GetNumberOfCells(); - vtkDataSetMapper* aMapper = vtkDataSetMapper::New(); - aMapper->SetInput(aGrid); - aGrid->Delete(); - - SetVisibility( true );//VisibilityOff(); - SetPickable( true ); //PickableOff();// - SetMapper( aMapper ); - aMapper->Delete(); - - vtkProperty* aProp = vtkProperty::New(); - -// aProp->SetRepresentationToSurface(); - aProp->SetRepresentationToWireframe(); -// aProp->SetRepresentationToPoints(); - aProp->EdgeVisibilityOn (); - aProp->SetPointSize(5); - SetProperty( aProp ); - aProp->Delete(); -// SetPointRepresentation(true); - -} - -Document_Actor::~Document_Actor() -{ - -} - - -vtkUnstructuredGrid* Document_Actor::getUnstructuredGrid() -{ - vtkUnstructuredGrid* theGrid = vtkUnstructuredGrid::New(); - - _doc->reorderFaces(); //CS_TEST - - std::map vtkNodeId; - std::map hexaNodeId; - - // Create points - vtkPoints* aPoints = vtkPoints::New(); - int nbVertex = _doc->countVertex(); - aPoints->SetNumberOfPoints( nbVertex ); - - HEXA_NS::Vertex* v = NULL; - int vertexId; - for ( int i=0; i getVertex(i); - aPoints->SetPoint( i, v->getX(), v->getY(), v->getZ() ); - vertexId = reinterpret_cast(v); //v->getId(); - vtkNodeId [ vertexId ] = i; - hexaNodeId[ i ] = vertexId ; -// vtkNodeId [ vertexId ] = i+1; -// hexaNodeId[ i+1 ] = vertexId ; - } - - theGrid->SetPoints( aPoints ); - aPoints->Delete(); -// theGrid->SetCells( 0, 0, 0, 0, 0 ); - - - // Calculate cells size - int nb0DElement = _doc->countVertex(); - int nbEdge = _doc->countEdge(); - int nbFace = _doc->countQuad(); - int nbVolume = _doc->countHexa(); - - vtkIdType aCellsSize = 2*nb0DElement + 3*nbEdge + ( 4 + 1 )*nbFace + ( 8 + 1 )*nbVolume; - vtkIdType aNbCells = nb0DElement + nbEdge + nbFace + nbVolume; - - // Create cells - vtkCellArray* aConnectivity = vtkCellArray::New(); - aConnectivity->Allocate( aCellsSize, 0 ); - - vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New(); - aCellTypesArray->SetNumberOfComponents( 1 ); - aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() ); - - vtkIdList *anIdList = vtkIdList::New(); - vtkIdType iVtkElem = 0; -// vtkIdType iVtkElem = 1; //CS_TEST - int iHexaElem; - - // VERTEX - for ( int i=0; iSetNumberOfIds( 1 ); - v = _doc->getVertex(i); - iHexaElem = reinterpret_cast(v);//v->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - anIdList->SetId(0, vtkNodeId[iHexaElem]); - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_VERTEX );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); - ++iVtkElem; - } - - // EDGE - HEXA_NS::Edge* e = NULL; - HEXA_NS::Vertex* vertexElem = NULL; - for ( int i=0; iSetNumberOfIds( 2 ); - e = _doc->getEdge(i); - iHexaElem = reinterpret_cast(e); //e->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - - for( vtkIdType j = 0; j< 2; ++j ){ //j< e->countVertex(); ++j ){ - vertexElem = e->getVertex( j ); - anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); - } - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_LINE );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); - ++iVtkElem; - } - - // QUAD - HEXA_NS::Quad* q = NULL; - HEXA_NS::Quad* quadElem = NULL; - for ( int i=0; iSetNumberOfIds( 4 ); - q = _doc->getQuad(i); - iHexaElem = reinterpret_cast(q); //q->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - - for( vtkIdType j = 0; j< 4; ++j ){ - vertexElem = q->getVertex( j ); - anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); - } - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_QUAD );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); - ++iVtkElem; - } - - // HEXA - HEXA_NS::Hexa* h = NULL; - HEXA_NS::Hexa* hexaElem = NULL; - std::map connectivity; - connectivity[0] = 0; - connectivity[1] = 1; - connectivity[2] = 3; - connectivity[3] = 2; - connectivity[4] = 4; - connectivity[5] = 5; - connectivity[6] = 7; - connectivity[7] = 6; - for ( int i=0; iSetNumberOfIds( 8 ); - h = _doc->getHexa(i); - iHexaElem = reinterpret_cast(h); //q->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - - for( vtkIdType j = 0; j< 8; ++j ){ - vertexElem = h->getVertex( j );// ); - anIdList->SetId( connectivity[j], vtkNodeId[ reinterpret_cast(vertexElem) ]);//vertexElem->getId() ]); - } - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_HEXAHEDRON ); - ++iVtkElem; - } - - -// 0 1 2 3 4 5 6 7 -// V_ACE, V_ACF, V_ADE, V_ADF, V_BCE, V_BCF, V_BDE, V_BDF, -// -// 0 1 3 2 4 5 7 6 - - // Insert cells in grid - VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); - aCellLocationsArray->SetNumberOfComponents( 1 ); - aCellLocationsArray->SetNumberOfTuples( aNbCells ); -// std::cout << "aNbCells =>" << aNbCells << std::endl; - - aConnectivity->InitTraversal(); - for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ){ - aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); - } - theGrid->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); - - aCellLocationsArray->Delete(); - aCellTypesArray->Delete(); - aConnectivity->Delete(); - anIdList->Delete(); - //std::cout << "theGrid->GetNumberOfCells()" << theGrid->GetNumberOfCells() << std::endl; - - return theGrid; -} - -// =============================================================== Abu : debut -// ===================================================== Constructeur -Associate_Actor::Associate_Actor( HEXA_NS::Document* doc, const QString& entry) - : SALOME_Actor(), _doc( doc ) -{ - DEBTRACE("Associate_Actor::Associate_Actor " << entry.toLatin1() ); - Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject( entry.toLatin1(), "HEXABLOCK" );//,theName); CS_TODO - setIO(anIO); - vtkUnstructuredGrid* aGrid = getUnstructuredGrid(); - - vtkDataSetMapper* aMapper = vtkDataSetMapper::New(); - aMapper->SetInput(aGrid); - aGrid->Delete(); - - SetVisibility( true );//VisibilityOff(); - SetPickable( true ); //PickableOff();// - SetMapper( aMapper ); - aMapper->Delete(); - - vtkProperty* aProp = vtkProperty::New(); - aProp->SetColor(0,255,0); -// aProp->SetRepresentationToSurface(); - aProp->SetRepresentationToWireframe(); -// aProp->SetRepresentationToPoints(); - aProp->EdgeVisibilityOn (); - aProp->SetPointSize(5); - SetProperty( aProp ); - aProp->Delete(); -// SetPointRepresentation(true); -} -// ===================================================== getUnstructuredGrid - -vtkUnstructuredGrid* Associate_Actor::getUnstructuredGrid() -{ - vtkUnstructuredGrid* theGrid = vtkUnstructuredGrid::New(); - - _doc->reorderFaces(); //CS_TEST - - std::map vtkNodeId; - std::map hexaNodeId; - - // Create points - vtkPoints* aPoints = vtkPoints::New(); - int nbVertex = _doc->countVertex(); - aPoints->SetNumberOfPoints( nbVertex ); - - HEXA_NS::Vertex* v = NULL; - int vertexId; - for ( int i=0; i getVertex(i); - aPoints->SetPoint( i, v->getX()+6, v->getY()+6, v->getZ() ); - vertexId = reinterpret_cast(v); //v->getId(); - vtkNodeId [ vertexId ] = i; - hexaNodeId[ i ] = vertexId ; -// vtkNodeId [ vertexId ] = i+1; -// hexaNodeId[ i+1 ] = vertexId ; - } - - theGrid->SetPoints( aPoints ); - aPoints->Delete(); -// theGrid->SetCells( 0, 0, 0, 0, 0 ); - - - // Calculate cells size - int nb0DElement = _doc->countVertex(); - int nbEdge = _doc->countEdge(); - int nbFace = _doc->countQuad(); - int nbVolume = _doc->countHexa(); - - vtkIdType aCellsSize = 2*nb0DElement + 3*nbEdge + ( 4 + 1 )*nbFace + ( 8 + 1 )*nbVolume; - vtkIdType aNbCells = nb0DElement + nbEdge + nbFace + nbVolume; - - // Create cells - vtkCellArray* aConnectivity = vtkCellArray::New(); - aConnectivity->Allocate( aCellsSize, 0 ); - - vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New(); - aCellTypesArray->SetNumberOfComponents( 1 ); - aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() ); - - vtkIdList *anIdList = vtkIdList::New(); - vtkIdType iVtkElem = 0; -// vtkIdType iVtkElem = 1; //CS_TEST - int iHexaElem; - - // VERTEX - for ( int i=0; iSetNumberOfIds( 1 ); - v = _doc->getVertex(i); - iHexaElem = reinterpret_cast(v);//v->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - anIdList->SetId(0, vtkNodeId[iHexaElem]); - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_VERTEX );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); - ++iVtkElem; - } - - // EDGE - HEXA_NS::Edge* e = NULL; - HEXA_NS::Vertex* vertexElem = NULL; - for ( int i=0; iSetNumberOfIds( 2 ); - e = _doc->getEdge(i); - iHexaElem = reinterpret_cast(e); //e->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - - for( vtkIdType j = 0; j< 2; ++j ){ //j< e->countVertex(); ++j ){ - vertexElem = e->getVertex( j ); - anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); - } - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_LINE );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); - ++iVtkElem; - } - - // QUAD - HEXA_NS::Quad* q = NULL; - HEXA_NS::Quad* quadElem = NULL; - for ( int i=0; iSetNumberOfIds( 4 ); - q = _doc->getQuad(i); - iHexaElem = reinterpret_cast(q); //q->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - - for( vtkIdType j = 0; j< 4; ++j ){ - vertexElem = q->getVertex( j ); - anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); - } - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_QUAD );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); - ++iVtkElem; - } - - // HEXA - HEXA_NS::Hexa* h = NULL; - HEXA_NS::Hexa* hexaElem = NULL; - std::map connectivity; - connectivity[0] = 0; - connectivity[1] = 1; - connectivity[2] = 3; - connectivity[3] = 2; - connectivity[4] = 4; - connectivity[5] = 5; - connectivity[6] = 7; - connectivity[7] = 6; - for ( int i=0; iSetNumberOfIds( 8 ); - h = _doc->getHexa(i); - iHexaElem = reinterpret_cast(h); //q->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - - for( vtkIdType j = 0; j< 8; ++j ){ - vertexElem = h->getVertex( j );// ); - anIdList->SetId( connectivity[j], vtkNodeId[ reinterpret_cast(vertexElem) ]);//vertexElem->getId() ]); - } - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_HEXAHEDRON ); - ++iVtkElem; - } - - -// 0 1 2 3 4 5 6 7 -// V_ACE, V_ACF, V_ADE, V_ADF, V_BCE, V_BCF, V_BDE, V_BDF, -// -// 0 1 3 2 4 5 7 6 - - // Insert cells in grid - VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); - aCellLocationsArray->SetNumberOfComponents( 1 ); - aCellLocationsArray->SetNumberOfTuples( aNbCells ); -// std::cout << "aNbCells =>" << aNbCells << std::endl; - - aConnectivity->InitTraversal(); - for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ){ - aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); - } - theGrid->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); - - aCellLocationsArray->Delete(); - aCellTypesArray->Delete(); - aConnectivity->Delete(); - anIdList->Delete(); - //std::cout << "theGrid->GetNumberOfCells()" << theGrid->GetNumberOfCells() << std::endl; - - return theGrid; -} -/* -{ - vtkUnstructuredGrid* theGrid = vtkUnstructuredGrid::New(); - - _doc->reorderFaces(); //CS_TEST - - std::map vtkNodeId; - std::map hexaNodeId; - - std::vector tab_vertex; - HEXA_NS::Edges tab_edge; - - _doc->getAssoVertices (tab_vertex); - _doc->getAssoEdges (tab_edge); - - int nb0DElement = tab_vertex.size(); - int nbEdge = tab_edge.size(); - int nbFace = 0; - int nbVolume = 0; - - // Create points - vtkPoints* aPoints = vtkPoints::New(); - int nbVertex = nb0DElement; - aPoints->SetNumberOfPoints( nbVertex ); - - HEXA_NS::Vertex* v = NULL; - int vertexId; - for ( int i=0; i getVertex(i); - aPoints->SetPoint( i, v->getX() + 1, v->getY() + 1, v->getZ() ); - vertexId = reinterpret_cast(v); //v->getId(); - vtkNodeId [ vertexId ] = i; - hexaNodeId[ i ] = vertexId ; -// vtkNodeId [ vertexId ] = i+1; -// hexaNodeId[ i+1 ] = vertexId ; - } - - theGrid->SetPoints( aPoints ); - aPoints->Delete(); -// theGrid->SetCells( 0, 0, 0, 0, 0 ); - - // Calculate cells size - - vtkIdType aCellsSize = 2*nb0DElement + 3*nbEdge + ( 4 + 1 )*nbFace + ( 8 + 1 )*nbVolume; - vtkIdType aNbCells = nb0DElement + nbEdge + nbFace + nbVolume; - - // Create cells - vtkCellArray* aConnectivity = vtkCellArray::New(); - aConnectivity->Allocate( aCellsSize, 0 ); - - vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New(); - aCellTypesArray->SetNumberOfComponents( 1 ); - aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() ); - - vtkIdList *anIdList = vtkIdList::New(); - vtkIdType iVtkElem = 0; -// vtkIdType iVtkElem = 1; //CS_TEST - int iHexaElem; - - // VERTEX - for ( int i=0; iSetNumberOfIds( 1 ); - v = _doc->getVertex(i); // Abu - // v = tab_vertex [i]; - iHexaElem = reinterpret_cast(v);//v->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - anIdList->SetId(0, vtkNodeId[iHexaElem]); - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_VERTEX );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); - ++iVtkElem; - } - - // EDGE - HEXA_NS::Edge* e = NULL; - HEXA_NS::Vertex* vertexElem = NULL; - for ( int i=0; iSetNumberOfIds( 2 ); - // e = _doc->getEdge(i); // Abu - e = tab_edge [i]; - iHexaElem = reinterpret_cast(e); //e->getId(); - vtkElemsId[iHexaElem] = iVtkElem; - hexaElemsId[iVtkElem] = iHexaElem; - - for( vtkIdType j = 0; j< 2; ++j ){ //j< e->countVertex(); ++j ){ - vertexElem = e->getVertex( j ); - anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); - } - aConnectivity->InsertNextCell( anIdList ); - aCellTypesArray->InsertNextValue( VTK_LINE );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); - ++iVtkElem; - } - - -// 0 1 2 3 4 5 6 7 -// V_ACE, V_ACF, V_ADE, V_ADF, V_BCE, V_BCF, V_BDE, V_BDF, -// -// 0 1 3 2 4 5 7 6 - - // Insert cells in grid - VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); - aCellLocationsArray->SetNumberOfComponents( 1 ); - aCellLocationsArray->SetNumberOfTuples( aNbCells ); -// std::cout << "aNbCells =>" << aNbCells << std::endl; - - aConnectivity->InitTraversal(); - for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ){ - aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); - } - theGrid->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); - - aCellLocationsArray->Delete(); - aCellTypesArray->Delete(); - aConnectivity->Delete(); - anIdList->Delete(); - //std::cout << "theGrid->GetNumberOfCells()" << theGrid->GetNumberOfCells() << std::endl; - - return theGrid; -} -*/ -// =============================================================== Abu : Fin - - -// DocumentGraphicView::DocumentGraphicView(SalomeApp_Application* app, SUIT_ViewWindow *suitView, QWidget *parent) -DocumentGraphicView::DocumentGraphicView( LightApp_Application* app, SUIT_ViewWindow *suitView, QWidget *parent ) - : QAbstractItemView(parent), - _suitView( suitView ), - _documentActor( 0 ), - _associateActor (NULL), // Abu - _currentChanged( false ), - firstUpdate(true) -{ -// MESSAGE("DocumentGraphicView::DocumentGraphicView() app"<getViewPort(); -// _suitView->viewport(); -// _suitView->installEventFilter(this); -} - -DocumentGraphicView::~DocumentGraphicView() -{ -} - -void DocumentGraphicView::setWindowTitle(const QString& title) -{ - _suitView->setWindowTitle( QString("hexablock : ") + title ); -} - -void DocumentGraphicView::onPatternDatachanged() -{ - MESSAGE("DocumentGraphicView::onPatternDatachanged(){"); - update(); - MESSAGE("}"); -} - - -void DocumentGraphicView::update() -{ - MESSAGE("DocumentGraphicView::update(){"); - - SVTK_ViewWindow* theVTKViewWindow = dynamic_cast(_suitView); -// PatternDataModel* theModel = dynamic_cast( model() ); - DocumentModel* theModel = dynamic_cast( model() ); - MESSAGE("model()"<documentImpl(); - QString theDocumentEntry = theModel->documentEntry(); - - if ( _documentActor ){ - theVTKViewWindow->RemoveActor( _documentActor ); - _documentActor->Delete(); - } - _documentActor = new Document_Actor( theDocumentImpl, theDocumentEntry ); - theVTKViewWindow->AddActor( _documentActor ); - - QString autreDocentry = "essai"; - // -------------------- Abu debut - if (HEXA_NS::special_option()) - { - if (_associateActor != NULL) - { - theVTKViewWindow->RemoveActor( _associateActor ); - _associateActor->Delete(); - } - // _associateActor = new Associate_Actor( theDocumentImpl, theDocumentEntry ); - _associateActor = new Associate_Actor( theDocumentImpl, autreDocentry ); - theVTKViewWindow->AddActor( _associateActor ); - } - // -------------------- Abu fin - - // display HEXABLOCK document model -// vtkSmartPointer style = vtkSmartPointer::New(); -// theVTKViewWindow->GetInteractor()->PushInteractorStyle(style); -// style->SetCurrentRenderer(theVTKViewWindow->getRenderer()); - -// theVTKViewWindow->SetInteractionStyle(0); -// theVTKViewWindow->SetDynamicPreSelection (true); - theVTKViewWindow->getRenderer()->Render(); - theVTKViewWindow->Repaint(); - if (firstUpdate) - { - theVTKViewWindow->onFitAll(); - firstUpdate = false; - } -// theVTKViewWindow->GetInteractorStyle()->HighlightProp(_documentActor); -// theVTKViewWindow->getView()->SetPreselectionProp(0., 1., 0., 2.); -// theVTKViewWindow->getView()->SetTransparency(_documentActor->getIO(), 0.2); - - // myVTKViewWindow->SetSelectionMode( ActorSelection ); - // theVTKViewWindow->SetSelectionMode( NodeSelection ); - // myVTKViewWindow->SetSelectionMode( FaceSelection ); - MESSAGE("}"); -} - - -/******************************************************************************** -* ABSTRACT METHOD ( MUST BE IMPLEMENTED ) -********************************************************************************/ - -/* - Returns the item that covers the coordinate given in the view. -*/ - -QModelIndex DocumentGraphicView::indexAt(const QPoint &point) const -{ - MESSAGE("DocumentGraphicView::indexAt(){"); - MESSAGE("}"); - return QModelIndex(); -} - -void DocumentGraphicView::scrollTo(const QModelIndex &index, ScrollHint) -{ - MESSAGE("DocumentGraphicView::scrollTo(){"); - MESSAGE("* item is: " << index.data().toString().toStdString()); - MESSAGE("}"); -} - -/* - Returns the position of the item in viewport coordinates. -*/ -QRect DocumentGraphicView::visualRect(const QModelIndex &index) const -{ - MESSAGE("DocumentGraphicView::visualRect(){"); - MESSAGE("* item is: " << index.data().toString().toStdString()); - MESSAGE("}"); - return QRect(); -} - -// PROTECTED : -int DocumentGraphicView::horizontalOffset() const -{ - MESSAGE("DocumentGraphicView::horizontalOffset(){"); - MESSAGE("}"); - return horizontalScrollBar()->value(); -} - -bool DocumentGraphicView::isIndexHidden(const QModelIndex &index) const -{ - MESSAGE("DocumentGraphicView::isIndexHidden(){"); - MESSAGE("* item is: " << index.data().toString().toStdString()); - MESSAGE("}"); - return false; -} - -QModelIndex DocumentGraphicView::moveCursor(QAbstractItemView::CursorAction cursorAction, - Qt::KeyboardModifiers /*modifiers*/) -{ - MESSAGE("DocumentGraphicView::moveCursor(){"); - QModelIndex current = currentIndex(); - MESSAGE("* current is: " << current.data(Qt::DisplayRole).toString().toStdString()); - MESSAGE("}"); - return current; -} - -/* - Find the indices corresponding to the extent of the selection. -*/ -void DocumentGraphicView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) -{ - MESSAGE("DocumentGraphicView::setSelection(){"); - MESSAGE("}"); -} - - -int DocumentGraphicView::verticalOffset() const -{ - MESSAGE("DocumentGraphicView::verticalOffset(){"); - MESSAGE("}"); - return verticalScrollBar()->value(); -} - -/* - Returns a region corresponding to the selection in viewport coordinates. -*/ -QRegion DocumentGraphicView::visualRegionForSelection(const QItemSelection &selection) const -{ - MESSAGE("DocumentGraphicView::visualRegionForSelection(){"); - MESSAGE("}"); - return QRegion(); -} - - - - -/******************************************************************************** -* PROTECTED SLOTS -********************************************************************************/ -void DocumentGraphicView::closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ) -{ - MESSAGE("DocumentGraphicView::closeEditor(){"); - MESSAGE("* hint is: " << hint); - MESSAGE("}"); -} - -void DocumentGraphicView::commitData ( QWidget * editor ) -{ - MESSAGE("DocumentGraphicView::commitData(){"); - MESSAGE("}"); -} - -void DocumentGraphicView::currentChanged( const QModelIndex & current, const QModelIndex & previous ) -{ -// MESSAGE("DocumentGraphicView::currentChanged(){"); -// MESSAGE("* current is: " << current.data().toString().toStdString()); -// MESSAGE("* previous is: " << previous.data().toString().toStdString()); -// MESSAGE("}"); -// openPersistentEditor( current ); - _currentChanged = true; -} - -void DocumentGraphicView::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) -{ -// MESSAGE("DocumentGraphicView::dataChanged(){"); -// MESSAGE("* topLeft is: " << topLeft.data().toString().toStdString()); -// MESSAGE("* bottomRight is: " << bottomRight.data().toString().toStdString()); -// MESSAGE("}"); - update(); - _currentChanged = false; -// updateObject(topLeft); -} - -void DocumentGraphicView::editorDestroyed ( QObject * editor ) -{ - MESSAGE("DocumentGraphicView::editorDestroyed(){"); - MESSAGE("}"); -} - -void DocumentGraphicView::rowsAboutToBeRemoved ( const QModelIndex & parent, int start, int end ) -{ -// MESSAGE("DocumentGraphicView::rowsAboutToBeRemoved (){"); -// MESSAGE("* parent is: " << parent.data(Qt::DisplayRole).toString().toStdString()); -// MESSAGE("* start is: " << start); -// MESSAGE("* end is: " << end); -// MESSAGE("}"); -} - -void DocumentGraphicView::rowsInserted ( const QModelIndex & parent, int start, int end ) -{ -// MESSAGE("DocumentGraphicView::rowsInserted(){"); -// MESSAGE("* parent is: " << parent.data(Qt::DisplayRole).toString().toStdString()); -// MESSAGE("* start is: " << start); -// MESSAGE("* end is: " << end); -// MESSAGE("}"); -} - -void DocumentGraphicView::selectionChanged( const QItemSelection & selected, const QItemSelection & deselected ) -{ - MESSAGE("DocumentGraphicView::selectionChanged(){"); - foreach( const QModelIndex& isel, selected.indexes() ){ - MESSAGE("* selected : " << isel.data().toString().toStdString()); - } - foreach( const QModelIndex& iunsel, deselected.indexes() ){ - MESSAGE("* unselected : " << iunsel.data().toString().toStdString()); - } - MESSAGE("}"); -} - -void DocumentGraphicView::updateGeometries () -{ - MESSAGE("DocumentGraphicView::updateGeometries (){"); - MESSAGE("}"); -} - -SUIT_ViewWindow* DocumentGraphicView::get_SUIT_ViewWindow() -{ - return _suitView; -} - -// bool DocumentGraphicView::canBeDisplayed( const QString& entry, const QString& viewer_type ) const //CS_TODO -// { -// bool result = false; -// -// result = (viewer_type==SVTK_Viewer::Type()); -// // QStringList es = entry.split( "_" );22 -// // bool result = ( es.count() == 3 && es[ 0 ] == "ATOMSOLVGUI" && viewer_type == SVTK_Viewer::Type() ); -// // // printf ( " canBeDisplayed : entry = %s, count = %d, res = %d \n", entry.latin1(), es.count(), result ); -// std::cout << "canBeDisplayed => "<< result << std::endl; -// return result; // entry of an atom for sure -// } - -// SALOME_Prs* HEXABLOCKGUI_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame) -// { -// SALOME_Prs* prs = 0; -// -// SALOME_View* aViewFrame = theViewFrame ? theViewFrame : GetActiveView(); -// -// if ( aViewFrame ) -// { -// SVTK_Viewer* vtk_viewer = dynamic_cast( aViewFrame ); -// if (vtk_viewer) -// { -// SUIT_ViewWindow* wnd = vtk_viewer->getViewManager()->getActiveView(); -// SALOME_Actor* anActor = myGraphicView->FindActorByEntry( wnd, entry.toLatin1().data() ); -// if (!anActor) -// { -// // anActor = myGraphicView->CreateActor( study()->studyDS(), entry.toLatin1().data(), true ); -// anActor = myGraphicView->CreateActor(entry.toLatin1().data()); -// } -// if (anActor) -// { -// // Display actor : -// SVTK_ViewWindow* vtkWnd = dynamic_cast (wnd); -// if (vtkWnd != NULL) -// { -// vtkWnd->AddActor(anActor); -// vtkWnd->Repaint(); -// prs = LightApp_Displayer::buildPresentation(entry.toLatin1().data(), aViewFrame); -// } -// } -// if (prs) -// { -// UpdatePrs(prs); -// } -// else if (anActor) -// { -// //SMESH::RemoveActor( vtk_viewer->getViewManager()->getActiveView(), anActor ); -// std::cout << "Remove Actor" << std::endl; -// } -// } -// } -// -// return prs; -// } - -// SALOME_Prs* SMESHGUI_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame ) -// { -// SALOME_Prs* prs = 0; -// -// SALOME_View* aViewFrame = theViewFrame ? theViewFrame : GetActiveView(); -// -// if ( aViewFrame ) -// { -// SVTK_Viewer* vtk_viewer = dynamic_cast( aViewFrame ); -// if( vtk_viewer ) -// { -// SUIT_ViewWindow* wnd = vtk_viewer->getViewManager()->getActiveView(); -// SMESH_Actor* anActor = SMESH::FindActorByEntry( wnd, entry.toLatin1().data() ); -// if( !anActor ) -// anActor = SMESH::CreateActor( study()->studyDS(), entry.toLatin1().data(), true ); -// if( anActor ) -// { -// SMESH::DisplayActor( wnd, anActor ); -// prs = LightApp_Displayer::buildPresentation( entry.toLatin1().data(), aViewFrame ); -// } -// if( prs ) -// UpdatePrs( prs ); -// else if( anActor ) -// SMESH::RemoveActor( vtk_viewer->getViewManager()->getActiveView(), anActor ); -// } -// } -// -// return prs; -// } - -// -// void DocumentGraphicView::RemoveActor(SUIT_ViewWindow *theWnd, SALOME_Actor* theActor) -// { -// std::cout << "RemoveActor() : 1" << std::endl; -// SVTK_ViewWindow* myViewWindow = dynamic_cast(theWnd); -// // SVTK_ViewWindow* myViewWindow = dynamic_cast(_suitView); -// if (myViewWindow != NULL) -// { -// myViewWindow->RemoveActor(theActor); -// if(theActor->hasIO()) -// { -// std::cout << "RemoveActor() : 2" << std::endl; -// Handle(SALOME_InteractiveObject) anIO = theActor->getIO(); -// if(anIO->hasEntry()) -// { -// std::cout << "RemoveActor() : 3" << std::endl; -// std::string anEntry = anIO->getEntry(); -// SalomeApp_Study* aStudy = dynamic_cast( myViewWindow->getViewManager()->study() ); -// int aStudyId = aStudy->id(); -// // TVisualObjCont::key_type aKey(aStudyId,anEntry); -// // VISUAL_OBJ_CONT.erase(aKey); -// } -// } -// theActor->Delete(); -// myViewWindow->Repaint(); -// std::cout << "RemoveActor() : 4" << std::endl; -// } -// } - -// bool DocumentGraphicView::eventFilter(QObject *obj, QEvent *event) -// { -// std::cout << event->type() << std::endl; -// // if ( event->type() == QEvent::FocusIn ){ //QEvent::KeyPress) { -// // return false; -// // } else { -// // // standard event processing -// // // return QObject::eventFilter(obj, event); -// -// if ( event->type() == QEvent::Paint ) { //QEvent::FocusIn ){ -// std::cout << "PAINTTTTTTTTTT"<< std::endl; -// // loadVTK( "/tmp/load.vtk"); //CS_TEST -// } -// return _suitView->event(event); -// // } -// } -// -// -void DocumentGraphicView::setModel ( QAbstractItemModel * model ) -{ - MESSAGE("DocumentGraphicView::setModel (){"); - QAbstractItemView::setModel( model ); - -// PatternDataModel* pdm = dynamic_cast(model); -// MESSAGE("pdm"<(model); - MESSAGE("dm"<getName() ); - connect( dm, SIGNAL(patternDataChanged() ), this, SLOT ( onPatternDatachanged() ) ); - connect( dm, SIGNAL( nameChanged(const QString&) ), this, SLOT ( setWindowTitle(const QString&) ) ); - - } - - -} - -// void DocumentGraphicView::loadVTK( const QString& path ) //CS_TEST -// { -// std::cout << "DocumentGraphicView::loadVTK=>"<(_suitView); -// -// // vtkStructuredGridReader -// vtkUnstructuredGridReader* r = vtkUnstructuredGridReader::New(); -// // r->SetFileName( path.toLocal8Bit().constData() ); -// r->SetInputString( vtkData.toLocal8Bit().constData() ); -// r->SetReadFromInputString( true ); -// r->Update(); -// -// vtkUnstructuredGrid* myGrid = r->GetOutput();//vtkUnstructuredGrid::New(); -// std::cout << "GetNumberOfCells =>"<< myGrid->GetNumberOfCells(); -// // Create and display actor -// -// vtkDataSetMapper* myMapper = vtkDataSetMapper::New(); -// myMapper->SetInput(myGrid); -// -// // if ( myPreviewActor ){ -// // myVTKViewWindow->RemoveActor(myPreviewActor); -// // myPreviewActor->Delete(); -// // } -// -// SALOME_Actor* myPreviewActor = SALOME_Actor::New(); -// myPreviewActor = SALOME_Actor::New(); -// Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject(QString::number( reinterpret_cast(_hexaDocument) ),"HEXABLOCK");//,theName); -// myPreviewActor->setIO(anIO); -// -// // myPreviewActor->PickableOff(); -// myPreviewActor->SetVisibility( true );//VisibilityOff(); -// myPreviewActor->SetPickable( true ); -// myPreviewActor->SetMapper(myMapper); -// -// vtkProperty* aProp = vtkProperty::New(); -// // aProp->SetRepresentationToWireframe(); -// aProp->SetRepresentationToSurface(); -// aProp->EdgeVisibilityOn (); -// -// // aProp->SetColor(10, 10, 250); -// aProp->SetPointSize(5); -// myPreviewActor->SetProperty(aProp); -// aProp->Delete(); -// -// /*vtkProperty* myBackProp = vtkProperty::New(); -// GetColor( "SMESH", "backface_color", aBackRGB[0], aBackRGB[1], aBackRGB[2], QColor( 0, 0, 255 ) ); -// myBackProp->SetColor( aBackRGB[0], aBackRGB[1], aBackRGB[2] ); -// myPreviewActor->SetBackfaceProperty( myBackProp ); -// myBackProp->Delete()*/; -// myVTKViewWindow->AddActor(myPreviewActor); -// myVTKViewWindow->getRenderer()->Render(); -// myVTKViewWindow->Repaint(); -// myVTKViewWindow->onFitAll(); -// -// myVTKViewWindow->SetSelectionMode( ActorSelection ); -// // myVTKViewWindow->SetSelectionMode( NodeSelection ); -// // myVTKViewWindow->SetSelectionMode( EdgeSelection ); -// // myVTKViewWindow->SetSelectionMode( FaceSelection ); -// } - -// void DocumentGraphicView::rowsInserted ( const QModelIndex & parent, int start, int end ) -// { -// -// // std::cout << "DocumentGraphicView::rowsInserted : " << parent.data().toString().toStdString() << std::endl; -// QModelIndex newRow; -// -// SVTK_ViewWindow* myViewWindow = dynamic_cast(_suitView); -// SUIT_ViewManager* vman = myViewWindow->getViewManager(); -// SUIT_ViewModel* vmodel = vman->getViewModel(); -// -// for ( int i = start; i<= end; ++i ){ -// newRow = parent.child(i,0); -// // std::cout << "newRow.data().toString() =>" << newRow.data().toString().toStdString() << std::endl; -// QString entry = newRow.data(HEXA_ENTRY_ROLE).toString();//.toStdString(); -// Display(entry, true, dynamic_cast(vmodel)); -// UpdateViewer(); -// -// // addObject(newRow); -// } -// } diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentGraphicView.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentGraphicView.hxx deleted file mode 100755 index b0e648d..0000000 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentGraphicView.hxx +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright (C) 2009-2012 CEA/DEN, EDF R&D -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library 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 -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// - -#ifndef _HEXABLOCKGUI_DOCUMENTGRAPHICVIEW_HXX_ -#define _HEXABLOCKGUI_DOCUMENTGRAPHICVIEW_HXX_ - - -// SALOME GUI includes -#include -// #include -#include -#include -#include -#include -#include - -// #include -// #include -// #include - -#include -#include -#include -#include -#include -#include -#include -#include - -// class LightApp_Displayer; -// class SalomeApp_Application; -class LightApp_Application; -class SALOME_Actor; - -// class vtkLookupTable ; -// class vtkPoints ; -// class vtkCellArray ; -// class vtkFloatArray ; -// class vtkActor ; -// class vtkPolyData; - - -class vtkUnstructuredGrid; - - -namespace HEXABLOCK -{ - - namespace GUI - { - class hexablockInteractorStyle : public SVTK_InteractorStyle - { - public: - hexablockInteractorStyle() {}; - virtual ~hexablockInteractorStyle() {}; - - public: - static hexablockInteractorStyle* New() - { - return new hexablockInteractorStyle; - }; - virtual void HighlightActor2D(vtkActor2D* actor2D) {std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% HIGHLIGHT PROP 2D%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl;}; - virtual void HighlightProp(vtkProp* prop) {std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% HIGHLIGHT PROP %%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl;}; - virtual void HighlightProp3D(vtkProp3D* prop3D) {std::cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% HIGHLIGHT PROP 3D%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << std::endl;}; - }; - - class Document_Actor : public SALOME_Actor - { - public: - Document_Actor(HEXA_NS::Document* doc, const QString& entry); - virtual ~Document_Actor(); - - std::map vtkElemsId; - std::map hexaElemsId; - - vtkUnstructuredGrid* getUnstructuredGrid(); - private: - HEXA_NS::Document* _doc; - }; - - // Abu - class Associate_Actor : public SALOME_Actor - { - public: - Associate_Actor(HEXA_NS::Document* doc, const QString& entry); - virtual ~Associate_Actor() {} - - std::map vtkElemsId; - std::map hexaElemsId; - - vtkUnstructuredGrid* getUnstructuredGrid(); - private: - HEXA_NS::Document* _doc; - }; - - - /******************************************************************************** - * DocumentGraphicView - ********************************************************************************/ - class DocumentGraphicView : public QAbstractItemView - { - Q_OBJECT - - public: - DocumentGraphicView( LightApp_Application* app, SUIT_ViewWindow *suitView, QWidget *parent = 0 ); - virtual ~DocumentGraphicView(); - - - void setModel ( QAbstractItemModel * model ); - - - SUIT_ViewWindow* get_SUIT_ViewWindow(); -// static SALOME_Actor* FindActorByEntry(SUIT_ViewWindow *theWindow, const char* theEntry); - -// void loadVTK( const QString& path ); - void update();//mise à jours de la vue : reconstruction complète - -// bool eventFilter(QObject *obj, QEvent *event); -// virtual void setModel ( QAbstractItemModel * model ); - - QModelIndex indexAt(const QPoint &point) const; - void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible); - QRect visualRect(const QModelIndex &index) const; - -// public: -// virtual bool canBeDisplayed( const QString& /*entry*/, const QString& /*viewer_type*/ ) const; - - public slots: - void setWindowTitle(const QString& title); - void onPatternDatachanged(); - - protected slots: - virtual void closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ); - virtual void commitData ( QWidget * editor ); - virtual void currentChanged ( const QModelIndex & current, const QModelIndex & previous ); - virtual void dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ); - virtual void editorDestroyed ( QObject * editor ); - virtual void rowsAboutToBeRemoved ( const QModelIndex & parent, int start, int end ); - virtual void rowsInserted ( const QModelIndex & parent, int start, int end ); - virtual void selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected ); - virtual void updateGeometries (); - - protected: - int horizontalOffset() const; - bool isIndexHidden(const QModelIndex &index) const; - QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, - Qt::KeyboardModifiers modifiers); - void setSelection(const QRect&, QItemSelectionModel::SelectionFlags command); - int verticalOffset() const; - QRegion visualRegionForSelection(const QItemSelection &selection) const; - -// protected: -// virtual SALOME_Prs* buildPresentation( const QString&, SALOME_View* = 0 ); - - private: - SUIT_ViewWindow *_suitView; - Document_Actor *_documentActor; - Associate_Actor *_associateActor; - bool _currentChanged; - bool firstUpdate; - }; - } -} - - - - -#endif diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentItem.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentItem.cxx index 4b616ff..1530c66 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentItem.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentItem.cxx @@ -19,6 +19,9 @@ #include "HEXABLOCKGUI_DocumentItem.hxx" #include "HexShape.hxx" +#include "HEXABLOCKGUI_SalomeTools.hxx" +#include "HEXABLOCKGUI_DocumentModel.hxx" +#include "HexAssoEdge.hxx" #include @@ -33,7 +36,9 @@ QStandardItem() m_type = ttype; if (m_DocElt != NULL) + { setText(m_DocElt->getName()); + } setData( treeRole, HEXA_TREE_ROLE ); setData( entry, HEXA_DOC_ENTRY_ROLE); setData( IDptr(), HEXA_ENTRY_ROLE ); @@ -44,19 +49,29 @@ QStandardItem() QString entry; if (m_type == VERTEXITEM) //Vertex { - HEXA_NS::Shape* assoc = m_DocElt->getAssociation(); - if ( assoc ){ - entry = QString(assoc->ident.c_str()); - setData( entry + ";" , HEXA_ASSOC_ENTRY_ROLE ); - } + HEXA_NS::Vertex* vertex = (HEXA_NS::Vertex*) m_DocElt; + double assocX, assocY, assocZ; + vertex->getAssoCoord(assocX, assocY, assocZ); + entry = QString::number(assocX)+","+QString::number(assocY)+","+QString::number(assocZ); + setData( entry, HEXA_ASSOC_ENTRY_ROLE ); } else if (m_type == EDGEITEM) { QString entries; - const HEXA_NS::Shapes& assocs = ((HEXA_NS::Edge*)m_DocElt)->getAssociations(); - for( HEXA_NS::Shapes::const_iterator anAssoc = assocs.begin(); anAssoc != assocs.end(); ++anAssoc ){ - entry = (*anAssoc)->ident.c_str(); - entries += entry + ";"; + HEXA_NS::Edge* edge = (HEXA_NS::Edge*) m_DocElt; + HEXA_NS::NewShape* mainShape; + HEXA_NS::EdgeShape* geomEdge; + HEXA_NS::AssoEdge* anEdgeAssoc; + int nbAssocs = edge->countAssociation(); + for (int i = 0; i < nbAssocs; ++i) + { + anEdgeAssoc = edge->getAssociation(i); + if (anEdgeAssoc == NULL) continue; + geomEdge = anEdgeAssoc->getEdgeShape(); + if (geomEdge == NULL) continue; + mainShape = geomEdge->getParentShape(); + if (mainShape == NULL) continue; // => les generatrices ne sont pas gerees pour le moment + entries += QString(mainShape->getName())+","+QString::number(geomEdge->getIdent())+";"; } if ( !entries.isEmpty() ) setData( entries, HEXA_ASSOC_ENTRY_ROLE ); @@ -64,10 +79,17 @@ QStandardItem() else if (m_type == QUADITEM) { QString entries; - const HEXA_NS::Shapes& assocs = ((HEXA_NS::Quad*)m_DocElt)->getAssociations(); - for( HEXA_NS::Shapes::const_iterator anAssoc = assocs.begin(); anAssoc != assocs.end(); ++anAssoc ){ - entry = (*anAssoc)->ident.c_str(); - entries += entry + ";"; + HEXA_NS::Quad* quad = (HEXA_NS::Quad*) m_DocElt; + HEXA_NS::NewShape* mainShape; + HEXA_NS::FaceShape* geomFace; + int nbAssocs = quad->countAssociation(); + for (int i = 0; i < nbAssocs; ++i) + { + geomFace = quad->getAssociation(i); + if (geomFace == NULL) continue; + mainShape = geomFace->getParentShape(); + if (mainShape == NULL) continue; + entries += QString(mainShape->getName()) + "," + QString::number(geomFace->getIdent()) + ";"; } if ( !entries.isEmpty() ) setData( entries, HEXA_ASSOC_ENTRY_ROLE ); @@ -75,22 +97,6 @@ QStandardItem() } } - -//ElementItem::ElementItem( HEXA_NS::EltBase* docElement, HexaType ttype, HexaTreeRole treeRole): -//QStandardItem() -//{ -// m_DocElt = docElement; -// m_type = ttype; -// -// if (m_DocElt != NULL) -// setText(m_DocElt->getName()); -// setData( treeRole, HEXA_TREE_ROLE ); -// setData( IDptr(), HEXA_ENTRY_ROLE ); -// -//// if (m_DocElt->isAssociated()) -//// setData( "Y" , HEXA_ASSOC_ENTRY_ROLE ); -//} - //--------------------------------------------------------------- QVariant ElementItem::data( int role ) const { @@ -106,6 +112,10 @@ QVariant ElementItem::data( int role ) const case PIPEITEM: return QVariant::fromValue( (HEXA_NS::Pipe*)m_DocElt ); case ELEMENTSITEM: return QVariant::fromValue( (HEXA_NS::Elements*)m_DocElt ); case CROSSELEMENTSITEM: return QVariant::fromValue( (HEXA_NS::CrossElements*)m_DocElt ); + case GEOMSHAPEITEM: return QVariant::fromValue( (HEXA_NS::NewShape*) m_DocElt ); + case GEOMPOINTITEM: return QVariant::fromValue( (HEXA_NS::VertexShape*) m_DocElt ); + case GEOMEDGEITEM: return QVariant::fromValue( (HEXA_NS::EdgeShape*) m_DocElt ); + case GEOMFACEITEM: return QVariant::fromValue( (HEXA_NS::FaceShape*) m_DocElt ); default: return QVariant::fromValue( m_DocElt ); } } @@ -192,6 +202,37 @@ CrossElementsItem::CrossElementsItem( HEXA_NS::CrossElements* hexaCrossElts, QSt { } +// ----------------------- GEOM (GEOMETRY) +GeomItem::GeomItem( HEXA_NS::EltBase* geomShape, QString entry, HexaType ttype, HexaTreeRole treeRole, HEXA_NS::EltBase* assoc ): + StandardElementItem(geomShape, entry, ttype, treeRole), + association(assoc) +{ +} + +// ----------------------- GEOM SHAPE (GEOMETRY) +GeomShapeItem::GeomShapeItem( HEXA_NS::NewShape* shape, HEXA_NS::EltBase* assoc ): + GeomItem(shape, QString(), GEOMSHAPEITEM, GEOMSHAPE_TREE, assoc) +{ +} + +// ----------------------- GEOM POINT (GEOMETRY) +GeomPointItem::GeomPointItem( HEXA_NS::VertexShape* geomPoint, HEXA_NS::Vertex* associatedVertex ): + GeomItem(geomPoint, QString(), GEOMPOINTITEM, GEOMPOINT_TREE, associatedVertex) +{ +} + +// ----------------------- GEOM EDGE (GEOMETRY) +GeomEdgeItem::GeomEdgeItem( HEXA_NS::EdgeShape* geomEdge, HEXA_NS::Edge* associatedEdge ): + GeomItem(geomEdge, QString(), GEOMEDGEITEM, GEOMEDGE_TREE, associatedEdge) +{ +} + +// ----------------------- GEOM FACE (GEOMETRY) +GeomFaceItem::GeomFaceItem( HEXA_NS::FaceShape* geomFace, HEXA_NS::Quad* associatedQuad ): + GeomItem(geomFace, QString(), GEOMFACEITEM, GEOMFACE_TREE, associatedQuad) +{ +} + // ----------------------- GROUP GroupItem::GroupItem( HEXA_NS::Group* hexaGroup ): QStandardItem(), diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentItem.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentItem.hxx index 8813de2..334b200 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentItem.hxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentItem.hxx @@ -34,6 +34,10 @@ #include #include #include +#include +#include +#include +#include @@ -55,6 +59,10 @@ Q_DECLARE_METATYPE( HEXA_NS::Cylinder* ); Q_DECLARE_METATYPE( HEXA_NS::Pipe* ); Q_DECLARE_METATYPE( HEXA_NS::Elements* ); Q_DECLARE_METATYPE( HEXA_NS::CrossElements* ); +Q_DECLARE_METATYPE( HEXA_NS::NewShape* ); +Q_DECLARE_METATYPE( HEXA_NS::VertexShape* ); +Q_DECLARE_METATYPE( HEXA_NS::EdgeShape* ); +Q_DECLARE_METATYPE( HEXA_NS::FaceShape* ); Q_DECLARE_METATYPE( HEXA_NS::Group* ); Q_DECLARE_METATYPE( HEXA_NS::Law* ); @@ -80,6 +88,14 @@ namespace HEXABLOCK ELEMENTSITEM, CROSSELEMENTSITEM, + EXPSHAPEITEM, + IMPSHAPEITEM, + CLOUDOFPOINTSITEM, + GEOMSHAPEITEM, + GEOMPOINTITEM, + GEOMEDGEITEM, + GEOMFACEITEM, + GROUPITEM, LAWITEM, PROPAGATIONITEM, @@ -97,6 +113,15 @@ namespace HEXABLOCK ELEMENTS_TREE, CROSSELEMENTS_TREE, + EXPLICIT_SHAPES_TREE, + IMPLICIT_SHAPES_TREE, + CLOUD_OF_POINTS_TREE, + GEOMSHAPE_TREE, + GEOMPOINT_TREE, + GEOMEDGE_TREE, + GEOMFACE_TREE, + + GROUP_TREE, LAW_TREE, PROPAGATION_TREE, @@ -112,6 +137,14 @@ namespace HEXABLOCK ELEMENTS_DIR_TREE, CROSSELEMENTS_DIR_TREE, + EXPLICIT_SHAPES_DIR_TREE, + IMPLICIT_SHAPES_DIR_TREE, + CLOUD_OF_POINTS_DIR_TREE, + GEOMSHAPE_DIR_TREE, + GEOMPOINT_DIR_TREE, + GEOMEDGE_DIR_TREE, + GEOMFACE_DIR_TREE, + GROUP_DIR_TREE, LAW_DIR_TREE, PROPAGATION_DIR_TREE @@ -172,63 +205,101 @@ namespace HEXABLOCK class VertexItem : public GraphicElementItem { public: - VertexItem( HEXA_NS::Vertex* hexaVertex, QString entry="" ); + VertexItem( HEXA_NS::Vertex* hexaVertex, QString entry = ""); }; class EdgeItem : public GraphicElementItem { public: - EdgeItem( HEXA_NS::Edge* hexaEdge, QString entry="" ); + EdgeItem( HEXA_NS::Edge* hexaEdge, QString entry = ""); }; //----------------------------------------- class QuadItem : public GraphicElementItem { public: - QuadItem( HEXA_NS::Quad* hexaQuad, QString entry="" ); + QuadItem( HEXA_NS::Quad* hexaQuad, QString entry = ""); }; //----------------------------------------- class HexaItem : public GraphicElementItem { public: - HexaItem( HEXA_NS::Hexa* hexaHexa, QString entry="" ); + HexaItem( HEXA_NS::Hexa* hexaHexa, QString entry = ""); }; //----------------------------------------- class VectorItem : public StandardElementItem { public: - VectorItem( HEXA_NS::Vector* hexaVector, QString entry="" ); + VectorItem( HEXA_NS::Vector* hexaVector, QString entry = ""); }; //----------------------------------------- class CylinderItem : public StandardElementItem { public: - CylinderItem( HEXA_NS::Cylinder* hexaCyl, QString entry="" ); + CylinderItem( HEXA_NS::Cylinder* hexaCyl, QString entry = ""); }; //----------------------------------------- class PipeItem : public StandardElementItem { public: - PipeItem( HEXA_NS::Pipe* hexaPipe, QString entry="" ); + PipeItem( HEXA_NS::Pipe* hexaPipe, QString entry = ""); }; //----------------------------------------- class ElementsItem : public StandardElementItem { public: - ElementsItem( HEXA_NS::Elements* hexaElements, QString entry="" ); + ElementsItem( HEXA_NS::Elements* hexaElements, QString entry = "" ); }; //----------------------------------------- class CrossElementsItem : public StandardElementItem { public: - CrossElementsItem( HEXA_NS::CrossElements* hexaCrossElts, QString entry="" ); + CrossElementsItem( HEXA_NS::CrossElements* hexaCrossElts, QString entry = ""); + }; + + //------------------------------------------------ + class GeomItem: public StandardElementItem + { + public: + GeomItem( HEXA_NS::EltBase* geomShape, QString entry, HexaType ttype, HexaTreeRole treeRole, HEXA_NS::EltBase* assoc = NULL ); + HEXA_NS::EltBase* getAssociation() const { return association; } + void setAssociation(HEXA_NS::EltBase* assoc) { association = assoc; } + + private: + HEXA_NS::EltBase* association; + }; + + //------------------------------------------------ + class GeomShapeItem: public GeomItem + { + public: + GeomShapeItem( HEXA_NS::NewShape* shape, HEXA_NS::EltBase* assoc = NULL); + }; + + //------------------------------------------------ + class GeomPointItem: public GeomItem + { + public: + GeomPointItem( HEXA_NS::VertexShape* geomPoint, HEXA_NS::Vertex* associatedVertex = NULL); }; + //------------------------------------------------ + class GeomEdgeItem: public GeomItem + { + public: + GeomEdgeItem( HEXA_NS::EdgeShape* geomEdge, HEXA_NS::Edge* associatedEdge = NULL); + }; + //------------------------------------------------ + class GeomFaceItem: public GeomItem + { + public: + GeomFaceItem( HEXA_NS::FaceShape* geomFace, HEXA_NS::Quad* associatedQuad = NULL); + }; //----------------------------------------- class GroupItem : public QStandardItem diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.cxx index 3cad03d..94240a2 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.cxx @@ -26,17 +26,33 @@ #include "HEXABLOCKGUI_DocumentModel.hxx" #include "HEXABLOCKGUI_DocumentItem.hxx" +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" #include "HEXABLOCKGUI.hxx" #include "HEXABLOCKGUI_Trace.hxx" #include "HexVertex.hxx" #include "HexShape.hxx" +#include "HexSubShape.hxx" +#include "HexAssoEdge.hxx" + #include #include "HEXABLOCKGUI_SalomeTools.hxx" +#include "MyGEOMBase_Helper.hxx" +#include "GEOM_GEOMBase.hxx" +#include "GEOM_GenericObjPtr.h" + +#include +#include +#include +#include +#include CORBA_CLIENT_HEADER(GEOM_Gen) + #include + + //#define _DEVDEBUG_ @@ -46,307 +62,491 @@ using namespace HEXABLOCK::GUI; /***************************************************************** DocumentModel -*****************************************************************/ + *****************************************************************/ // DocumentModel::DocumentModel(QObject * parent): DocumentModel::DocumentModel(HEXA_NS::Document* docIn, const QString& entryIn, QObject * parent): - QStandardItemModel(parent), - _hexaFile( new QTemporaryFile() ), - _hexaDocument( docIn ), - _entry( entryIn ), -// _hexaDocument( new HEXA_NS::Document("/tmp/doc.hex") ), //CS_TODO - - _vertexDirItem( new QStandardItem(tr("TREE_ITEM_VERTEX")) ), - _edgeDirItem( new QStandardItem(tr("TREE_ITEM_EDGE")) ), - _quadDirItem( new QStandardItem(tr("TREE_ITEM_QUAD")) ), - _hexaDirItem( new QStandardItem(tr("TREE_ITEM_HEXA")) ), - - _vectorDirItem( new QStandardItem(tr("TREE_ITEM_VECTOR")) ), - _cylinderDirItem( new QStandardItem(tr("TREE_ITEM_CYLINDER")) ), - _pipeDirItem( new QStandardItem(tr("TREE_ITEM_PIPE")) ), - _elementsDirItem( new QStandardItem(tr("TREE_ITEM_ELEMENT")) ), - _crossElementsDirItem( new QStandardItem(tr("TREE_ITEM_CROSSELEMENT")) ), - - _groupDirItem( new QStandardItem(tr("TREE_ITEM_GROUP")) ), - - _lawDirItem( new QStandardItem(tr("TREE_ITEM_LAW")) ), - _propagationDirItem( new QStandardItem(tr("TREE_ITEM_PROPAGATION")) ), - - _vertexItemFlags( Qt::NoItemFlags ), - _edgeItemFlags( Qt::NoItemFlags ), - _quadItemFlags( Qt::NoItemFlags ), - _hexaItemFlags( Qt::NoItemFlags ), - _vectorItemFlags( Qt::NoItemFlags ), - _cylinderItemFlags( Qt::NoItemFlags ), - _pipeItemFlags( Qt::NoItemFlags ), - _elementsItemFlags( Qt::NoItemFlags ), - _crossElementsItemFlags( Qt::NoItemFlags ), - _disallowEdition( false ) -{ -// setColumnCount( 4 ); //CS_TEST - if ( !_hexaDocument && _hexaFile->open() ){ - _hexaDocument = new HEXA_NS::Document( _hexaFile->fileName().toLatin1() ); - _hexaDocument->reorderFaces(); - } - - QStandardItem *parentItem = invisibleRootItem(); -// parentItem->setData( QString::number( reinterpret_cast(_hexaDocument) ), HEXA_ENTRY_ROLE ); - parentItem->setData( _entry, HEXA_ENTRY_ROLE ); - - _vertexDirItem->setData( VERTEX_DIR_TREE, HEXA_TREE_ROLE ); - _edgeDirItem->setData( EDGE_DIR_TREE, HEXA_TREE_ROLE ); - _quadDirItem->setData( QUAD_DIR_TREE, HEXA_TREE_ROLE ); - _hexaDirItem->setData( HEXA_DIR_TREE, HEXA_TREE_ROLE ); - - _vectorDirItem->setData( VECTOR_DIR_TREE, HEXA_TREE_ROLE ); - _cylinderDirItem->setData( CYLINDER_DIR_TREE, HEXA_TREE_ROLE ); - _pipeDirItem->setData( PIPE_DIR_TREE, HEXA_TREE_ROLE ); - _elementsDirItem->setData( ELEMENTS_DIR_TREE, HEXA_TREE_ROLE ); - _crossElementsDirItem->setData( CROSSELEMENTS_DIR_TREE, HEXA_TREE_ROLE ); - - _groupDirItem->setData( GROUP_DIR_TREE, HEXA_TREE_ROLE ); - - //CS_TODO associations - - _lawDirItem->setData( LAW_DIR_TREE, HEXA_TREE_ROLE ); - _propagationDirItem->setData( PROPAGATION_DIR_TREE, HEXA_TREE_ROLE ); - - - parentItem->appendRow(_vertexDirItem); - parentItem->appendRow(_edgeDirItem); - parentItem->appendRow(_quadDirItem); - parentItem->appendRow(_hexaDirItem); - parentItem->appendRow(_vectorDirItem); - parentItem->appendRow(_cylinderDirItem); - parentItem->appendRow(_pipeDirItem); - parentItem->appendRow(_elementsDirItem); - parentItem->appendRow(_crossElementsDirItem); - parentItem->appendRow(_groupDirItem); - parentItem->appendRow(_lawDirItem); - parentItem->appendRow(_propagationDirItem); + QStandardItemModel(parent), + _hexaFile( new QTemporaryFile() ), + _hexaDocument( docIn ), + _entry( entryIn ), + // _hexaDocument( new HEXA_NS::Document("/tmp/doc.hex") ), //CS_TODO + + _vertexDirItem( new QStandardItem(tr("TREE_ITEM_VERTEX")) ), + _edgeDirItem( new QStandardItem(tr("TREE_ITEM_EDGE")) ), + _quadDirItem( new QStandardItem(tr("TREE_ITEM_QUAD")) ), + _hexaDirItem( new QStandardItem(tr("TREE_ITEM_HEXA")) ), + + _vectorDirItem( new QStandardItem(tr("TREE_ITEM_VECTOR")) ), + _cylinderDirItem( new QStandardItem(tr("TREE_ITEM_CYLINDER")) ), + _pipeDirItem( new QStandardItem(tr("TREE_ITEM_PIPE")) ), + _elementsDirItem( new QStandardItem(tr("TREE_ITEM_ELEMENT")) ), + _crossElementsDirItem( new QStandardItem(tr("TREE_ITEM_CROSSELEMENT")) ), + + _explicitShapesDirItem( new QStandardItem(tr("TREE_ITEM_EXPSHAPE")) ), + _implicitShapesDirItem( new QStandardItem(tr("TREE_ITEM_IMPSHAPE")) ), + _cloudOfPointsDirItem( new QStandardItem(tr("TREE_ITEM_CLOUD_OF_POINT")) ), + + _groupDirItem( new QStandardItem(tr("TREE_ITEM_GROUP")) ), + + _lawDirItem( new QStandardItem(tr("TREE_ITEM_LAW")) ), + _propagationDirItem( new QStandardItem(tr("TREE_ITEM_PROPAGATION")) ), + + _vertexItemFlags( Qt::NoItemFlags ), + _edgeItemFlags( Qt::NoItemFlags ), + _quadItemFlags( Qt::NoItemFlags ), + _hexaItemFlags( Qt::NoItemFlags ), + _vectorItemFlags( Qt::NoItemFlags ), + _cylinderItemFlags( Qt::NoItemFlags ), + _pipeItemFlags( Qt::NoItemFlags ), + _elementsItemFlags( Qt::NoItemFlags ), + _crossElementsItemFlags( Qt::NoItemFlags ), + + _disallowEdition( false ) +{ + // setColumnCount( 4 ); //CS_TEST + if ( !_hexaDocument && _hexaFile->open() ){ + _hexaDocument = new HEXA_NS::Document( _hexaFile->fileName().toLatin1() ); + _hexaDocument->reorderFaces(); + } + + QStandardItem *parentItem = invisibleRootItem(); + // parentItem->setData( QString::number( reinterpret_cast(_hexaDocument) ), HEXA_ENTRY_ROLE ); + parentItem->setData( _entry, HEXA_ENTRY_ROLE ); + + _vertexDirItem->setData( VERTEX_DIR_TREE, HEXA_TREE_ROLE ); + _edgeDirItem->setData( EDGE_DIR_TREE, HEXA_TREE_ROLE ); + _quadDirItem->setData( QUAD_DIR_TREE, HEXA_TREE_ROLE ); + _hexaDirItem->setData( HEXA_DIR_TREE, HEXA_TREE_ROLE ); + + _vectorDirItem->setData( VECTOR_DIR_TREE, HEXA_TREE_ROLE ); + _cylinderDirItem->setData( CYLINDER_DIR_TREE, HEXA_TREE_ROLE ); + _pipeDirItem->setData( PIPE_DIR_TREE, HEXA_TREE_ROLE ); + _elementsDirItem->setData( ELEMENTS_DIR_TREE, HEXA_TREE_ROLE ); + _crossElementsDirItem->setData( CROSSELEMENTS_DIR_TREE, HEXA_TREE_ROLE ); + + _explicitShapesDirItem->setData( EXPLICIT_SHAPES_DIR_TREE, HEXA_TREE_ROLE ); + _implicitShapesDirItem->setData( IMPLICIT_SHAPES_DIR_TREE, HEXA_TREE_ROLE ); + _cloudOfPointsDirItem->setData( CLOUD_OF_POINTS_DIR_TREE, HEXA_TREE_ROLE ); + + _groupDirItem->setData( GROUP_DIR_TREE, HEXA_TREE_ROLE ); + + //CS_TODO associations + + _lawDirItem->setData( LAW_DIR_TREE, HEXA_TREE_ROLE ); + _propagationDirItem->setData( PROPAGATION_DIR_TREE, HEXA_TREE_ROLE ); + + parentItem->appendRow(_vertexDirItem); + parentItem->appendRow(_edgeDirItem); + parentItem->appendRow(_quadDirItem); + parentItem->appendRow(_hexaDirItem); + + parentItem->appendRow(_vectorDirItem); + parentItem->appendRow(_cylinderDirItem); + parentItem->appendRow(_pipeDirItem); + parentItem->appendRow(_elementsDirItem); + parentItem->appendRow(_crossElementsDirItem); + + parentItem->appendRow(_explicitShapesDirItem); + parentItem->appendRow(_implicitShapesDirItem); +// parentItem->appendRow(_cloudOfPointsDirItem); + + parentItem->appendRow(_groupDirItem); + parentItem->appendRow(_lawDirItem); + parentItem->appendRow(_propagationDirItem); } DocumentModel::~DocumentModel() { - delete _hexaDocument; - delete _hexaFile; + if (_hexaDocument != NULL) + delete _hexaDocument; + + if (_hexaFile != NULL) + delete _hexaFile; } void DocumentModel::setName(const QString& name) { - _hexaDocument->setName( name.toLocal8Bit().constData() ); - emit nameChanged(name); + _hexaDocument->setName( name.toLocal8Bit().constData() ); + emit nameChanged(QString(_hexaDocument->getName())); } -QString DocumentModel::getName() +HEXA_NS::EltBase* DocumentModel::getHexaPtr(const QModelIndex& iElt) { - return _hexaDocument->getName(); + HEXA_NS::EltBase *elt = NULL; + switch ( /*data(iElt, HEXA_TREE_ROLE).toInt()*/iElt.data(HEXA_TREE_ROLE).toInt() ){ + case VERTEX_TREE : elt = getHexaPtr(iElt); break; + case EDGE_TREE : elt = getHexaPtr(iElt); break; + case QUAD_TREE : elt = getHexaPtr(iElt); break; + case HEXA_TREE : elt = getHexaPtr(iElt); break; + case VECTOR_TREE : elt = getHexaPtr(iElt); break; + case CYLINDER_TREE : elt = getHexaPtr(iElt); break; + case PIPE_TREE : elt = getHexaPtr(iElt); break; + case ELEMENTS_TREE : elt = getHexaPtr(iElt); break; + case CROSSELEMENTS_TREE : elt = getHexaPtr(iElt); break; + case GEOMSHAPE_TREE: elt = getHexaPtr(iElt); break; + case GEOMPOINT_TREE: elt = getHexaPtr(iElt); break; + case GEOMEDGE_TREE: elt = getHexaPtr(iElt); break; + case GEOMFACE_TREE: elt = getHexaPtr(iElt); break; + } + return elt; } -HEXA_NS::EltBase* DocumentModel::getHexaPtr(const QModelIndex& iElt) +//get the number of elements of type 'eltType' in the document +int DocumentModel::getNbrElt(HEXA_NS::EnumElt eltType) { - HEXA_NS::EltBase *elt = NULL; - switch ( /*data(iElt, HEXA_TREE_ROLE).toInt()*/iElt.data(HEXA_TREE_ROLE).toInt() ){ - case VERTEX_TREE : elt = getHexaPtr(iElt); break; - case EDGE_TREE : elt = getHexaPtr(iElt); break; - case QUAD_TREE : elt = getHexaPtr(iElt); break; - case HEXA_TREE : elt = getHexaPtr(iElt); break; - case VECTOR_TREE : elt = getHexaPtr(iElt); break; - case CYLINDER_TREE : elt = getHexaPtr(iElt); break; - case PIPE_TREE : elt = getHexaPtr(iElt); break; - case ELEMENTS_TREE : elt = getHexaPtr(iElt); break; - case CROSSELEMENTS_TREE : elt = getHexaPtr(iElt); break; - } - return elt; + if (_hexaDocument == NULL) return 0; + + return _hexaDocument->getNbrElt(eltType); +} + +//get the number of elements of type 'eltType' used in the document +int DocumentModel::getNbrUsedElt(HEXA_NS::EnumElt eltType) +{ + if (_hexaDocument == NULL) return 0; + + switch(eltType) { + case HEXA_NS::EL_VERTEX: + return _hexaDocument->countUsedVertex(); + case HEXA_NS::EL_EDGE: + return _hexaDocument->countUsedEdge(); + case HEXA_NS::EL_QUAD: + return _hexaDocument->countUsedQuad(); + case HEXA_NS::EL_HEXA: + return _hexaDocument->countUsedHexa(); + default: return 0; + } +} + +//associate a shape to the current document +bool DocumentModel::addShape(TopoDS_Shape& aShape, QString& name) +{ + if (aShape.IsNull()) return false; + return (_hexaDocument != NULL ? _hexaDocument->addShape(aShape, name.toStdString().c_str()) != NULL : false); +} + +//get the number of unused elements of type 'eltType' in the document +int DocumentModel::getNbrUnusedElt(HEXA_NS::EnumElt eltType) +{ + if (_hexaDocument == NULL) return 0; + + return getNbrElt(eltType) - getNbrUsedElt(eltType); } DocumentModel::GeomObj* DocumentModel::convertToGeomObj(GEOM::GeomObjPtr geomObjPtr) { - TopoDS_Shape aShape; - DocumentModel::GeomObj *res = NULL; - - if ( geomObjPtr && GEOMBase::GetShape(geomObjPtr.get(), aShape) && !aShape.IsNull() ) - { - res = new DocumentModel::GeomObj; - if (res == NULL) return NULL; - QString mainShapeEntry; - int subId = -1; - QString brep; - - if ( geomObjPtr->IsMainShape() ){ - mainShapeEntry = geomObjPtr->GetStudyEntry(); - brep = shape2string( aShape ).c_str(); - } else { - TopoDS_Shape shape; - TopoDS_Shape subshape; - GEOM::GEOM_Object_var mainShape = geomObjPtr->GetMainShape(); - mainShapeEntry = mainShape->GetStudyEntry(); - // CS_TODO : à optimiser - bool okShape = GEOMBase::GetShape( mainShape , shape);//,const TopAbs_ShapeEnum type = TopAbs_SHAPE ); - bool oksubShape = GEOMBase::GetShape( geomObjPtr.get(), subshape );//,const TopAbs_ShapeEnum type = TopAbs_SHAPE ); - if ( okShape && oksubShape ){ - brep = shape2string( subshape ).c_str(); - subId = GEOMBase::GetIndex( subshape, shape ); - } - } - res->name = GEOMBase::GetName( geomObjPtr.get() ); - res->entry = mainShapeEntry; - res->subid = QString::number(subId); - res->brep = brep; - res->start = 0.; - res->end = 1.; - } - - return res; + TopoDS_Shape aShape; + DocumentModel::GeomObj *res = NULL; + + if ( geomObjPtr && GEOMBase::GetShape(geomObjPtr.get(), aShape) && !aShape.IsNull() ) + { + res = new DocumentModel::GeomObj; + if (res == NULL) return NULL; + QString mainShapeEntry; + int subId = -1; + QString brep; + + if ( geomObjPtr->IsMainShape() ){ + mainShapeEntry = geomObjPtr->GetStudyEntry(); + brep = shape2string( aShape ).c_str(); + } else { + TopoDS_Shape shape; + TopoDS_Shape subshape; + GEOM::GEOM_Object_var mainShape = geomObjPtr->GetMainShape(); + mainShapeEntry = mainShape->GetStudyEntry(); + // CS_TODO : à optimiser + bool okShape = GEOMBase::GetShape( mainShape , shape); + bool oksubShape = GEOMBase::GetShape( geomObjPtr.get(), subshape ); + if ( okShape && oksubShape ){ + brep = shape2string( subshape ).c_str(); + subId = GEOMBase::GetIndex( subshape, shape ); + MESSAGE("subid = " << QString::number(subId).toStdString()); + } + } + res->shapeName = getGeomObjName(mainShapeEntry); + res->name = GEOMBase::GetName( geomObjPtr.get() ); + res->subid = QString::number(subId); + res->brep = brep; + res->start = 0.; + res->end = 1.; + } + + return res; +} + + +//Load the current Document +void DocumentModel::load() +{ + if (_hexaDocument == NULL) return; + load(_hexaDocument->getName()); } void DocumentModel::load( const QString& xmlFileName ) // Fill Data { - MESSAGE("HEXABLOCKGUI::load() => "<loadXml(xmlFileName.toLocal8Bit().constData() ); - clearAll(); + _hexaDocument->loadXml(xmlFileName.toLocal8Bit().constData() ); + clearAll(); - fillData(); - fillBuilder(); - fillAssociation(); - fillGroups(); - fillMesh(); + fillData(); + fillBuilder(); + fillGeometry(); + fillAssociation(); + fillGroups(); + fillMesh(); - emit patternDataChanged(); + emit patternDataChanged(); - // BUILDER, ASSOCIATION, GROUPS, ... CS_TODO _fillBuilderFrom( _hexaDocument ); + // BUILDER, ASSOCIATION, GROUPS, ... CS_TODO _fillBuilderFrom( _hexaDocument ); +} + +bool DocumentModel::isEmpty() const +{ + if (_hexaDocument == NULL) return true; + return _hexaDocument->isEmpty(); } void DocumentModel::save( const QString& xmlFileName ) { - MESSAGE("HEXABLOCKGUI::save() => "<save( xmlFileName.toLocal8Bit().constData() ); + _hexaDocument->save( xmlFileName.toLocal8Bit().constData() ); +} + +QString DocumentModel::getName() +{ + return _hexaDocument->getName(); } void DocumentModel::updateData() { - clearData(); - fillData(); - clearMesh(); - fillMesh(); - emit patternDataChanged(); + clearData(); + fillData(); + clearMesh(); + fillMesh(); + emit patternDataChanged(); +} + +void DocumentModel::refresh() +{ + clearAll(); + + fillData(); + fillBuilder(); + fillGeometry(); + fillAssociation(); + fillGroups(); + fillMesh(); + + emit patternDataChanged(); + } -void DocumentModel::clearAll() +void DocumentModel::clearAll() { - clearData(); - clearBuilder(); - clearAssociation(); - clearGroups(); - clearMesh(); - //dataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight ) - //CS_TODO : todo : association, groups, mesh + clearData(); + clearBuilder(); + clearGeometry(); + clearAssociation(); + clearGroups(); + clearMesh(); + + //dataChanged( const QModelIndex & topLeft, const QModelIndex & bottomRight ) + //CS_TODO : todo : association, groups, mesh } void DocumentModel::clearData() { - _vertexDirItem->removeRows( 0, _vertexDirItem->rowCount() ); - _edgeDirItem->removeRows(0, _edgeDirItem->rowCount() ); - _quadDirItem->removeRows(0, _quadDirItem->rowCount() ); - _hexaDirItem->removeRows(0, _hexaDirItem->rowCount() ); + _vertexDirItem->removeRows( 0, _vertexDirItem->rowCount() ); + _edgeDirItem->removeRows(0, _edgeDirItem->rowCount() ); + _quadDirItem->removeRows(0, _quadDirItem->rowCount() ); + _hexaDirItem->removeRows(0, _hexaDirItem->rowCount() ); } void DocumentModel::clearBuilder() { - _vectorDirItem->removeRows(0, _vectorDirItem->rowCount() ); - _cylinderDirItem->removeRows(0, _cylinderDirItem->rowCount() ); - _pipeDirItem->removeRows(0, _pipeDirItem->rowCount() ); - _elementsDirItem->removeRows(0, _elementsDirItem->rowCount() ); - _crossElementsDirItem->removeRows(0, _crossElementsDirItem->rowCount() ); + _vectorDirItem->removeRows(0, _vectorDirItem->rowCount() ); + _cylinderDirItem->removeRows(0, _cylinderDirItem->rowCount() ); + _pipeDirItem->removeRows(0, _pipeDirItem->rowCount() ); + _elementsDirItem->removeRows(0, _elementsDirItem->rowCount() ); + _crossElementsDirItem->removeRows(0, _crossElementsDirItem->rowCount() ); } -void DocumentModel::clearAssociation() +void DocumentModel::clearGeometry() { - //CS_TODO + _explicitShapesDirItem->removeRows(0, _explicitShapesDirItem->rowCount() ); + _implicitShapesDirItem->removeRows(0, _implicitShapesDirItem->rowCount() ); + _cloudOfPointsDirItem->removeRows(0, _cloudOfPointsDirItem->rowCount() ); +} + +void DocumentModel::clearAssociation() +{ + //CS_TODO } void DocumentModel::clearGroups() { - _groupDirItem->removeRows(0, _groupDirItem->rowCount() ); + _groupDirItem->removeRows(0, _groupDirItem->rowCount() ); } void DocumentModel::clearMesh() { - _lawDirItem->removeRows(0, _lawDirItem->rowCount() ); - _propagationDirItem->removeRows(0, _propagationDirItem->rowCount() ); + _lawDirItem->removeRows(0, _lawDirItem->rowCount() ); + _propagationDirItem->removeRows(0, _propagationDirItem->rowCount() ); } void DocumentModel::fillData() { - // DATA - HEXA_NS::Vertex *v = NULL; - VertexItem *vItem = NULL; - for ( int i=0; i<_hexaDocument->countVertex(); ++i ){ - v = _hexaDocument->getVertex(i); - - vItem = new VertexItem(v, _entry); - _vertexDirItem->appendRow(vItem); - } - - HEXA_NS::Edge *e = NULL; - EdgeItem *eItem = NULL; - for ( int i=0; i<_hexaDocument->countEdge(); ++i ){ - e = _hexaDocument->getEdge(i); - eItem = new EdgeItem(e, _entry); - _edgeDirItem->appendRow(eItem); - } - - HEXA_NS::Quad *q = NULL; - QuadItem *qItem = NULL; - for ( int i=0; i<_hexaDocument->countQuad(); ++i ){ - q = _hexaDocument->getQuad(i); - qItem = new QuadItem(q, _entry); - _quadDirItem->appendRow(qItem); - } - - HEXA_NS::Hexa *h = NULL; - HexaItem *hItem = NULL; - for ( int i=0; i<_hexaDocument->countHexa(); ++i ){ - h = _hexaDocument->getHexa(i); - hItem = new HexaItem(h, _entry); - _hexaDirItem->appendRow(hItem); - } -} - - -void DocumentModel::fillBuilder() -{ - HEXA_NS::Vector *v = NULL; - VectorItem *vItem = NULL; - for ( int i=0; i<_hexaDocument->countVector(); ++i ){ - v = _hexaDocument->getVector(i); - vItem = new VectorItem(v); - _vectorDirItem->appendRow(vItem); - } - - // _cylinderDirItem - HEXA_NS::Cylinder *c = NULL; - CylinderItem *cItem = NULL; - for ( int i=0; i<_hexaDocument->countCylinder(); ++i ){ - c = _hexaDocument->getCylinder(i); - cItem = new CylinderItem(c, _entry); - _cylinderDirItem->appendRow(cItem); - } - -// _pipeDirItem - HEXA_NS::Pipe *p = NULL; - PipeItem *pItem = NULL; - for ( int i=0; i<_hexaDocument->countPipe(); ++i ){ - p = _hexaDocument->getPipe(i); - pItem = new PipeItem(p); - _pipeDirItem->appendRow(pItem); - } + // DATA + HEXA_NS::Vertex *v = NULL; + VertexItem *vItem = NULL; + for ( int i=0; i<_hexaDocument->countVertex(); ++i ){ + v = _hexaDocument->getVertex(i); + vItem = new VertexItem(v, _entry); + _vertexDirItem->appendRow(vItem); + } + + HEXA_NS::Edge *e = NULL; + EdgeItem *eItem = NULL; + for ( int i=0; i<_hexaDocument->countEdge(); ++i ){ + e = _hexaDocument->getEdge(i); + eItem = new EdgeItem(e, _entry); + _edgeDirItem->appendRow(eItem); + } + + HEXA_NS::Quad *q = NULL; + QuadItem *qItem = NULL; + for ( int i=0; i<_hexaDocument->countQuad(); ++i ){ + q = _hexaDocument->getQuad(i); + qItem = new QuadItem(q, _entry); + _quadDirItem->appendRow(qItem); + } + + HEXA_NS::Hexa *h = NULL; + HexaItem *hItem = NULL; + for ( int i=0; i<_hexaDocument->countHexa(); ++i ){ + h = _hexaDocument->getHexa(i); + hItem = new HexaItem(h, _entry); + _hexaDirItem->appendRow(hItem); + } } -void DocumentModel::fillAssociation() + + +void DocumentModel::fillBuilder() { + HEXA_NS::Vector *v = NULL; + VectorItem *vItem = NULL; + for ( int i=0; i<_hexaDocument->countVector(); ++i ){ + v = _hexaDocument->getVector(i); + vItem = new VectorItem(v); + _vectorDirItem->appendRow(vItem); + } + + // _cylinderDirItem + HEXA_NS::Cylinder *c = NULL; + CylinderItem *cItem = NULL; + for ( int i=0; i<_hexaDocument->countCylinder(); ++i ){ + c = _hexaDocument->getCylinder(i); + cItem = new CylinderItem(c, _entry); + _cylinderDirItem->appendRow(cItem); + } + // _pipeDirItem + HEXA_NS::Pipe *p = NULL; + PipeItem *pItem = NULL; + for ( int i=0; i<_hexaDocument->countPipe(); ++i ){ + p = _hexaDocument->getPipe(i); + pItem = new PipeItem(p); + _pipeDirItem->appendRow(pItem); + } +} + +void DocumentModel::fillGeometry() +{ + + if (_hexaDocument == NULL) return; + + HEXA_NS::NewShape* shape; + HEXA_NS::VertexShape* node; + HEXA_NS::EdgeShape* line; + HEXA_NS::FaceShape* face; + + //explicit shape + + //fill the shape tree + shapeById.clear(); + for (int i=0; i < _hexaDocument->countShape(); ++i) + { + shape = _hexaDocument->getShape(i); + QString shapeName = shape->getName(); + + //publish the shape in the study if not done yet + if (!docShapesEntry.contains(shapeName)) + { + //save the brep of the shape in a temporary file + QString fileName = shapeName + ".brep"; + shape->saveBrep(); + + //importing the brep in the study + QString objStudyEntry = HEXABLOCKGUI::addInStudy(fileName); + + docShapesName[objStudyEntry] = shapeName; + docShapesEntry[shapeName] = objStudyEntry; + } + + GeomShapeItem* shItem = new GeomShapeItem(shape); + if (shape->getOrigin() == HEXA_NS::SH_IMPORT) + _explicitShapesDirItem->appendRow(shItem); + else + _implicitShapesDirItem->appendRow(shItem); + + //add vertices to the tree + QStandardItem* geomPointDirItem = new QStandardItem(tr("TREE_ITEM_VERTEX")); + geomPointDirItem->setData( GEOMPOINT_DIR_TREE, HEXA_TREE_ROLE ); + shItem->appendRow(geomPointDirItem); + for (int j=0; j < shape->countVertex(); ++j) + { + node = shape->getVertexShape(j); + GeomPointItem* gPointItem = new GeomPointItem(node); + geomPointDirItem->appendRow(gPointItem); + shapeById[shapeName+","+QString::number(node->getIdent())] = node; + } + + //add edges to the tree + QStandardItem* geomEdgeDirItem = new QStandardItem(tr("TREE_ITEM_EDGE")); + geomEdgeDirItem->setData( GEOMEDGE_DIR_TREE, HEXA_TREE_ROLE ); + shItem->appendRow(geomEdgeDirItem); + for (int j = 0; j < shape->countEdge(); ++j) + { + line = shape->getEdgeShape(j); + GeomEdgeItem* gEdgeItem = new GeomEdgeItem(line); + geomEdgeDirItem->appendRow(gEdgeItem); + shapeById[shapeName+","+QString::number(line->getIdent())] = line; + } + + //add faces to the tree + QStandardItem* geomFaceDirItem = new QStandardItem(tr("TREE_ITEM_QUAD")); + geomFaceDirItem->setData( GEOMFACE_DIR_TREE, HEXA_TREE_ROLE ); + shItem->appendRow(geomFaceDirItem); + for (int j = 0; j < shape->countFace(); ++j) + { + face = shape->getFaceShape(j); + GeomFaceItem* gFaceItem = new GeomFaceItem(face); + geomFaceDirItem->appendRow(gFaceItem); + shapeById[shapeName+","+QString::number(face->getIdent())] = face; + } + } + + //implicit shapes + //...here + + + //cloud of points + //...here + +} + +void DocumentModel::fillAssociation() +{ } //------------------------------------------- NEW ITEMS @@ -384,94 +584,90 @@ void DocumentModel::fillAssociation() void DocumentModel::fillGroups() { - HEXA_NS::Group *g = NULL; - GroupItem *gItem = NULL; - for ( int i=0; i<_hexaDocument->countGroup(); ++i ){ - g = _hexaDocument->getGroup(i); - //std::cout<<"getGroup => "<< i << std::endl; - gItem = new GroupItem(g); - gItem->setData( _entry, HEXA_DOC_ENTRY_ROLE ); - _groupDirItem->appendRow(gItem); - } + HEXA_NS::Group *g = NULL; + GroupItem *gItem = NULL; + for ( int i=0; i<_hexaDocument->countGroup(); ++i ){ + g = _hexaDocument->getGroup(i); + //std::cout<<"getGroup => "<< i << std::endl; + gItem = new GroupItem(g); + gItem->setData( _entry, HEXA_DOC_ENTRY_ROLE ); + _groupDirItem->appendRow(gItem); + } } void DocumentModel::fillMesh() { - // _lawDirItem - HEXA_NS::Law *l = NULL; - LawItem *lItem = NULL; - for ( int i=0; i<_hexaDocument->countLaw(); ++i ){ - l = _hexaDocument->getLaw(i); - lItem = new LawItem(l); - _lawDirItem->appendRow(lItem); - } - - // _propagationDirItem - HEXA_NS::Propagation *p = NULL; - PropagationItem *pItem = NULL; - for ( int i=0; i<_hexaDocument->countPropagation(); ++i ){ - p = _hexaDocument->getPropagation(i); - pItem = new PropagationItem(p); - pItem->setText(QString("Propagation%1").arg(i) ); - pItem->setData( _entry, HEXA_DOC_ENTRY_ROLE ); - _propagationDirItem->appendRow(pItem); - } + // _lawDirItem + HEXA_NS::Law *l = NULL; + LawItem *lItem = NULL; + for ( int i=0; i<_hexaDocument->countLaw(); ++i ){ + l = _hexaDocument->getLaw(i); + lItem = new LawItem(l); + _lawDirItem->appendRow(lItem); + } + + // _propagationDirItem + HEXA_NS::Propagation *p = NULL; + PropagationItem *pItem = NULL; + for ( int i=0; i<_hexaDocument->countPropagation(); ++i ){ + p = _hexaDocument->getPropagation(i); + pItem = new PropagationItem(p); + pItem->setText(QString("Propagation%1").arg(i) ); + pItem->setData( _entry, HEXA_DOC_ENTRY_ROLE ); + _propagationDirItem->appendRow(pItem); + } } HEXA_NS::Hexa* DocumentModel::getQuadHexa(HEXA_NS::Quad* quad) { - HEXA_NS::Hexa* hexa; - for ( int i=0; i<_hexaDocument->countHexa(); ++i ){ - hexa = _hexaDocument->getHexa(i); - if (hexa->findQuad(quad) > -1) return hexa; - } - return NULL; + HEXA_NS::Hexa* hexa; + for ( int i=0; i<_hexaDocument->countHexa(); ++i ){ + hexa = _hexaDocument->getHexa(i); + if (hexa->findQuad(quad) > -1) return hexa; + } + return NULL; } Qt::ItemFlags DocumentModel::flags(const QModelIndex &index) const { - Qt::ItemFlags flags; + Qt::ItemFlags flags; - if (!index.isValid()) return Qt::ItemIsEnabled; + if (!index.isValid()) return Qt::ItemIsEnabled; - if ( _disallowEdition ){ - return QAbstractItemModel::flags(index) | Qt::ItemFlags( ~Qt::ItemIsEditable ); - } else { - return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; - } + if ( _disallowEdition ){ + return QAbstractItemModel::flags(index) | Qt::ItemFlags( ~Qt::ItemIsEditable ); + } else { + return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; + } } void DocumentModel::allowEdition() { - MESSAGE("DocumentModel::allowEdition(){"); - _disallowEdition = false; - MESSAGE("}"); + _disallowEdition = false; } void DocumentModel::disallowEdition() { - MESSAGE("DocumentModel::disallowEdition (){"); - _disallowEdition = true; - MESSAGE("}"); + _disallowEdition = true; } void DocumentModel::allowDataSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowVertexSelectionOnly() @@ -491,550 +687,574 @@ void DocumentModel::allowVertexSelectionOnly() _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); -// emit layoutChanged(); + // emit layoutChanged(); } void DocumentModel::allowEdgeSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowQuadSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowHexaSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowVectorSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowCylinderSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowPipeSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowElementsSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowCrossElementsSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::allowLawSelectionOnly() { - _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _vertexItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _edgeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _quadItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _hexaItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _crossElementsItemFlags = Qt::ItemFlags( Qt::ItemIsEnabled ); + _vectorItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _cylinderItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _pipeItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _elementsItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _crossElementsItemFlags = Qt::ItemFlags( Qt::ItemIsEnabled ); - _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); - _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); - _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _groupItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); + _lawItemFlags = Qt::ItemFlags( ~Qt::ItemIsEditable ); + _propagationItemFlags = Qt::ItemFlags( ~Qt::ItemIsEnabled ); } void DocumentModel::setName( const QModelIndex& iElt, const QString& name ) { - HEXA_NS::EltBase *elt = NULL; + HEXA_NS::EltBase *elt = NULL; - switch ( data(iElt, HEXA_TREE_ROLE).toInt() ){ - case GROUP_TREE : - { - HEXA_NS::Group* grp = iElt.data( HEXA_DATA_ROLE ).value< HEXA_NS::Group* >(); - grp->setName( name.toLatin1().data() ); - break; - } - case LAW_TREE : - { - HEXA_NS::Law* l = iElt.data( HEXA_DATA_ROLE ).value< HEXA_NS::Law* >(); - l->setName( name.toLatin1().data() ); - break; - } - // case PROPAGATION_TREE : elt = iElt.data( HEXA_DATA_ROLE ).value< HEXA_NS::Propagation* >(); break; - default: elt = getHexaPtr(iElt); - } + switch ( data(iElt, HEXA_TREE_ROLE).toInt() ){ + case GROUP_TREE : + { + HEXA_NS::Group* grp = iElt.data( HEXA_DATA_ROLE ).value< HEXA_NS::Group* >(); + grp->setName( name.toLatin1().data() ); + break; + } + case LAW_TREE : + { + HEXA_NS::Law* l = iElt.data( HEXA_DATA_ROLE ).value< HEXA_NS::Law* >(); + l->setName( name.toLatin1().data() ); + break; + } + // case PROPAGATION_TREE : elt = iElt.data( HEXA_DATA_ROLE ).value< HEXA_NS::Propagation* >(); break; + default: elt = getHexaPtr(iElt); + } - if ( elt != NULL ) elt->setName( name.toStdString() ); - setData( iElt, name ); + if ( elt != NULL ) elt->setName( name.toStdString() ); + setData( iElt, name ); } bool DocumentModel::clearEltAssociations( const QModelIndex& iElt ) { - bool isOk = false; - HEXA_NS::EltBase *elt = getHexaPtr(iElt); + bool isOk = false; + HEXA_NS::EltBase *elt = getHexaPtr(iElt); - if ( elt != NULL ){ - elt->clearAssociation(); - setData( iElt, QVariant(), HEXA_ASSOC_ENTRY_ROLE ); - isOk = true; - } + if ( elt != NULL ){ + elt->clearAssociation(); + setData( iElt, QVariant(), HEXA_ASSOC_ENTRY_ROLE ); + isOk = true; + } - return isOk; + return isOk; } +void DocumentModel::clearAssociation(HEXA_NS::EnumElt& eltType) +{ + if (_hexaDocument != NULL) + _hexaDocument->clearAssociation(eltType); + + QModelIndex iElt; + HEXA_NS::Vertex* vertex; + HEXA_NS::Edge* edge; + HEXA_NS::Quad* quad; + int nbElts; + + if (HEXABLOCKGUI::currentDocGView == NULL) return; + PatternDataSelectionModel* pdsm = HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel(); + PatternDataModel* pdm = HEXABLOCKGUI::currentDocGView->getPatternDataModel(); + if (pdsm == NULL || pdm == NULL) return; + + //update associations in the model + if (eltType == HEXA_NS::EL_VERTEX) + { + nbElts = _hexaDocument->countVertex(); + for (int i = 0; i < nbElts; ++i) + { + vertex = _hexaDocument->getVertex(i); + iElt = pdm->mapToSource(pdsm->indexBy(HEXA_DATA_ROLE, QVariant::fromValue(vertex))); + if (iElt.isValid()) + setData( iElt, QVariant(), HEXA_ASSOC_ENTRY_ROLE ); + } + } + else if (eltType == HEXA_NS::EL_EDGE) + { + nbElts = _hexaDocument->countEdge(); + for (int i = 0; i < nbElts; ++i) + { + edge = _hexaDocument->getEdge(i); + iElt = pdm->mapToSource(pdsm->indexBy(HEXA_DATA_ROLE, QVariant::fromValue(edge))); + if (iElt.isValid()) + setData( iElt, QVariant(), HEXA_ASSOC_ENTRY_ROLE ); + } + } + else if (eltType == HEXA_NS::EL_QUAD) + { + nbElts = _hexaDocument->countQuad(); + for (int i = 0; i < nbElts; ++i) + { + quad = _hexaDocument->getQuad(i); + iElt = pdm->mapToSource(pdsm->indexBy(HEXA_DATA_ROLE, QVariant::fromValue(quad))); + if (iElt.isValid()) + setData( iElt, QVariant(), HEXA_ASSOC_ENTRY_ROLE ); + } + } +} + + QModelIndex DocumentModel::addVertex( double x, double y, double z ) { - QModelIndex vertexIndex; + QModelIndex vertexIndex; + + HEXA_NS::Vertex* hv = _hexaDocument->addVertex(x, y, z); + if (BadElement(hv)) return vertexIndex; - HEXA_NS::Vertex* hv = _hexaDocument->addVertex(x, y, z); - if ( hv->isValid() ){ VertexItem* v = new VertexItem(hv, _entry); _vertexDirItem->appendRow(v); vertexIndex = v->index(); emit patternDataChanged(); - } else { - delete hv; - } - return vertexIndex; + return vertexIndex; } QModelIndex DocumentModel::addEdgeVertices (const QModelIndex &i_v0, const QModelIndex &i_v1 ) { - QModelIndex edgeIndex; + QModelIndex edgeIndex; - HEXA_NS::Vertex* hv0 = getHexaPtr(i_v0); - HEXA_NS::Vertex* hv1 = getHexaPtr(i_v1); + HEXA_NS::Vertex* hv0 = getHexaPtr(i_v0); + HEXA_NS::Vertex* hv1 = getHexaPtr(i_v1); - HEXA_NS::Edge* he = _hexaDocument->addEdge( hv0, hv1 ); + HEXA_NS::Edge* he = _hexaDocument->addEdge( hv0, hv1 ); + if ( BadElement(he) ) return edgeIndex; - if ( he->isValid() ){ EdgeItem* e = new EdgeItem(he, _entry); _edgeDirItem->appendRow(e); edgeIndex = e->index(); emit patternDataChanged(); - } else { - delete he; - } - return edgeIndex; + + return edgeIndex; } QModelIndex DocumentModel::addEdgeVector( const QModelIndex &i_v, const QModelIndex &i_vec ) { - QModelIndex edgeIndex; + QModelIndex edgeIndex; + + HEXA_NS::Vertex* hv = getHexaPtr(i_v); + HEXA_NS::Vector* hvec = getHexaPtr(i_vec); - HEXA_NS::Vertex* hv = getHexaPtr(i_v); - HEXA_NS::Vector* hvec = getHexaPtr(i_vec); + if (!hv || !hvec) return edgeIndex; - if (!hv || !hvec) return edgeIndex; + HEXA_NS::Edge* he = _hexaDocument->addEdge( hv, hvec ); + if ( BadElement(he) ) return edgeIndex; - HEXA_NS::Edge* he = _hexaDocument->addEdge( hv, hvec ); - if (!he) return edgeIndex; - HEXA_NS::Vertex* hv2 = he->getAval(); //the new vertex resulting from the creation of the edge - if (!hv2) return edgeIndex; + HEXA_NS::Vertex* hv2 = he->getAval(); //the new vertex resulting from the creation of the edge + if (hv2 == NULL) return edgeIndex; - //ADD the elements in the treeview - if ( he->isValid() ){ - //The Edge + //ADD the elements in the treeview + //The Edge EdgeItem* e = new EdgeItem(he, _entry); _edgeDirItem->appendRow(e); - //The Vertex + //The resulting Vertex VertexItem* v = new VertexItem(hv2, _entry); _vertexDirItem->appendRow(v); - edgeIndex = e->index(); emit patternDataChanged(); - } else - delete he; - return edgeIndex; + return edgeIndex; } QModelIndex DocumentModel::addQuadVertices( const QModelIndex &i_v0, const QModelIndex &i_v1, - const QModelIndex &i_v2, const QModelIndex &i_v3 ) + const QModelIndex &i_v2, const QModelIndex &i_v3 ) { //CS_TODO : gestion erreur - QModelIndex quadIndex; - - HEXA_NS::Vertex* hv0 = getHexaPtr(i_v0); - HEXA_NS::Vertex* hv1 = getHexaPtr(i_v1); - HEXA_NS::Vertex* hv2 = getHexaPtr(i_v2); - HEXA_NS::Vertex* hv3 = getHexaPtr(i_v3); - - if ( hv0 and hv1 and hv2 and hv3 ){ - HEXA_NS::Quad* hq = _hexaDocument->addQuadVertices( hv0, hv1, hv2, hv3 ); - if ( hq->isValid() ){ - QuadItem* q = new QuadItem(hq, _entry); - _quadDirItem->appendRow(q); - quadIndex = q->index(); - emit patternDataChanged(); - } else { - delete hq; + QModelIndex quadIndex; + + HEXA_NS::Vertex* hv0 = getHexaPtr(i_v0); + HEXA_NS::Vertex* hv1 = getHexaPtr(i_v1); + HEXA_NS::Vertex* hv2 = getHexaPtr(i_v2); + HEXA_NS::Vertex* hv3 = getHexaPtr(i_v3); + + if ( hv0 and hv1 and hv2 and hv3 ){ + HEXA_NS::Quad* hq = _hexaDocument->addQuadVertices( hv0, hv1, hv2, hv3 ); + if ( BadElement(hq) ) return quadIndex; + + QuadItem* q = new QuadItem(hq, _entry); + _quadDirItem->appendRow(q); + quadIndex = q->index(); + emit patternDataChanged(); } - } - return quadIndex; + + return quadIndex; } QModelIndex DocumentModel::addQuadEdges( const QModelIndex &e0, const QModelIndex &e1, - const QModelIndex &e2, const QModelIndex &e3 ) + const QModelIndex &e2, const QModelIndex &e3 ) { //CS_TODO - QModelIndex quadIndex; - - HEXA_NS::Edge* he0 = getHexaPtr(e0); - HEXA_NS::Edge* he1 = getHexaPtr(e1); - HEXA_NS::Edge* he2 = getHexaPtr(e2); - HEXA_NS::Edge* he3 = getHexaPtr(e3); - - if ( he0 and he1 and he2 and he3 ){ - HEXA_NS::Quad* hq = _hexaDocument->addQuad( he0, he1, he2, he3 ); - if ( hq->isValid() ){ - QuadItem* q = new QuadItem(hq, _entry); - _quadDirItem->appendRow(q); - quadIndex = q->index(); - emit patternDataChanged(); - } else { - delete hq; + QModelIndex quadIndex; + + HEXA_NS::Edge* he0 = getHexaPtr(e0); + HEXA_NS::Edge* he1 = getHexaPtr(e1); + HEXA_NS::Edge* he2 = getHexaPtr(e2); + HEXA_NS::Edge* he3 = getHexaPtr(e3); + + if ( he0 and he1 and he2 and he3 ){ + + HEXA_NS::Quad* hq = _hexaDocument->addQuad( he0, he1, he2, he3 ); + if ( BadElement(hq) ) return quadIndex; + + QuadItem* q = new QuadItem(hq, _entry); + _quadDirItem->appendRow(q); + quadIndex = q->index(); + emit patternDataChanged(); } - } - return quadIndex; + + return quadIndex; } -QModelIndex DocumentModel::addHexaVertices( - const QModelIndex &iv0, const QModelIndex &iv1, - const QModelIndex &iv2, const QModelIndex &iv3, - const QModelIndex &iv4, const QModelIndex &iv5, - const QModelIndex &iv6, const QModelIndex &iv7 ) -{ - QModelIndex iHexa; +QModelIndex DocumentModel::addHexaVertices( + const QModelIndex &iv0, const QModelIndex &iv1, + const QModelIndex &iv2, const QModelIndex &iv3, + const QModelIndex &iv4, const QModelIndex &iv5, + const QModelIndex &iv6, const QModelIndex &iv7 ) +{ + QModelIndex iHexa; + + HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); + HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); + HEXA_NS::Vertex* hv2 = getHexaPtr(iv2); + HEXA_NS::Vertex* hv3 = getHexaPtr(iv3); + HEXA_NS::Vertex* hv4 = getHexaPtr(iv4); + HEXA_NS::Vertex* hv5 = getHexaPtr(iv5); + HEXA_NS::Vertex* hv6 = getHexaPtr(iv6); + HEXA_NS::Vertex* hv7 = getHexaPtr(iv7); - HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); - HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); - HEXA_NS::Vertex* hv2 = getHexaPtr(iv2); - HEXA_NS::Vertex* hv3 = getHexaPtr(iv3); - HEXA_NS::Vertex* hv4 = getHexaPtr(iv4); - HEXA_NS::Vertex* hv5 = getHexaPtr(iv5); - HEXA_NS::Vertex* hv6 = getHexaPtr(iv6); - HEXA_NS::Vertex* hv7 = getHexaPtr(iv7); + HEXA_NS::Hexa* hh = _hexaDocument->addHexaVertices( hv0, hv1, hv2, hv3, + hv4, hv5, hv6, hv7 ); - HEXA_NS::Hexa* hh = _hexaDocument->addHexaVertices( hv0, hv1, hv2, hv3, - hv4, hv5, hv6, hv7 ); + if ( BadElement(hh) ) return iHexa; - if ( hh->isValid() ){ HexaItem* h = new HexaItem(hh, _entry); _hexaDirItem->appendRow(h); iHexa = h->index(); emit patternDataChanged(); - } else { - delete hh; - } - return iHexa; + return iHexa; } QModelIndex DocumentModel::addHexaQuad( const QModelIndex &i_q0, const QModelIndex &i_q1, - const QModelIndex &i_q2,const QModelIndex &i_q3, const QModelIndex &i_q4, const QModelIndex &i_q5 ) + const QModelIndex &i_q2,const QModelIndex &i_q3, const QModelIndex &i_q4, const QModelIndex &i_q5 ) { //CS_TODO : gestion erreur - QModelIndex hexaIndex; + QModelIndex hexaIndex; - HEXA_NS::Quad* hq0 = getHexaPtr(i_q0); - HEXA_NS::Quad* hq1 = getHexaPtr(i_q1); - HEXA_NS::Quad* hq2 = getHexaPtr(i_q2); - HEXA_NS::Quad* hq3 = getHexaPtr(i_q3); - HEXA_NS::Quad* hq4 = getHexaPtr(i_q4); - HEXA_NS::Quad* hq5 = getHexaPtr(i_q5); + HEXA_NS::Quad* hq0 = getHexaPtr(i_q0); + HEXA_NS::Quad* hq1 = getHexaPtr(i_q1); + HEXA_NS::Quad* hq2 = getHexaPtr(i_q2); + HEXA_NS::Quad* hq3 = getHexaPtr(i_q3); + HEXA_NS::Quad* hq4 = getHexaPtr(i_q4); + HEXA_NS::Quad* hq5 = getHexaPtr(i_q5); - HEXA_NS::Hexa* hh = _hexaDocument->addHexa( hq0, hq1, hq2, hq3, hq4, hq5 ); + HEXA_NS::Hexa* hh = _hexaDocument->addHexa( hq0, hq1, hq2, hq3, hq4, hq5 ); + if ( BadElement(hh) ) return hexaIndex; - if ( hh->isValid() ){ HexaItem* h = new HexaItem(hh, _entry); _hexaDirItem->appendRow(h); hexaIndex = h->index(); emit patternDataChanged(); - } else - delete hh; - return hexaIndex; + return hexaIndex; } QModelIndex DocumentModel::addHexaQuads( const QModelIndexList &iquads) -{ - QModelIndex hexaIndex; - - HEXA_NS::Hexa* hh = NULL; - HEXA_NS::Quad* hq0, *hq1, *hq2, *hq3, *hq4, *hq5 = NULL; - - hq0 = getHexaPtr(iquads.value(0)); - hq1 = getHexaPtr(iquads.value(1)); - hq2 = getHexaPtr(iquads.value(2)); - hq3 = getHexaPtr(iquads.value(3)); - hq4 = getHexaPtr(iquads.value(4)); - hq5 = getHexaPtr(iquads.value(5)); - - if ( hq0 && hq1 && hq2 && hq3 && hq4 && hq5 ) - hh = _hexaDocument->addHexa( hq0, hq1, hq2, hq3, hq4, hq5 ); - else if ( hq0 && hq1 && hq2 && hq3 && hq4 ) - hh = _hexaDocument->addHexa5Quads( hq0, hq1, hq2, hq3, hq4 ); - else if ( hq0 && hq1 && hq2 && hq3 ) - hh = _hexaDocument->addHexa4Quads( hq0, hq1, hq2, hq3 ); - else if ( hq0 && hq1 && hq2) - hh = _hexaDocument->addHexa3Quads( hq0, hq1, hq2 ); - else if ( hq0 && hq1 ) - hh = _hexaDocument->addHexa2Quads( hq0, hq1); - - if ( hh && hh->isValid() ){ - updateData(); - unsigned int nbRows = _hexaDirItem->rowCount(); - if (nbRows > 0) - hexaIndex = _hexaDirItem->child(nbRows-1)->index(); - } else - delete hh; - - return hexaIndex; +{ + QModelIndex hexaIndex; + + HEXA_NS::Hexa* hh = NULL; + HEXA_NS::Quad* hq0, *hq1, *hq2, *hq3, *hq4, *hq5 = NULL; + + hq0 = getHexaPtr(iquads.value(0)); + hq1 = getHexaPtr(iquads.value(1)); + hq2 = getHexaPtr(iquads.value(2)); + hq3 = getHexaPtr(iquads.value(3)); + hq4 = getHexaPtr(iquads.value(4)); + hq5 = getHexaPtr(iquads.value(5)); + + if ( hq0 && hq1 && hq2 && hq3 && hq4 && hq5 ) + hh = _hexaDocument->addHexa( hq0, hq1, hq2, hq3, hq4, hq5 ); + else if ( hq0 && hq1 && hq2 && hq3 && hq4 ) + hh = _hexaDocument->addHexa5Quads( hq0, hq1, hq2, hq3, hq4 ); + else if ( hq0 && hq1 && hq2 && hq3 ) + hh = _hexaDocument->addHexa4Quads( hq0, hq1, hq2, hq3 ); + else if ( hq0 && hq1 && hq2) + hh = _hexaDocument->addHexa3Quads( hq0, hq1, hq2 ); + else if ( hq0 && hq1 ) + hh = _hexaDocument->addHexa2Quads( hq0, hq1); + + if ( BadElement(hh) ) return hexaIndex; + + updateData(); + unsigned int nbRows = _hexaDirItem->rowCount(); + if (nbRows > 0) + hexaIndex = _hexaDirItem->child(nbRows-1)->index(); + + return hexaIndex; } // Vector addVector( in double dx, in double dy, in double dz ) // raises (SALOME::SALOME_Exception); QModelIndex DocumentModel::addVector( double dx, double dy, double dz ) { - QModelIndex vectorIndex; + QModelIndex vectorIndex; - HEXA_NS::Vector* hv = _hexaDocument->addVector(dx, dy, dz); + HEXA_NS::Vector* hv = _hexaDocument->addVector(dx, dy, dz); + if ( BadElement(hv) ) return vectorIndex; //Invalid index - if ( hv->isValid() ){ VectorItem* v = new VectorItem(hv); _vectorDirItem->appendRow(v); vectorIndex = v->index(); - } else - delete hv; - - return vectorIndex; + return vectorIndex; } QModelIndex DocumentModel::addVectorVertices( const QModelIndex &iv0, const QModelIndex &iv1 ) { - QModelIndex iVec; + QModelIndex iVec; - HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); - HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); + HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); + HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); - HEXA_NS::Vector* hvec = _hexaDocument->addVectorVertices( hv0, hv1 ); + HEXA_NS::Vector* hvec = _hexaDocument->addVectorVertices( hv0, hv1 ); + if ( BadElement(hvec) ) return iVec; - if ( hvec->isValid() ){ VectorItem* vec = new VectorItem(hvec); _vectorDirItem->appendRow(vec); iVec = vec->index(); - } else { - delete hvec; - } - return iVec; + return iVec; } QModelIndex DocumentModel::addCylinder( const QModelIndex &iv, const QModelIndex &ivec, double r, double h ) { - QModelIndex iCyl; + QModelIndex iCyl; - HEXA_NS::Vertex* hv = getHexaPtr(iv); - HEXA_NS::Vector* hvec = getHexaPtr(ivec); + HEXA_NS::Vertex* hv = getHexaPtr(iv); + HEXA_NS::Vector* hvec = getHexaPtr(ivec); - HEXA_NS::Cylinder* hcyl = _hexaDocument->addCylinder( hv, hvec, r, h ); + HEXA_NS::Cylinder* hcyl = _hexaDocument->addCylinder( hv, hvec, r, h ); + if ( BadElement(hcyl) ) return iCyl; - if ( hcyl->isValid() ){ CylinderItem* cyl = new CylinderItem(hcyl); _cylinderDirItem->appendRow(cyl); iCyl = cyl->index(); - } else { - delete hcyl; - } - return iCyl; + return iCyl; } QModelIndex DocumentModel::addPipe( const QModelIndex &iv, const QModelIndex &ivec, double ri, double re, double h ) { - QModelIndex iPipe; + QModelIndex iPipe; - HEXA_NS::Vertex* hv = getHexaPtr(iv); - HEXA_NS::Vector* hvec = getHexaPtr(ivec); + HEXA_NS::Vertex* hv = getHexaPtr(iv); + HEXA_NS::Vector* hvec = getHexaPtr(ivec); - HEXA_NS::Pipe* hPipe = _hexaDocument->addPipe( hv, hvec, ri, re, h ); + HEXA_NS::Pipe* hPipe = _hexaDocument->addPipe( hv, hvec, ri, re, h ); + if ( BadElement(hPipe) ) return iPipe; - if ( hPipe->isValid() ){ PipeItem* pipe = new PipeItem(hPipe); _pipeDirItem->appendRow(pipe); iPipe = pipe->index(); - } else { - delete hPipe; - } - return iPipe; + return iPipe; } QModelIndex DocumentModel::makeCartesian( const QModelIndex& i_pt, - const QModelIndex& i_vec_x, const QModelIndex& i_vec_y, const QModelIndex& i_vec_z, - long nx, long ny, long nz) + const QModelIndex& i_vec_x, const QModelIndex& i_vec_y, const QModelIndex& i_vec_z, + long nx, long ny, long nz) { - QModelIndex eltsIndex; - //std::cout<<"makeCartesian begin"<(i_pt); - HEXA_NS::Vector* hvec_x = getHexaPtr(i_vec_x); - HEXA_NS::Vector* hvec_y = getHexaPtr(i_vec_y); - HEXA_NS::Vector* hvec_z = getHexaPtr(i_vec_z); + HEXA_NS::Vertex* hpt = getHexaPtr(i_pt); + HEXA_NS::Vector* hvec_x = getHexaPtr(i_vec_x); + HEXA_NS::Vector* hvec_y = getHexaPtr(i_vec_y); + HEXA_NS::Vector* hvec_z = getHexaPtr(i_vec_z); - HEXA_NS::Elements* new_helts = _hexaDocument->makeCartesian( hpt, - hvec_x, hvec_y, hvec_z, - nx, ny, nz ); + HEXA_NS::Elements* new_helts = _hexaDocument->makeCartesian( hpt, + hvec_x, hvec_y, hvec_z, + nx, ny, nz ); + if ( BadElement(new_helts) ) return eltsIndex; - if ( new_helts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(new_helts); _elementsDirItem->appendRow(eltsItem); eltsIndex = eltsItem->index(); - } else - delete new_helts; - return eltsIndex; + return eltsIndex; } QModelIndex DocumentModel::makeCartesian( const QModelIndex& ivex, - const QModelIndex& ivec, - int nx, int ny, int nz ) + const QModelIndex& ivec, + int nx, int ny, int nz ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Vertex* hVex = getHexaPtr(ivex); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); + HEXA_NS::Vertex* hVex = getHexaPtr(ivex); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); + + HEXA_NS::Elements* hElts = _hexaDocument->makeCartesian( hVex, + hVec, + nx, ny, nz ); + if ( BadElement(hElts) ) return iElts; - HEXA_NS::Elements* hElts = _hexaDocument->makeCartesian( hVex, - hVec, - nx, ny, nz ); - if ( hElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } // Elements makeCylindrical( in Vertex pt, @@ -1050,1417 +1270,1391 @@ QModelIndex DocumentModel::makeCylindrical( const QModelIndex& i_pt, bool fill ) { - QModelIndex eltsIndex; + QModelIndex eltsIndex; - HEXA_NS::Vertex* hpt = getHexaPtr(i_pt); - HEXA_NS::Vector* hvec_x = getHexaPtr(i_vec_x); - HEXA_NS::Vector* hvec_z = getHexaPtr(i_vec_z); + HEXA_NS::Vertex* hpt = getHexaPtr(i_pt); + HEXA_NS::Vector* hvec_x = getHexaPtr(i_vec_x); + HEXA_NS::Vector* hvec_z = getHexaPtr(i_vec_z); - HEXA_NS::Elements* new_helts = _hexaDocument->makeCylindrical( hpt, hvec_x, hvec_z, dr, da, dl, nr, na, nl, fill ); + HEXA_NS::Elements* new_helts = _hexaDocument->makeCylindrical( hpt, hvec_x, hvec_z, dr, da, dl, nr, na, nl, fill ); + if ( BadElement(new_helts) ) return eltsIndex; - if ( new_helts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(new_helts); _elementsDirItem->appendRow(eltsItem); eltsIndex = eltsItem->index(); - } else { - delete new_helts; - } - return eltsIndex; + return eltsIndex; } -QModelIndex DocumentModel::makeCylindricals( - const QModelIndex& icenter, const QModelIndex& ibase, const QModelIndex& iheight, - QList< double> radius, QList angles, QList heights, - bool fill ) //HEXA3 +QModelIndex DocumentModel::makeCylindricals( + const QModelIndex& icenter, const QModelIndex& ibase, const QModelIndex& iheight, + QList< double> radius, QList angles, QList heights, + bool fill ) //HEXA3 { - QModelIndex eltsIndex; + QModelIndex eltsIndex; - HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); - HEXA_NS::Vector* hbase =getHexaPtr(ibase); - HEXA_NS::Vector* hheight = getHexaPtr(iheight); + HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); + HEXA_NS::Vector* hbase =getHexaPtr(ibase); + HEXA_NS::Vector* hheight = getHexaPtr(iheight); -// HEXA_NS::Elements* helts; - std::vector r = radius.toVector().toStdVector(); - std::vector a = angles.toVector().toStdVector(); - std::vector h = heights.toVector().toStdVector(); + // HEXA_NS::Elements* helts; + std::vector r = radius.toVector().toStdVector(); + std::vector a = angles.toVector().toStdVector(); + std::vector h = heights.toVector().toStdVector(); - HEXA_NS::Elements* helts = _hexaDocument->makeCylindricals( - hcenter, hbase, hheight, - r, a, h, - fill ); + HEXA_NS::Elements* helts = _hexaDocument->makeCylindricals( + hcenter, hbase, hheight, + r, a, h, + fill ); + if ( BadElement(helts) ) return eltsIndex; - if ( helts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(helts); _elementsDirItem->appendRow(eltsItem); eltsIndex = eltsItem->index(); - } else { - delete helts; - } - return eltsIndex; + + return eltsIndex; } QModelIndex DocumentModel::makeSpherical( const QModelIndex& iv, const QModelIndex& ivec, int nb, double k) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Vertex* hv = getHexaPtr(iv); - HEXA_NS::Vector* hvec = getHexaPtr(ivec); + HEXA_NS::Vertex* hv = getHexaPtr(iv); + HEXA_NS::Vector* hvec = getHexaPtr(ivec); - HEXA_NS::Elements* hElts = _hexaDocument->makeSpherical( hv, hvec, nb, k ); + HEXA_NS::Elements* hElts = _hexaDocument->makeSpherical( hv, hvec, nb, k ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::makeSpherical( const QModelIndex& icenter, double radius, int nb, double k ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); + HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); - HEXA_NS::Elements* helts = _hexaDocument->makeSpherical( hcenter, radius, nb, k ); + HEXA_NS::Elements* helts = _hexaDocument->makeSpherical( hcenter, radius, nb, k ); + if ( BadElement(helts) ) return iElts; - if ( helts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(helts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete helts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::makeCylinder( const QModelIndex& icyl, const QModelIndex& ivec, - int nr, int na, int nl ) + int nr, int na, int nl ) { - QModelIndex iElts; + QModelIndex iElts; + + HEXA_NS::Cylinder* hcyl = getHexaPtr(icyl); + HEXA_NS::Vector* hvec = getHexaPtr(ivec); - HEXA_NS::Cylinder* hcyl = getHexaPtr(icyl); - HEXA_NS::Vector* hvec = getHexaPtr(ivec); + HEXA_NS::Elements* hElts = _hexaDocument->makeCylinder( hcyl, hvec, nr, na, nl ); + if ( BadElement(hElts) ) return iElts; - HEXA_NS::Elements* hElts = _hexaDocument->makeCylinder( hcyl, hvec, nr, na, nl ); - if ( hElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } -QModelIndex DocumentModel::makePipe( const QModelIndex& ipipe, const QModelIndex& ivecx, - int nr, int na, int nl ) -{ - QModelIndex iElts; +QModelIndex DocumentModel::makePipe( const QModelIndex& ipipe, const QModelIndex& ivecx, + int nr, int na, int nl ) +{ + QModelIndex iElts; - HEXA_NS::Pipe* hPipe = getHexaPtr(ipipe); - HEXA_NS::Vector* hVecx = getHexaPtr(ivecx); + HEXA_NS::Pipe* hPipe = getHexaPtr(ipipe); + HEXA_NS::Vector* hVecx = getHexaPtr(ivecx); - HEXA_NS::Elements* hElts = _hexaDocument->makePipe( hPipe, hVecx, nr, na, nl ); + HEXA_NS::Elements* hElts = _hexaDocument->makePipe( hPipe, hVecx, nr, na, nl ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::makeCylinders(const QModelIndex& icyl1, const QModelIndex& icyl2) { //CS_TODO - QModelIndex iCrossElts; - - HEXA_NS::Cylinder* hCyl1 = getHexaPtr(icyl1); - HEXA_NS::Cylinder* hCyl2 = getHexaPtr(icyl2); - - HEXA_NS::CrossElements* hCrossElts = _hexaDocument->makeCylinders( hCyl1, hCyl2 ); - - if ( hCrossElts->isValid() ){ + QModelIndex iCrossElts; + + HEXA_NS::Cylinder* hCyl1 = getHexaPtr(icyl1); + HEXA_NS::Cylinder* hCyl2 = getHexaPtr(icyl2); + + HEXA_NS::CrossElements* hCrossElts = _hexaDocument->makeCylinders( hCyl1, hCyl2 ); + if ( BadElement(hCrossElts) ) return iCrossElts; + updateData(); //CS_TODO more or less? ElementsItem* crossElts = new ElementsItem(hCrossElts); _crossElementsDirItem->appendRow(crossElts); - iCrossElts = crossElts->index(); - } else { - delete hCrossElts; - } - - return iCrossElts; + iCrossElts = crossElts->index(); + + return iCrossElts; } // QModelIndex DocumentModel::makePipes( const QModelIndex& ipipe1, const QModelIndex& ipipe2 ) -{ - QModelIndex iCrossElts; - - HEXA_NS::Pipe* hPipe1 = getHexaPtr(ipipe1); - HEXA_NS::Pipe* hPipe2 = getHexaPtr(ipipe2); - - HEXA_NS::CrossElements* hCrossElts = _hexaDocument->makePipes( hPipe1, hPipe2 ); - - if ( hCrossElts->isValid() ){ +{ + QModelIndex iCrossElts; + + HEXA_NS::Pipe* hPipe1 = getHexaPtr(ipipe1); + HEXA_NS::Pipe* hPipe2 = getHexaPtr(ipipe2); + + HEXA_NS::CrossElements* hCrossElts = _hexaDocument->makePipes( hPipe1, hPipe2 ); + if ( BadElement(hCrossElts) ) return iCrossElts; + updateData(); //CS_TODO more or less? ElementsItem* crossElts = new ElementsItem(hCrossElts); _crossElementsDirItem->appendRow(crossElts); iCrossElts = crossElts->index(); - QString tmp = "/tmp/makePipes.vtk"; - _hexaDocument->saveVtk( tmp.toLocal8Bit().constData() ); - } else { - delete hCrossElts; - } - - return iCrossElts; -} - -QModelIndex DocumentModel::makeRind( const QModelIndex& icenter, - const QModelIndex& ivecx, const QModelIndex& ivecz, - double radext, double radint, double radhole, - const QModelIndex& iplorig, - int nrad, int nang, int nhaut ) -{ - QModelIndex iElts; - - HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); - HEXA_NS::Vector* hvecx = getHexaPtr(ivecx); - HEXA_NS::Vector* hvecz = getHexaPtr(ivecz); - HEXA_NS::Vertex* hplorig = getHexaPtr(iplorig); - - HEXA_NS::Elements* hElts = _hexaDocument->makeRind( hcenter, - hvecx, hvecz, - radext, radint, radhole, - hplorig, - nrad, nang, nhaut ); - - if ( hElts->isValid() ){ + + return iCrossElts; +} + +QModelIndex DocumentModel::makeRind( const QModelIndex& icenter, + const QModelIndex& ivecx, const QModelIndex& ivecz, + double radext, double radint, double radhole, + const QModelIndex& iplorig, + int nrad, int nang, int nhaut ) +{ + QModelIndex iElts; + + HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); + HEXA_NS::Vector* hvecx = getHexaPtr(ivecx); + HEXA_NS::Vector* hvecz = getHexaPtr(ivecz); + HEXA_NS::Vertex* hplorig = getHexaPtr(iplorig); + + HEXA_NS::Elements* hElts = _hexaDocument->makeRind( hcenter, + hvecx, hvecz, + radext, radint, radhole, + hplorig, + nrad, nang, nhaut ); + if ( BadElement(hElts) ) return iElts; + updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(hElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } -QModelIndex DocumentModel::makePartRind( const QModelIndex& icenter, - const QModelIndex& ivecx, const QModelIndex& ivecz, - double radext, double radint, double radhole, - const QModelIndex& iplorig, double angle, - int nrad, int nang, int nhaut ) +QModelIndex DocumentModel::makePartRind( const QModelIndex& icenter, + const QModelIndex& ivecx, const QModelIndex& ivecz, + double radext, double radint, double radhole, + const QModelIndex& iplorig, double angle, + int nrad, int nang, int nhaut ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); - HEXA_NS::Vector* hvecx = getHexaPtr(ivecx); - HEXA_NS::Vector* hvecz = getHexaPtr(ivecz); - HEXA_NS::Vertex* hplorig = getHexaPtr(iplorig); + HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); + HEXA_NS::Vector* hvecx = getHexaPtr(ivecx); + HEXA_NS::Vector* hvecz = getHexaPtr(ivecz); + HEXA_NS::Vertex* hplorig = getHexaPtr(iplorig); - HEXA_NS::Elements* hElts = _hexaDocument->makePartRind( hcenter, - hvecx, hvecz, - radext, radint, radhole, - hplorig, angle, - nrad, nang, nhaut ); + HEXA_NS::Elements* hElts = _hexaDocument->makePartRind( hcenter, + hvecx, hvecz, + radext, radint, radhole, + hplorig, angle, + nrad, nang, nhaut ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); ElementsItem* eltsItem = new ElementsItem(hElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } -QModelIndex DocumentModel::makeSphere( const QModelIndex& icenter, - const QModelIndex& ivecx, const QModelIndex& ivecz, - double radius, double radhole, - const QModelIndex& iplorig, - int nrad, int nang, int nhaut ) +QModelIndex DocumentModel::makeSphere( const QModelIndex& icenter, + const QModelIndex& ivecx, const QModelIndex& ivecz, + double radius, double radhole, + const QModelIndex& iplorig, + int nrad, int nang, int nhaut ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); - HEXA_NS::Vector* hvecx = getHexaPtr(ivecx); - HEXA_NS::Vector* hvecz = getHexaPtr(ivecz); - HEXA_NS::Vertex* hplorig = getHexaPtr(iplorig); + HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); + HEXA_NS::Vector* hvecx = getHexaPtr(ivecx); + HEXA_NS::Vector* hvecz = getHexaPtr(ivecz); + HEXA_NS::Vertex* hplorig = getHexaPtr(iplorig); - HEXA_NS::Elements* hElts = _hexaDocument->makeSphere( hcenter, - hvecx, hvecz, - radius, radhole, - hplorig, - nrad, nang, nhaut); + HEXA_NS::Elements* hElts = _hexaDocument->makeSphere( hcenter, + hvecx, hvecz, + radius, radhole, + hplorig, + nrad, nang, nhaut); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); ElementsItem* eltsItem = new ElementsItem(hElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } -QModelIndex DocumentModel::makePartSphere( const QModelIndex& icenter, - const QModelIndex& ivecx, const QModelIndex& ivecz, - double radius, double radhole, - const QModelIndex& iplorig, double angle, - int nrad, int nang, int nhaut ) +QModelIndex DocumentModel::makePartSphere( const QModelIndex& icenter, + const QModelIndex& ivecx, const QModelIndex& ivecz, + double radius, double radhole, + const QModelIndex& iplorig, double angle, + int nrad, int nang, int nhaut ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); - HEXA_NS::Vector* hvecx = getHexaPtr(ivecx); - HEXA_NS::Vector* hvecz = getHexaPtr(ivecz); - HEXA_NS::Vertex* hplorig = getHexaPtr(iplorig); + HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); + HEXA_NS::Vector* hvecx = getHexaPtr(ivecx); + HEXA_NS::Vector* hvecz = getHexaPtr(ivecz); + HEXA_NS::Vertex* hplorig = getHexaPtr(iplorig); - HEXA_NS::Elements* hElts = _hexaDocument->makePartSphere( hcenter, - hvecx, hvecz, - radius, radhole, - hplorig, angle, - nrad, nang, nhaut); + HEXA_NS::Elements* hElts = _hexaDocument->makePartSphere( hcenter, + hvecx, hvecz, + radius, radhole, + hplorig, angle, + nrad, nang, nhaut); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); ElementsItem* eltsItem = new ElementsItem(hElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } // ************ EDIT HEXABLOCK MODEL ************ bool DocumentModel::updateVertex( const QModelIndex& ivertex, double x, double y, double z ) { - bool ret = false; + bool ret = false; - //HEXA_NS::Vertex* hVertex = ivertex.data(HEXA_DATA_ROLE).value(); //CS_TODO? pareil pour toutes les autres méthodes du modèle? - HEXA_NS::Vertex* hVertex = getHexaPtr(ivertex); + //HEXA_NS::Vertex* hVertex = ivertex.data(HEXA_DATA_ROLE).value(); //CS_TODO? pareil pour toutes les autres méthodes du modèle? + HEXA_NS::Vertex* hVertex = getHexaPtr(ivertex); - if ( hVertex ){ -// hVertex->setName( name.toStdString() ); - hVertex->setX ( x ); - hVertex->setY ( y ); - hVertex->setZ ( z ); - emit patternDataChanged(); - ret = true; - } + if ( hVertex ){ + // hVertex->setName( name.toStdString() ); + hVertex->setX ( x ); + hVertex->setY ( y ); + hVertex->setZ ( z ); + emit patternDataChanged(); + ret = true; + } - return ret; + return ret; } bool DocumentModel::removeHexa( const QModelIndex& ihexa ) { - bool ret = false; - HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); + HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); + int r = _hexaDocument->removeHexa( hHexa ); + if ( r == HOK ){ + updateData(); + return true; + } - int r = _hexaDocument->removeHexa( hHexa ); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } - - return ret; + return false; } bool DocumentModel::removeConnectedHexa( const QModelIndex& ihexa ) { - bool ret = false; - HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); - - int r = _hexaDocument->removeConnectedHexa( hHexa ); - - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } - - return ret; + HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); + + int r = _hexaDocument->removeConnectedHexa( hHexa ); + if ( r == HOK ){ + updateData(); + return true; + } + + return false; } QModelIndex DocumentModel::prismQuad( const QModelIndex& iquad, const QModelIndex& ivec, int nb) -{ - QModelIndex iElts; +{ + QModelIndex iElts; - HEXA_NS::Quad* hQuad = getHexaPtr(iquad); - HEXA_NS::Vector* hVect = getHexaPtr(ivec); + HEXA_NS::Quad* hQuad = getHexaPtr(iquad); + HEXA_NS::Vector* hVect = getHexaPtr(ivec); - HEXA_NS::Elements* hElts = _hexaDocument->prismQuad( hQuad, hVect, nb ); + HEXA_NS::Elements* hElts = _hexaDocument->prismQuad( hQuad, hVect, nb ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::prismQuads( const QModelIndexList& iquads, const QModelIndex& ivec, int nb) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Quads hQuads; - HEXA_NS::Quad* hQuad = NULL; - foreach( const QModelIndex& iquad, iquads ){ - hQuad = getHexaPtr(iquad); - hQuads.push_back( hQuad ); - } - HEXA_NS::Vector* hVect = getHexaPtr(ivec); + HEXA_NS::Quads hQuads; + HEXA_NS::Quad* hQuad = NULL; + foreach( const QModelIndex& iquad, iquads ){ + hQuad = getHexaPtr(iquad); + hQuads.push_back( hQuad ); + } + HEXA_NS::Vector* hVect = getHexaPtr(ivec); + + HEXA_NS::Elements* hElts = _hexaDocument->prismQuads( hQuads, hVect, nb ); + if ( BadElement(hElts) ) return iElts; - HEXA_NS::Elements* hElts = _hexaDocument->prismQuads( hQuads, hVect, nb ); - if ( hElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + + return iElts; } QModelIndex DocumentModel::prismQuads( const QModelIndexList& iquads, const QModelIndex& ivec, std::vector layersSize, int nb) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Quads hQuads; - HEXA_NS::Quad* hQuad = NULL; - foreach( const QModelIndex& iquad, iquads ){ - hQuad = getHexaPtr(iquad); - hQuads.push_back( hQuad ); - } - HEXA_NS::Vector* hVect = getHexaPtr(ivec); + HEXA_NS::Quads hQuads; + HEXA_NS::Quad* hQuad = NULL; + foreach( const QModelIndex& iquad, iquads ){ + hQuad = getHexaPtr(iquad); + hQuads.push_back( hQuad ); + } + HEXA_NS::Vector* hVect = getHexaPtr(ivec); + + HEXA_NS::Elements* hElts = _hexaDocument->prismQuadsVec( hQuads, hVect, layersSize, nb ); + if ( BadElement(hElts) ) return iElts; - HEXA_NS::Elements* hElts = _hexaDocument->prismQuadsVec( hQuads, hVect, layersSize, nb ); - if ( hElts->isValid() ){ - updateData(); //CS_TODO more or less? - ElementsItem* elts = new ElementsItem(hElts); - _elementsDirItem->appendRow(elts); - iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + updateData(); //CS_TODO more or less? + ElementsItem* elts = new ElementsItem(hElts); + _elementsDirItem->appendRow(elts); + iElts = elts->index(); + + return iElts; } // QModelIndex DocumentModel::joinQuad( - const QModelIndex& iquadstart, const QModelIndex& iquaddest, - const QModelIndex& iv0, const QModelIndex& iv1, - const QModelIndex& iv2, const QModelIndex& iv3, - int nb ) + const QModelIndex& iquadstart, const QModelIndex& iquaddest, + const QModelIndex& iv0, const QModelIndex& iv1, + const QModelIndex& iv2, const QModelIndex& iv3, + int nb ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Quad* hQuadStart = getHexaPtr(iquadstart); - HEXA_NS::Quad* hQuadDest = getHexaPtr(iquaddest); + HEXA_NS::Quad* hQuadStart = getHexaPtr(iquadstart); + HEXA_NS::Quad* hQuadDest = getHexaPtr(iquaddest); - HEXA_NS::Vertex* hVertex0 = getHexaPtr(iv0); - HEXA_NS::Vertex* hVertex1 = getHexaPtr(iv1); - HEXA_NS::Vertex* hVertex2 = getHexaPtr(iv2); - HEXA_NS::Vertex* hVertex3 = getHexaPtr(iv3); + HEXA_NS::Vertex* hVertex0 = getHexaPtr(iv0); + HEXA_NS::Vertex* hVertex1 = getHexaPtr(iv1); + HEXA_NS::Vertex* hVertex2 = getHexaPtr(iv2); + HEXA_NS::Vertex* hVertex3 = getHexaPtr(iv3); - HEXA_NS::Elements* hElts = _hexaDocument->joinQuad( hQuadStart, hQuadDest, - hVertex0, hVertex1, hVertex2, hVertex3, nb ); + HEXA_NS::Elements* hElts = _hexaDocument->joinQuad( hQuadStart, hQuadDest, + hVertex0, hVertex1, hVertex2, hVertex3, nb ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } -QModelIndex DocumentModel::joinQuads( - const QModelIndexList& iquadsstart, const QModelIndex& iquaddest, - const QModelIndex& iv0, const QModelIndex& iv1, - const QModelIndex& iv2, const QModelIndex& iv3, - int nb ) +QModelIndex DocumentModel::joinQuads( + const QModelIndexList& iquadsstart, const QModelIndex& iquaddest, + const QModelIndex& iv0, const QModelIndex& iv1, + const QModelIndex& iv2, const QModelIndex& iv3, + int nb ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Quad* hQuadStart; - HEXA_NS::Quads hQuadsStart; + HEXA_NS::Quad* hQuadStart; + HEXA_NS::Quads hQuadsStart; - foreach( const QModelIndex& iquad, iquadsstart ){ - hQuadStart = data( iquad, HEXA_DATA_ROLE ).value(); - hQuadsStart.push_back( hQuadStart ); - } - HEXA_NS::Quad* hQuadDest = data( iquaddest, HEXA_DATA_ROLE ).value(); + foreach( const QModelIndex& iquad, iquadsstart ){ + hQuadStart = data( iquad, HEXA_DATA_ROLE ).value(); + hQuadsStart.push_back( hQuadStart ); + } + HEXA_NS::Quad* hQuadDest = data( iquaddest, HEXA_DATA_ROLE ).value(); - HEXA_NS::Vertex* hVertex0 = getHexaPtr(iv0); - HEXA_NS::Vertex* hVertex1 = getHexaPtr(iv1); - HEXA_NS::Vertex* hVertex2 = getHexaPtr(iv2); - HEXA_NS::Vertex* hVertex3 = getHexaPtr(iv3); + HEXA_NS::Vertex* hVertex0 = getHexaPtr(iv0); + HEXA_NS::Vertex* hVertex1 = getHexaPtr(iv1); + HEXA_NS::Vertex* hVertex2 = getHexaPtr(iv2); + HEXA_NS::Vertex* hVertex3 = getHexaPtr(iv3); - HEXA_NS::Elements* hElts = _hexaDocument->joinQuads( - hQuadsStart, hQuadDest, - hVertex0, hVertex1, hVertex2, hVertex3, - nb ); + HEXA_NS::Elements* hElts = _hexaDocument->joinQuads( + hQuadsStart, hQuadDest, + hVertex0, hVertex1, hVertex2, hVertex3, + nb ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } bool DocumentModel::mergeVertices( const QModelIndex &iv0, const QModelIndex &iv1 ) //CS_TODO : impact sur le model? { - bool ret = false; + HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); + HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); - HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); - HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); - - int r = _hexaDocument->mergeVertices( hv0, hv1 ); - if ( r == HOK ){ - updateData(); //CS_TODO more or less? - ret = true; - } else if ( r == HERR ){ - ret = false; - } + int r = _hexaDocument->mergeVertices( hv0, hv1 ); + if ( r == HOK ){ + updateData(); //CS_TODO more or less? + return true; + } - return ret; + return false; } bool DocumentModel::mergeEdges( const QModelIndex &ie0, const QModelIndex &ie1, - const QModelIndex &iv0, const QModelIndex &iv1 ) + const QModelIndex &iv0, const QModelIndex &iv1 ) //CS_TODO : impact sur le model? { - bool ret = false; - - HEXA_NS::Edge* he0 = getHexaPtr(ie0); - HEXA_NS::Edge* he1 = getHexaPtr(ie1); + HEXA_NS::Edge* he0 = getHexaPtr(ie0); + HEXA_NS::Edge* he1 = getHexaPtr(ie1); - HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); - HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); + HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); + HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); - int r = _hexaDocument->mergeEdges( he0, he1, hv0, hv1 ); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + //Merge + int r = _hexaDocument->mergeEdges( he0, he1, hv0, hv1 ); + if ( r == HOK ){ + updateData(); + return true; + } - return ret; + return false; } bool DocumentModel::mergeQuads( const QModelIndex& iquad0, const QModelIndex& iquad1, - const QModelIndex& iv0, const QModelIndex& iv1, - const QModelIndex& iv2, const QModelIndex& iv3 ) + const QModelIndex& iv0, const QModelIndex& iv1, + const QModelIndex& iv2, const QModelIndex& iv3 ) { - bool ret = false; + HEXA_NS::Quad* hquad0 = data(iquad0, HEXA_DATA_ROLE).value(); + HEXA_NS::Quad* hquad1 = data(iquad1, HEXA_DATA_ROLE).value(); - HEXA_NS::Quad* hquad0 = data(iquad0, HEXA_DATA_ROLE).value(); - HEXA_NS::Quad* hquad1 = data(iquad1, HEXA_DATA_ROLE).value(); + HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); + HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); + HEXA_NS::Vertex* hv2 = getHexaPtr(iv2); + HEXA_NS::Vertex* hv3 = getHexaPtr(iv3); - HEXA_NS::Vertex* hv0 = getHexaPtr(iv0); - HEXA_NS::Vertex* hv1 = getHexaPtr(iv1); - HEXA_NS::Vertex* hv2 = getHexaPtr(iv2); - HEXA_NS::Vertex* hv3 = getHexaPtr(iv3); - - int r = _hexaDocument->mergeQuads( hquad0, hquad1, hv0, hv1, hv2, hv3 ); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + int r = _hexaDocument->mergeQuads( hquad0, hquad1, hv0, hv1, hv2, hv3 ); + if ( r == HOK ){ + updateData(); + return true; + } - return ret; + return false; } // QModelIndex DocumentModel::disconnectVertex( const QModelIndex& ihexa, const QModelIndex& ivertex ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); - HEXA_NS::Vertex* hVertex = getHexaPtr(ivertex); + HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); + HEXA_NS::Vertex* hVertex = getHexaPtr(ivertex); - HEXA_NS::Elements* hElts = _hexaDocument->disconnectVertex( hHexa, hVertex ); + HEXA_NS::Elements* hElts = _hexaDocument->disconnectVertex( hHexa, hVertex ); + if ( BadElement(hElts) ) return iElts; - if ( hElts && hElts->isValid() ){ updateData(); //CS_TO_CHECK ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::disconnectEdge( const QModelIndex& ihexa, const QModelIndex& iedge ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); - HEXA_NS::Edge* hEdge = getHexaPtr(iedge); + HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); + HEXA_NS::Edge* hEdge = getHexaPtr(iedge); - HEXA_NS::Elements* hElts = _hexaDocument->disconnectEdge( hHexa, hEdge ); + HEXA_NS::Elements* hElts = _hexaDocument->disconnectEdge( hHexa, hEdge ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); //CS_TO_CHECK ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::disconnectEdges( const QModelIndexList& ihexas, const QModelIndexList& iedges ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Hexas hHexas; - HEXA_NS::Edges hEdges; + HEXA_NS::Hexas hHexas; + HEXA_NS::Edges hEdges; - //Construction de la liste des edges - HEXA_NS::Edge* hedge = NULL; - foreach( const QModelIndex& iedge, iedges ){ - hedge = getHexaPtr(iedge); - hEdges.push_back( hedge ); - } + //edges list + HEXA_NS::Edge* hedge = NULL; + foreach( const QModelIndex& iedge, iedges ){ + hedge = getHexaPtr(iedge); + hEdges.push_back( hedge ); + } - //Construction de la liste des hexas - HEXA_NS::Hexa* hhexa = NULL; - foreach( const QModelIndex& ihexa, ihexas ){ - hhexa = getHexaPtr(ihexa); - hHexas.push_back( hhexa ); - } + //hexas list + HEXA_NS::Hexa* hhexa = NULL; + foreach( const QModelIndex& ihexa, ihexas ){ + hhexa = getHexaPtr(ihexa); + hHexas.push_back( hhexa ); + } - HEXA_NS::Elements* hElts = _hexaDocument->disconnectEdges( hHexas, hEdges ); + HEXA_NS::Elements* hElts = _hexaDocument->disconnectEdges( hHexas, hEdges ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); //CS_TO_CHECK ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::disconnectQuad( const QModelIndex& ihexa, const QModelIndex& iquad ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); - HEXA_NS::Quad* hQuad = getHexaPtr(iquad); + HEXA_NS::Hexa* hHexa = getHexaPtr(ihexa); + HEXA_NS::Quad* hQuad = getHexaPtr(iquad); - HEXA_NS::Elements* hElts = _hexaDocument->disconnectQuad( hHexa, hQuad ); + HEXA_NS::Elements* hElts = _hexaDocument->disconnectQuad( hHexa, hQuad ); + if ( BadElement(hElts) ) return iElts; - if ( hElts->isValid() ){ updateData(); //CS_TO_CHECK ElementsItem* elts = new ElementsItem(hElts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete hElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::cutEdge( const QModelIndex &i_e0, int nbcuts ) //CS_TODO : impact sur le model? { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Edge* he0 = getHexaPtr(i_e0); - HEXA_NS::Elements* helts = _hexaDocument->cut( he0, nbcuts ); + HEXA_NS::Edge* he0 = getHexaPtr(i_e0); + HEXA_NS::Elements* helts = _hexaDocument->cut( he0, nbcuts ); + + if ( BadElement(helts) ) return iElts; - if ( helts->isValid() ){ updateData(); //CS_TODO more? ElementsItem* elts = new ElementsItem(helts); _elementsDirItem->appendRow(elts); iElts = elts->index(); - } else { - delete helts; - } - return iElts; + return iElts; } - - // Elements makeTranslation( in Elements l, in Vector vec ) // raises (SALOME::SALOME_Exception); QModelIndex DocumentModel::makeTranslation( const QModelIndex& ielts, const QModelIndex& ivec ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); - HEXA_NS::Elements* hNewElts = _hexaDocument->makeTranslation( hElts, hVec ); + HEXA_NS::Elements* hNewElts = _hexaDocument->makeTranslation( hElts, hVec ); + if ( BadElement(hNewElts) ) return iElts; - if ( hNewElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(hNewElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hNewElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::makeScale( const QModelIndex& ielts, const QModelIndex& ivex, double k ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(ivex); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(ivex); - HEXA_NS::Elements* hNewElts = _hexaDocument->makeScale( hElts, hVex, k ); + HEXA_NS::Elements* hNewElts = _hexaDocument->makeScale( hElts, hVex, k ); + if ( BadElement(hNewElts) ) return iElts; - if ( hNewElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(hNewElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hNewElts; - } - return iElts; + return iElts; } -QModelIndex DocumentModel::makeRotation( const QModelIndex& ielts, - const QModelIndex& iv, - const QModelIndex& ivec, double angle ) +QModelIndex DocumentModel::makeRotation( const QModelIndex& ielts, + const QModelIndex& iv, + const QModelIndex& ivec, double angle ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(iv); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(iv); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); - HEXA_NS::Elements* hNewElts = _hexaDocument->makeRotation( hElts, hVex, hVec, angle ); + HEXA_NS::Elements* hNewElts = _hexaDocument->makeRotation( hElts, hVex, hVec, angle ); + if ( BadElement(hNewElts) ) return iElts; - if ( hNewElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(hNewElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hNewElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::makeSymmetryPoint( const QModelIndex& ielts, const QModelIndex& iv ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(iv); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(iv); - HEXA_NS::Elements* hNewElts = _hexaDocument->makeSymmetryPoint (hElts, hVex); + HEXA_NS::Elements* hNewElts = _hexaDocument->makeSymmetryPoint (hElts, hVex); + if ( BadElement(hNewElts) ) return iElts; - if ( hNewElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(hNewElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hNewElts; - } - return iElts; + return iElts; } -QModelIndex DocumentModel::makeSymmetryLine( const QModelIndex& ielts, - const QModelIndex& iv, - const QModelIndex& ivec ) +QModelIndex DocumentModel::makeSymmetryLine( const QModelIndex& ielts, + const QModelIndex& iv, + const QModelIndex& ivec ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(iv); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(iv); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); - HEXA_NS::Elements* hNewElts = _hexaDocument->makeSymmetryLine( hElts, hVex, hVec ); + HEXA_NS::Elements* hNewElts = _hexaDocument->makeSymmetryLine( hElts, hVex, hVec ); + if ( BadElement(hNewElts) ) return iElts; - if ( hNewElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(hNewElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hNewElts; - } - return iElts; + return iElts; } QModelIndex DocumentModel::makeSymmetryPlane( const QModelIndex& ielts, const QModelIndex& iv, const QModelIndex& ivec ) { - QModelIndex iElts; + QModelIndex iElts; - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(iv); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(iv); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); - HEXA_NS::Elements* hNewElts = _hexaDocument->makeSymmetryPlane( hElts, hVex, hVec ); + HEXA_NS::Elements* hNewElts = _hexaDocument->makeSymmetryPlane( hElts, hVex, hVec ); + if ( BadElement(hNewElts) ) return iElts; - if ( hNewElts->isValid() ){ updateData(); //CS_TODO more or less? ElementsItem* eltsItem = new ElementsItem(hNewElts); _elementsDirItem->appendRow(eltsItem); iElts = eltsItem->index(); - } else { - delete hNewElts; - } - return iElts; + return iElts; } bool DocumentModel::performTranslation( const QModelIndex& ielts, const QModelIndex& ivec ) { - bool ret = false; + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); - - int r = _hexaDocument->performTranslation (hElts, hVec); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + int r = _hexaDocument->performTranslation (hElts, hVec); + if ( r == HOK ){ //Job well done? + updateData(); + return true; + } - return ret; + return false; } // bool DocumentModel::performScale( const QModelIndex& ielts, const QModelIndex& ivex, double k ) { - bool ret = false; - - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(ivex); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(ivex); - int r = _hexaDocument->performScale (hElts, hVex, k); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + int r = _hexaDocument->performScale (hElts, hVex, k); + if ( r == HOK ){ + updateData(); + return true; + } - return ret; + return false; } // bool DocumentModel::performRotation( const QModelIndex& ielts, const QModelIndex& ivex, const QModelIndex& ivec, double angle ) { - bool ret = false; - - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(ivex); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(ivex); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); - int r = _hexaDocument-> performRotation( hElts, hVex, hVec, angle ); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + int r = _hexaDocument-> performRotation( hElts, hVex, hVec, angle ); + if ( r == HOK ){ + updateData(); + return true; + } - return ret; + return false; } // bool DocumentModel::performSymmetryPoint( const QModelIndex& ielts, const QModelIndex& ivex ) { - bool ret = false; - - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(ivex); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(ivex); - int r = _hexaDocument->performSymmetryPoint( hElts, hVex ); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + int r = _hexaDocument->performSymmetryPoint( hElts, hVex ); + if ( r == HOK ){ + updateData(); + return true; + } - return ret; + return false; } bool DocumentModel::performSymmetryLine( const QModelIndex& ielts, const QModelIndex& ivex, const QModelIndex& ivec ) { - bool ret = false; - - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(ivex); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(ivex); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); - int r = _hexaDocument->performSymmetryLine( hElts, hVex, hVec ); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + int r = _hexaDocument->performSymmetryLine( hElts, hVex, hVec ); + if ( r == HOK ){ + updateData(); + return true; + } - return ret; + return false; } bool DocumentModel::performSymmetryPlane( const QModelIndex& ielts, - const QModelIndex& ivex, - const QModelIndex& ivec ) + const QModelIndex& ivex, + const QModelIndex& ivec ) { - bool ret = false; - - HEXA_NS::Elements* hElts = getHexaPtr(ielts); - HEXA_NS::Vertex* hVex = getHexaPtr(ivex); - HEXA_NS::Vector* hVec = getHexaPtr(ivec); + HEXA_NS::Elements* hElts = getHexaPtr(ielts); + HEXA_NS::Vertex* hVex = getHexaPtr(ivex); + HEXA_NS::Vector* hVec = getHexaPtr(ivec); - int r = _hexaDocument->performSymmetryPlane( hElts, hVex, hVec ); - if ( r == HOK ){ - updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + int r = _hexaDocument->performSymmetryPlane( hElts, hVex, hVec ); + if ( r == HOK ){ + updateData(); + return true; + } - return ret; + return false; } QModelIndex DocumentModel::revolutionQuads( const QModelIndexList& istartquads, - const QModelIndex& icenter, - const QModelIndex& ivecaxis, - const QList& angles ) + const QModelIndex& icenter, + const QModelIndex& ivecaxis, + const QList& angles ) { - QModelIndex ielts; + QModelIndex ielts; - HEXA_NS::Quads hstartquads; - HEXA_NS::Quad* hquad = NULL; - foreach( const QModelIndex& iquad, istartquads){ - hquad = data( iquad, HEXA_DATA_ROLE ).value(); - hstartquads.push_back( hquad ); - } - HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); - HEXA_NS::Vector* haxis = getHexaPtr(ivecaxis); - std::vector hangles = angles.toVector().toStdVector(); + HEXA_NS::Quads hstartquads; + HEXA_NS::Quad* hquad = NULL; + foreach( const QModelIndex& iquad, istartquads){ + hquad = data( iquad, HEXA_DATA_ROLE ).value(); + hstartquads.push_back( hquad ); + } + HEXA_NS::Vertex* hcenter = getHexaPtr(icenter); + HEXA_NS::Vector* haxis = getHexaPtr(ivecaxis); + std::vector hangles = angles.toVector().toStdVector(); - HEXA_NS::Elements* helts = _hexaDocument->revolutionQuads( hstartquads, hcenter, haxis, hangles ); + HEXA_NS::Elements* helts = _hexaDocument->revolutionQuads( hstartquads, hcenter, haxis, hangles ); + if ( BadElement(helts) ) return ielts; - if ( helts && helts->isValid() ){ updateData(); ElementsItem* eltsItem = new ElementsItem(helts); _elementsDirItem->appendRow(eltsItem); ielts = eltsItem->index(); - } else { - delete helts; - } - return ielts; + return ielts; } QModelIndex DocumentModel::replace( const QModelIndexList& iquadsPattern, - const QModelIndex& ip1, const QModelIndex& ic1, - const QModelIndex& ip2, const QModelIndex& ic2, - const QModelIndex& ip3, const QModelIndex& ic3 ) -{ - QModelIndex ielts; - - HEXA_NS::Vertex* hp1 = getHexaPtr(ip1); - HEXA_NS::Vertex* hc1 = getHexaPtr(ic1); - HEXA_NS::Vertex* hp2 = getHexaPtr(ip2); - HEXA_NS::Vertex* hc2 = getHexaPtr(ic2); - HEXA_NS::Vertex* hp3 = getHexaPtr(ip3); - HEXA_NS::Vertex* hc3 = getHexaPtr(ic3); - - HEXA_NS::Quads hquads; - HEXA_NS::Quad* hquad = NULL; - foreach( const QModelIndex& iquad, iquadsPattern ){ - hquad = getHexaPtr(iquad); - hquads.push_back( hquad ); - } - - HEXA_NS::Elements* helts = _hexaDocument->replace( hquads, - hp1, hc1, hp2, hc2, hp3, hc3 ); -// HEXA_NS::Elements* helts = NULL; - - if ( helts && helts->isValid() ){ + const QModelIndex& ip1, const QModelIndex& ic1, + const QModelIndex& ip2, const QModelIndex& ic2, + const QModelIndex& ip3, const QModelIndex& ic3 ) +{ + QModelIndex ielts; + + HEXA_NS::Vertex* hp1 = getHexaPtr(ip1); + HEXA_NS::Vertex* hc1 = getHexaPtr(ic1); + HEXA_NS::Vertex* hp2 = getHexaPtr(ip2); + HEXA_NS::Vertex* hc2 = getHexaPtr(ic2); + HEXA_NS::Vertex* hp3 = getHexaPtr(ip3); + HEXA_NS::Vertex* hc3 = getHexaPtr(ic3); + + HEXA_NS::Quads hquads; + HEXA_NS::Quad* hquad = NULL; + foreach( const QModelIndex& iquad, iquadsPattern ){ + hquad = getHexaPtr(iquad); + hquads.push_back( hquad ); + } + + HEXA_NS::Elements* helts = _hexaDocument->replace( hquads, + hp1, hc1, hp2, hc2, hp3, hc3 ); + if ( BadElement(helts) ) return ielts; + updateData(); ElementsItem* eltsItem = new ElementsItem(helts); _elementsDirItem->appendRow(eltsItem); ielts = eltsItem->index(); - } else { - delete helts; - } - return ielts; + return ielts; } // ************ ADD ASSOCIATION ************ // -void DocumentModel::addAssociation( const QModelIndex& iElt, const DocumentModel::GeomObj& assocIn ) -{ -// assocIn.name; - HEXA_NS::Shape* assoc = new HEXA_NS::Shape( assocIn.brep.toStdString() );//CS_TODO : delete assoc - assoc->debut = assocIn.start; - assoc->fin = assocIn.end; - assoc->ident = ( assocIn.entry + "," + assocIn.subid ).toStdString(); - _assocName[ assocIn.entry ] = assocIn.name; // for getAssociations() - - QString currentAssoc, newAssoc; - - if ( data(iElt, HEXA_TREE_ROLE) == VERTEX_TREE ){ - HEXA_NS::Vertex* hVex = getHexaPtr(iElt); - hVex->setAssociation( assoc ); - } else if ( data(iElt, HEXA_TREE_ROLE) == EDGE_TREE ){ - HEXA_NS::Edge* hEdge = getHexaPtr(iElt); - hEdge->addAssociation( assoc ); - } else if ( data(iElt, HEXA_TREE_ROLE) == QUAD_TREE ){ - HEXA_NS::Quad* hQuad = getHexaPtr(iElt); - hQuad->addAssociation( assoc ); - } - - currentAssoc = data( iElt, HEXA_ASSOC_ENTRY_ROLE ).toString(); - if ( !currentAssoc.isEmpty() ){ - newAssoc = currentAssoc + assocIn.entry + "," + assocIn.subid + ";"; - } else { - newAssoc = assocIn.entry + "," + assocIn.subid + ";"; - } - - setData( iElt, QVariant::fromValue(newAssoc), HEXA_ASSOC_ENTRY_ROLE ); -} - - -QList DocumentModel::getAssociations( const QModelIndex& iElt ) -{ - MESSAGE("DocumentModel::getAssociations( "<< iElt.data().toString().toStdString() << " )" ); - QList res; - DocumentModel::GeomObj assoc; - - //std::cout << "getAssociations() start" << std::endl; - if ( data(iElt, HEXA_TREE_ROLE) == VERTEX_TREE ){ - MESSAGE("* of a Vertex"); -// HEXA_NS::Vertex* hVex = data(iElt, HEXA_DATA_ROLE).value(); - HEXA_NS::Vertex *hVex = getHexaPtr(iElt); - HEXA_NS::Shape* hShape = hVex->getAssociation(); - QStringList shapeID; - if ( hShape != NULL ){ - assoc.entry = ""; - assoc.subid = QString::number(-1); - assoc.name = ""; - assoc.brep = hShape->getBrep().c_str(); - assoc.start = hShape->debut; - assoc.end = hShape->fin; - - shapeID = QString( hShape->ident.c_str() ).split(","); - if ( shapeID.count() == 2 ){ - assoc.entry = shapeID[0]; - assoc.subid = shapeID[1].isEmpty()? QString::number(-1) : shapeID[1]; - assoc.name = _assocName[assoc.entry]; - } - MESSAGE("* assoc.entry" << assoc.entry.toStdString() ); - MESSAGE("* assoc.subid" << assoc.subid.toStdString() ); - MESSAGE("* -----------" ); - res << assoc; - } - } else if ( data(iElt, HEXA_TREE_ROLE) == EDGE_TREE ){ - MESSAGE("* of an Edge"); - HEXA_NS::Edge* hEdge = getHexaPtr(iElt); - HEXA_NS::Shapes hShapes = hEdge->getAssociations(); - QStringList shapeID; - for ( HEXA_NS::Shapes::iterator it = hShapes.begin(); it != hShapes.end(); ++it){ - assoc.entry = ""; - assoc.subid = QString::number(-1); - assoc.name = ""; - assoc.brep = (*it)->getBrep().c_str(); - assoc.start = (*it)->debut; - assoc.end = (*it)->fin; - - MESSAGE("* assoc.ident " << (*it)->ident ); - shapeID = QString( (*it)->ident.c_str() ).split(","); - if ( shapeID.count() == 2 ){ - assoc.entry = shapeID[0]; - assoc.subid = shapeID[1].isEmpty()? QString::number(-1) : shapeID[1]; - assoc.name = _assocName[assoc.entry]; - } - MESSAGE("* assoc.entry" << assoc.entry.toStdString() ); - MESSAGE("* assoc.subid" << assoc.subid.toStdString() ); - MESSAGE("* assoc.brep" << assoc.brep.toStdString() ); - MESSAGE("* assoc.start" << assoc.start ); - MESSAGE("* assoc.end" << assoc.end ); - MESSAGE("* -----------" ); - res << assoc; - } - } else if ( data(iElt, HEXA_TREE_ROLE) == QUAD_TREE ){ - MESSAGE("* of a Quad"); - HEXA_NS::Quad* hQuad = getHexaPtr(iElt); - HEXA_NS::Shapes hShapes = hQuad->getAssociations(); - QStringList shapeID; - for ( HEXA_NS::Shapes::iterator it = hShapes.begin(); it != hShapes.end(); ++it){ - assoc.entry = ""; - assoc.subid = QString::number(-1); - assoc.name = ""; - assoc.brep = (*it)->getBrep().c_str(); - assoc.start = (*it)->debut; - assoc.end = (*it)->fin; - MESSAGE("* assoc.entry" << assoc.entry.toStdString() ); - MESSAGE("* assoc.subid" << assoc.subid.toStdString() ); -// MESSAGE("* assoc.brep" << assoc.brep.toStdString() ); -// MESSAGE("* assoc.start" << assoc.start ); -// MESSAGE("* assoc.end" << assoc.end ); - MESSAGE("* -----------" ); - shapeID = QString( (*it)->ident.c_str() ).split(","); - if ( shapeID.count() == 2 ){ - assoc.entry = shapeID[0]; - assoc.subid = shapeID[1].isEmpty()? QString::number(-1) : shapeID[1]; - assoc.name = _assocName[assoc.entry]; - } - - res << assoc; - } - } - - MESSAGE("}" ); - return res; -} - -// int associateOpenedLine (Edge* mstart, Edges& mline, Shape* gstart, -// double pstart, Shapes& gline, double pend); -// int associateClosedLine (Vertex* mfirst, Edge* mstart, Edges& mline, -// Shape* gstart, double pstart, Shapes& gline); + +//--------------- METHOD OBSOLETE +//void DocumentModel::addAssociation( const QModelIndex& iElt, const DocumentModel::GeomObj& assocIn ) +//{ +// // assocIn.name; +// HEXA_NS::Shape* assoc = new HEXA_NS::Shape( assocIn.brep.toStdString() );//CS_TODO : delete assoc +// assoc->setStart (assocIn.start); +// assoc->setEnd (assocIn.end); +// assoc->setIdent ( (assocIn.shapeName + "," + assocIn.subid).toStdString() ); +// +// QString currentAssoc, newAssoc; +// +// if ( data(iElt, HEXA_TREE_ROLE) == VERTEX_TREE ){ +// HEXA_NS::Vertex* hVex = getHexaPtr(iElt); +// hVex->setAssociation( assoc ); +// } else if ( data(iElt, HEXA_TREE_ROLE) == EDGE_TREE ){ +// HEXA_NS::Edge* hEdge = getHexaPtr(iElt); +// hEdge->addAssociation( assoc ); +// } else if ( data(iElt, HEXA_TREE_ROLE) == QUAD_TREE ){ +// HEXA_NS::Quad* hQuad = getHexaPtr(iElt); +// hQuad->addAssociation( assoc ); +// } +// +// currentAssoc = data( iElt, HEXA_ASSOC_ENTRY_ROLE ).toString(); +// if ( !currentAssoc.isEmpty() ){ +// newAssoc = currentAssoc + assocIn.shapeName + "," + assocIn.subid + ";"; +// } else { +// newAssoc = assocIn.shapeName + "," + assocIn.subid + ";"; +// } +// setData( iElt, QVariant::fromValue(newAssoc), HEXA_ASSOC_ENTRY_ROLE ); +//} +//-------------------------------- + + +QMultiMap< QString, int > DocumentModel::getAssocShapesIds(const QModelIndex& dataIndex) +{ + QMultiMap< QString, int > result; + HEXA_NS::NewShape* mainShape; + HEXA_NS::VertexShape* node; + HEXA_NS::EdgeShape* line; + HEXA_NS::FaceShape* face; + QString shapeName; + int subid; + + PatternDataSelectionModel* pdsm = HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel(); + QModelIndexList assocsInd = pdsm->getGeomAssociations(/*index*/dataIndex); + foreach( const QModelIndex& anAssoc, assocsInd ) + { + node = getHexaPtr(anAssoc); + line = getHexaPtr(anAssoc); + face = getHexaPtr(anAssoc); + + if (node != NULL) + { + mainShape = node->getParentShape(); + if (mainShape != NULL) + { + shapeName = mainShape->getName(); + subid = node->getIdent(); + } + } + else if (line != NULL) + { + mainShape = line->getParentShape(); + if (mainShape != NULL) + { + shapeName = mainShape->getName(); + subid = line->getIdent(); + } + } + else if (face != NULL) + { + mainShape = face->getParentShape(); + if (mainShape != NULL) + { + shapeName = mainShape->getName(); + subid = face->getIdent(); + } + } + + if (!shapeName.isEmpty()) + result.insert( shapeName, subid ); + + shapeName = QString(); + } + return result; +} + +bool DocumentModel::setVertexAssociation( const QModelIndex& iVertex, double x, double y, double z) +{ + HEXA_NS::Vertex* vertex = getHexaPtr(iVertex); + + if (vertex == NULL || _hexaDocument == NULL || vertex->setAssociation(x, y, z) != HOK) + return false; + + setData( iVertex, QVariant::fromValue(QString::number(x)+","+QString::number(y)+","+QString::number(z)), HEXA_ASSOC_ENTRY_ROLE ); + return true; +} + +bool DocumentModel::setVertexAssociation( const QModelIndex& iVertex, const QModelIndex& iGeomVertex) +{ + //parameters control + QString newAssoc; + HEXA_NS::Vertex* vertex = getHexaPtr(iVertex); + HEXA_NS::VertexShape* geomVertex = getHexaPtr(iGeomVertex); + if (_hexaDocument == NULL || vertex == NULL || geomVertex == NULL) return false; + HEXA_NS::NewShape* mainShape = geomVertex->getParentShape(); + if (mainShape == NULL) return false; + + //add association + if (vertex->setAssociation(geomVertex) != HOK) + return false; + + //update association state in the model + newAssoc = QString(mainShape->getName()) + "," + QString::number(geomVertex->getIdent()) + ";"; + setData( iVertex, QVariant::fromValue(newAssoc), HEXA_ASSOC_ENTRY_ROLE ); + + return true; +} + +bool DocumentModel::addEdgeAssociation( const QModelIndex& iEdge, const QModelIndex& iGeomEdge, double start, double end) +{ + //parameters control + QString currentAssoc, newAssoc; + HEXA_NS::Edge* edge = getHexaPtr(iEdge); + HEXA_NS::EdgeShape* geomEdge = getHexaPtr(iGeomEdge); + if (_hexaDocument == NULL || edge == NULL || + geomEdge == NULL || start > end) return false; + HEXA_NS::NewShape* mainShape = geomEdge->getParentShape(); + if (mainShape == NULL) return false; + + //add association in the engine side + if (edge->addAssociation(geomEdge, start, end) != HOK) + return false; + + //add/update association in the model side (UI) + currentAssoc = data(iEdge, HEXA_ASSOC_ENTRY_ROLE).toString(); + newAssoc = QString(mainShape->getName()) + "," + QString::number(geomEdge->getIdent()) + ";"; + if (!currentAssoc.isEmpty()) newAssoc = currentAssoc + newAssoc; + + setData( iEdge, QVariant::fromValue(newAssoc), HEXA_ASSOC_ENTRY_ROLE ); + + return true; +} + +bool DocumentModel::addQuadAssociation (const QModelIndex& iQuad, const QModelIndex& iGeomFace) +{ + //parameters control + QString currentAssoc, newAssoc; + HEXA_NS::Quad* quad = getHexaPtr(iQuad); + HEXA_NS::FaceShape* geomFace = getHexaPtr(iGeomFace); + if (_hexaDocument == NULL || quad == NULL || geomFace == NULL) + return false; + HEXA_NS::NewShape* mainShape = geomFace->getParentShape(); + if (mainShape == NULL) return false; + + //add association + if (quad->addAssociation(geomFace) != HOK) + return false; + + //update association + currentAssoc = data( iQuad, HEXA_ASSOC_ENTRY_ROLE).toString(); + newAssoc = QString(mainShape->getName()) + "," + QString::number(geomFace->getIdent()) + ";"; + if (!currentAssoc.isEmpty()) newAssoc = currentAssoc + newAssoc; + setData( iQuad, QVariant::fromValue(newAssoc), HEXA_ASSOC_ENTRY_ROLE ); + + return true; +} + + +QModelIndex DocumentModel::getVertexAssociation(const QModelIndex& iVertex) +{ + HEXA_NS::Vertex* vertex = getHexaPtr(iVertex); + if (vertex == NULL) return QModelIndex(); + + //get the associated geom vertex + HEXA_NS::VertexShape* geomVertex = vertex->getAssoVertex(); + if (geomVertex == NULL) return QModelIndex(); + + //convert geom vertex to qmodelindex + if (HEXABLOCKGUI::currentDocGView == NULL) return QModelIndex(); + PatternGeomSelectionModel* pgsm = HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel(); + PatternGeomModel* pgm = HEXABLOCKGUI::currentDocGView->getPatternGeomModel(); + if (pgsm == NULL || pgm == NULL) return QModelIndex(); + + return pgm->mapToSource(pgsm->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(geomVertex) )); +} + + +QList DocumentModel::getEdgeAssociations(const QModelIndex& iEdge) +{ + QList result; + HEXA_NS::Edge* edge = getHexaPtr(iEdge); + if (edge == NULL) return result; + + DocumentModel::GeomObj assoc; + HEXA_NS::EdgeShape* geomEdge; + HEXA_NS::AssoEdge* anEdgeAssoc; + HEXA_NS::NewShape* mainShape; + QString name; + + int nbAssocs = edge->countAssociation(); + for (int i = 0; i < nbAssocs; ++i) + { + anEdgeAssoc = edge->getAssociation(i); + if (anEdgeAssoc == NULL) continue; + geomEdge = anEdgeAssoc->getEdgeShape(); + if (geomEdge == NULL) continue; + mainShape = geomEdge->getParentShape(); + if (mainShape == NULL) continue; // => les generatrices ne sont pas gerees pour le moment + assoc.shapeName = mainShape->getName(); + assoc.subid = QString::number(geomEdge->getIdent()); + assoc.start = anEdgeAssoc->getStart(); + assoc.end = anEdgeAssoc->getEnd(); + result << assoc; + } + + return result; +} + + +QModelIndexList DocumentModel::getQuadAssociations(const QModelIndex& iQuad) +{ + QModelIndexList result; + QModelIndex geomQuadIndex; + HEXA_NS::Quad* quad = getHexaPtr(iQuad); + if (quad == NULL) return result; + + if (HEXABLOCKGUI::currentDocGView == NULL) return result; + PatternGeomSelectionModel* pgsm = HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel(); + PatternGeomModel* pgm = HEXABLOCKGUI::currentDocGView->getPatternGeomModel(); + if (pgsm == NULL || pgm == NULL) return result; + + HEXA_NS::FaceShape* geomFace; + + int nbAssocs = quad->countAssociation(); + for (int i = 0; i < nbAssocs; ++i) + { + geomFace = quad->getAssociation(i); + if (geomFace == NULL) continue; + + geomQuadIndex = pgm->mapToSource(pgsm->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(geomFace) )); + result << geomQuadIndex; + } + + return result; +} + +//--------------- METHOD OBSOLETE +//QList DocumentModel::getAssociations( const QModelIndex& iElt ) +//{ +// QList res; +// DocumentModel::GeomObj assoc; +// +// //std::cout << "getAssociations() start" << std::endl; +// if ( data(iElt, HEXA_TREE_ROLE) == VERTEX_TREE ){ +// // HEXA_NS::Vertex* hVex = data(iElt, HEXA_DATA_ROLE).value(); +// HEXA_NS::Vertex *hVex = getHexaPtr(iElt); +// HEXA_NS::Shape* hShape = hVex->getAssociation(); +// QStringList shapeID; +// if ( hShape != NULL ){ +// assoc.shapeName = QString(); +// assoc.subid = QString::number(-1); +// assoc.brep = hShape->getBrep().c_str(); +// assoc.start = hShape->getStart(); +// assoc.end = hShape->getEnd(); +// +// shapeID = QString( hShape->getIdent().c_str() ).split(","); +// if ( shapeID.count() == 2 ){ +// assoc.shapeName = shapeID[0]; +// assoc.subid = shapeID[1].isEmpty()? QString::number(-1) : shapeID[1]; +// } +// res << assoc; +// } +// } else if ( data(iElt, HEXA_TREE_ROLE) == EDGE_TREE ){ +// HEXA_NS::Edge* hEdge = getHexaPtr(iElt); +// HEXA_NS::Shapes hShapes = hEdge->getAssociations(); +// QStringList shapeID; +// for ( HEXA_NS::Shapes::iterator it = hShapes.begin(); it != hShapes.end(); ++it){ +// assoc.shapeName = QString(); +// assoc.subid = QString::number(-1); +// assoc.brep = (*it)->getBrep().c_str(); +// assoc.start = (*it)->getStart(); +// assoc.end = (*it)->getEnd(); +// +// shapeID = QString( (*it)->getIdent().c_str() ).split(","); +// if ( shapeID.count() == 2 ){ +// assoc.shapeName = shapeID[0]; +// assoc.subid = shapeID[1].isEmpty()? QString::number(-1) : shapeID[1]; +// } +// res << assoc; +// } +// } else if ( data(iElt, HEXA_TREE_ROLE) == QUAD_TREE ){ +// HEXA_NS::Quad* hQuad = getHexaPtr(iElt); +// HEXA_NS::Shapes hShapes = hQuad->getAssociations(); +// QStringList shapeID; +// for ( HEXA_NS::Shapes::iterator it = hShapes.begin(); it != hShapes.end(); ++it){ +// assoc.shapeName = QString(); +// assoc.subid = QString::number(-1); +// assoc.brep = (*it)->getBrep().c_str(); +// assoc.start = (*it)->getStart(); +// assoc.end = (*it)->getEnd(); +// shapeID = QString( (*it)->getIdent().c_str() ).split(","); +// if ( shapeID.count() == 2 ){ +// assoc.shapeName = shapeID[0]; +// assoc.subid = shapeID[1].isEmpty()? QString::number(-1) : shapeID[1]; +// } +// +// res << assoc; +// } +// } +// +// return res; +//} +//---------------------------------- + bool DocumentModel::associateOpenedLine( const QModelIndexList& iedges, - const GeomObjList& assocs, - double pstart, - double pend ) + HEXA_NS::NewShapes shapes, + HEXA_NS::IntVector subIds, + double pstart, + double pend ) { - MESSAGE("DocumentModel::associateOpenedLine() "); - bool ret = false; - HEXA_NS::Edge* mstart = NULL; + HEXA_NS::Edges mline; - HEXA_NS::Shape* gstart = NULL; -// double pstart; - HEXA_NS::Shapes gline; -// double pend; HEXA_NS::Edge* hedge = NULL; foreach( const QModelIndex& iedge, iedges ){ hedge = getHexaPtr(iedge); - if ( mstart == NULL ){ - mstart = hedge; - MESSAGE("* mstart" << iedge.data().toString().toStdString() ); - } else { + if (hedge != NULL) mline.push_back( hedge ); - MESSAGE("* mline :" << iedge.data().toString().toStdString() ); - } } - HEXA_NS::Shape* hshape = NULL; - foreach( const GeomObj& anAssoc, assocs ){ - hshape = new HEXA_NS::Shape( anAssoc.brep.toStdString() ); - hshape->debut = anAssoc.start; //0.; - hshape->fin = anAssoc.end; //1.; - hshape->ident = ( anAssoc.entry + "," + anAssoc.subid ).toStdString(); //anAssoc.entry.toStdString(); - - if ( gstart == NULL ){ - gstart = hshape; // CS_TODO :gstart.debut = pstart ?? - MESSAGE("* gstart->debut" << gstart->debut); - MESSAGE("* gstart->fin" << gstart->fin); - MESSAGE("* gstart->ident" << gstart->ident); - MESSAGE("* gstart->getBrep()" << gstart->getBrep()); -// pstart = anAssoc.start; - } else { - gline.push_back( hshape ); //CS_TODO : hshape.fin = pend ?? - MESSAGE("* gline->debut" << hshape->debut); - MESSAGE("* gline->fin" << hshape->fin); - MESSAGE("* gline->ident" << hshape->ident); - MESSAGE("* gline->getBrep()" << hshape->getBrep()); - } - } -// pend = assocs.last().end; - MESSAGE("* pstart" << pstart ); - MESSAGE("* pend" << pend ); - - int r = _hexaDocument->associateOpenedLine( mstart, mline, - gstart, pstart, gline, pend ); - if ( r == HOK ){ + int err = _hexaDocument->associateOpenedLine( mline, shapes, subIds, pstart, pend ); + if ( err == HOK ){ updateData(); - MESSAGE("* DocumentModel:: associateOpenedLine() => OK "); - ret = true; - } else if ( r == HERR ){ - MESSAGE("* DocumentModel:: associateOpenedLine() => ERR "); - ret = false; + return true; } - delete gstart; //CS_TODO : delete gline? - return ret; + return false; } + bool DocumentModel::associateClosedLine( const QModelIndex& ivertex, - const QModelIndexList& iedges, - const GeomObjList& assocs, - double pstart, - bool inv ) + const QModelIndexList& iedges, + HEXA_NS::NewShapes shapes, + HEXA_NS::IntVector subIds, + double pstart, + bool inv ) { - MESSAGE("DocumentModel::associateClosedLine() "); - bool ret = false; HEXA_NS::Vertex* mfirst = getHexaPtr(ivertex); - HEXA_NS::Edge* mstart = NULL; HEXA_NS::Edges mline; - HEXA_NS::Shape* gstart = NULL; -// double pstart; - HEXA_NS::Shapes gline; - HEXA_NS::Edge* hedge = NULL; foreach( const QModelIndex& iedge, iedges ){ hedge = getHexaPtr(iedge); - if ( mstart == NULL ){ - mstart = hedge; - MESSAGE("* mstart" << iedge.data().toString().toStdString() ); - } else { + if (hedge != NULL) mline.push_back( hedge ); - MESSAGE("* mline :" << iedge.data().toString().toStdString() ); - } } - HEXA_NS::Shape* hshape = NULL; - foreach( const GeomObj& anAssoc, assocs ){ - hshape = new HEXA_NS::Shape( anAssoc.brep.toStdString() ); - hshape->debut = anAssoc.start; //0.; - hshape->fin = anAssoc.end; //1.; - hshape->ident = ( anAssoc.entry + "," + anAssoc.subid ).toStdString();//anAssoc.entry.toStdString(); - - if ( gstart == NULL ){ - gstart = hshape; // CS_TODO :gstart.debut = pstart ?? -// pstart = anAssoc.start; - MESSAGE("* gstart->debut" << gstart->debut); - MESSAGE("* gstart->fin" << gstart->fin); - MESSAGE("* gstart->ident" << gstart->ident); - MESSAGE("* gstart->getBrep()" << gstart->getBrep()); - } else { - gline.push_back( hshape ); //CS_TODO : hshape.fin = pend ?? - MESSAGE("* gline->debut" << hshape->debut); - MESSAGE("* gline->fin" << hshape->fin); - MESSAGE("* gline->ident" << hshape->ident); - MESSAGE("* gline->getBrep()" << hshape->getBrep()); - } - } - MESSAGE("* pstart" << pstart ); - - int r = _hexaDocument->associateClosedLine( mfirst, mstart, mline, - gstart, pstart, inv, gline ); - if ( r == HOK ){ + int err = _hexaDocument->associateClosedLine( mfirst, mline, shapes, subIds, pstart, inv); + if ( err == HOK ){ updateData(); - ret = true; - } else if ( r == HERR ){ - ret = false; + return true; } - return ret; + return false; } // ************ GROUPS ************ // QModelIndex DocumentModel::addGroup( const QString& name, Group kind ) { - QModelIndex iGroup; + QModelIndex iGroup; - HEXA_NS::Group* hGroup = _hexaDocument->addGroup( name.toLocal8Bit().constData(), kind ); + HEXA_NS::Group* hGroup = _hexaDocument->addGroup( name.toLocal8Bit().constData(), kind ); + if ( hGroup == NULL ) return iGroup; - GroupItem* groupItem = new GroupItem(hGroup); - groupItem->setData( _entry, HEXA_DOC_ENTRY_ROLE ); - _groupDirItem->appendRow(groupItem); - iGroup = groupItem->index(); + GroupItem* groupItem = new GroupItem(hGroup); + groupItem->setData( _entry, HEXA_DOC_ENTRY_ROLE ); + _groupDirItem->appendRow(groupItem); + iGroup = groupItem->index(); - return iGroup; + return iGroup; } + // bool DocumentModel::removeGroup( const QModelIndex& igrp ) { - bool ret = false; + HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); + int r = _hexaDocument->removeGroup ( hGroup ); - HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); - int r = _hexaDocument->removeGroup ( hGroup ); + if ( r == HOK ){ + removeRow( igrp.row(), igrp.parent()); + return true; + } - if ( r == HOK ){ - removeRow( igrp.row(), igrp.parent()); - ret = true; - } else if ( r == HERR ){ - ret = false; - } - return ret; + return false; } /* QModelIndex* DocumentModel::found(eltBase) { TODO_JMD } -*/ + */ QModelIndexList DocumentModel::getGroupElements( const QModelIndex& iGroup, DocumentModel::Group& kind ) const { - QModelIndexList iElements; - - HEXA_NS::Group* g = iGroup.data(HEXA_DATA_ROLE).value(); - if ( !g ) return iElements; - - QModelIndexList iFound; - QVariant q; - HEXA_NS::EltBase* eltBase = NULL; - for ( int nr = 0; nr < g->countElement(); ++nr ){ - eltBase = g->getElement( nr ); - kind = g->getKind(); - switch ( kind ){ - case HEXA_NS::HexaCell: case HEXA_NS::HexaNode: q = QVariant::fromValue( (HEXA_NS::Hexa *)eltBase ); break; - case HEXA_NS::QuadCell: case HEXA_NS::QuadNode: q = QVariant::fromValue( (HEXA_NS::Quad *)eltBase ); break; - case HEXA_NS::EdgeCell: case HEXA_NS::EdgeNode: q = QVariant::fromValue( (HEXA_NS::Edge *)eltBase ); break; - case HEXA_NS::VertexNode: q = QVariant::fromValue( (HEXA_NS::Vertex *)eltBase ); break; - } - iFound = match( index(0, 0), - HEXA_DATA_ROLE, - q, - 1, - Qt::MatchRecursive ); - if ( !iFound.isEmpty() ) - iElements << iFound[0]; - } - return iElements; + QModelIndexList iElements; + + HEXA_NS::Group* g = iGroup.data(HEXA_DATA_ROLE).value(); + if ( g == NULL ) return iElements; + + QModelIndexList iFound; + QVariant q; + HEXA_NS::EltBase* eltBase = NULL; + for ( int nr = 0; nr < g->countElement(); ++nr ){ + eltBase = g->getElement( nr ); + kind = g->getKind(); + switch ( kind ){ + case HEXA_NS::HexaCell: case HEXA_NS::HexaNode: q = QVariant::fromValue( (HEXA_NS::Hexa *)eltBase ); break; + case HEXA_NS::QuadCell: case HEXA_NS::QuadNode: q = QVariant::fromValue( (HEXA_NS::Quad *)eltBase ); break; + case HEXA_NS::EdgeCell: case HEXA_NS::EdgeNode: q = QVariant::fromValue( (HEXA_NS::Edge *)eltBase ); break; + case HEXA_NS::VertexNode: q = QVariant::fromValue( (HEXA_NS::Vertex *)eltBase ); break; + } + iFound = match( index(0, 0), + HEXA_DATA_ROLE, + q, + 1, + Qt::MatchRecursive ); + if ( !iFound.isEmpty() ) + iElements << iFound[0]; + } + return iElements; } // 7.4 Boite: éditer un groupe void DocumentModel::setGroupName( const QModelIndex& igrp, const QString& name ) { - HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); + HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); - if ( hGroup ){ - hGroup->setName( name.toLocal8Bit().constData() ); - setData(igrp, QVariant::fromValue( name ) ); - } + if ( hGroup ){ + hGroup->setName( name.toLocal8Bit().constData() ); + setData(igrp, QVariant::fromValue( name ) ); + } } bool DocumentModel::addGroupElement( const QModelIndex& igrp, const QModelIndex& ielt ) { //CS_TODO : check input? add child? -// int addElement (EltBase* elt); + // int addElement (EltBase* elt); + + HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); + if (hGroup == NULL) return false; - bool addOk = false; - HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); - HEXA_NS::EltBase* hElt = NULL; - switch ( hGroup->getKind() ){ - case HEXA_NS::HexaCell: case HEXA_NS::HexaNode: hElt = getHexaPtr(ielt); break; - case HEXA_NS::QuadCell: case HEXA_NS::QuadNode: hElt = getHexaPtr(ielt); break; - case HEXA_NS::EdgeCell: case HEXA_NS::EdgeNode: hElt = getHexaPtr(ielt); break; - case HEXA_NS::VertexNode: hElt = getHexaPtr(ielt); break; - } + HEXA_NS::EltBase* hElt = NULL; + switch ( hGroup->getKind() ){ + case HEXA_NS::HexaCell: case HEXA_NS::HexaNode: hElt = getHexaPtr(ielt); break; + case HEXA_NS::QuadCell: case HEXA_NS::QuadNode: hElt = getHexaPtr(ielt); break; + case HEXA_NS::EdgeCell: case HEXA_NS::EdgeNode: hElt = getHexaPtr(ielt); break; + case HEXA_NS::VertexNode: hElt = getHexaPtr(ielt); break; + } - int res = HERR; - if ( hGroup and hElt ) - res = hGroup->addElement( hElt ); + int res = HERR; + if ( hElt != NULL ) + res = hGroup->addElement( hElt ); - if ( res == HOK ) addOk = true; + if ( res == HOK ) return true; - return addOk; + return false; } bool DocumentModel::removeGroupElement( const QModelIndex& igrp, int nro ) { //CS_TODO : remove child? - HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); + HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); + if (hGroup == NULL) return false; - if ( hGroup ) - { - if (hGroup->removeElement( nro ) == HOK) - return true; - } - return false; + if (hGroup->removeElement( nro ) == HOK) return true; + + return false; } bool DocumentModel::clearGroupElement( const QModelIndex& igrp ) { - HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); + HEXA_NS::Group* hGroup = data(igrp, HEXA_DATA_ROLE).value(); - if ( hGroup ) - { - hGroup->clearElement(); - return true; - } - return false; + if ( hGroup != NULL) + { + hGroup->clearElement(); + return true; + } + return false; } // ************ LAWS ************ @@ -2468,100 +2662,94 @@ bool DocumentModel::clearGroupElement( const QModelIndex& igrp ) // QModelIndex DocumentModel::addLaw( const QString& name, int nbnodes ) { - QModelIndex iLaw; + QModelIndex iLaw; - HEXA_NS::Law* hLaw = _hexaDocument->addLaw( name.toLocal8Bit().constData(), nbnodes ); + HEXA_NS::Law* hLaw = _hexaDocument->addLaw( name.toLocal8Bit().constData(), nbnodes ); + if ( BadElement(hLaw) ) return iLaw; - LawItem* lawItem = new LawItem(hLaw); - _lawDirItem->appendRow(lawItem); - iLaw = lawItem->index(); + LawItem* lawItem = new LawItem(hLaw); + _lawDirItem->appendRow(lawItem); + iLaw = lawItem->index(); - return iLaw; + return iLaw; } bool DocumentModel::setLaw( const QModelIndex& ilaw, int nbnodes, double coeff, KindLaw type ) { - bool ret = false; + bool ret = false; - HEXA_NS::Law* hLaw = data(ilaw, HEXA_DATA_ROLE).value(); + HEXA_NS::Law* hLaw = data(ilaw, HEXA_DATA_ROLE).value(); - if ( hLaw ){ - int ok; - ok = hLaw->setNodes( nbnodes ); - ( ok == HOK) ? ret = true : ret = false; - ok = hLaw->setCoefficient( coeff ); - hLaw->setKind(type); - } + if ( hLaw ){ + int ok; + ok = hLaw->setNodes( nbnodes ); + ( ok == HOK) ? ret = true : ret = false; + ok = hLaw->setCoefficient( coeff ); + hLaw->setKind(type); + } - return ret; + return ret; } -// +// bool DocumentModel::removeLaw( const QModelIndex& ilaw ) { - bool ret = false; - HEXA_NS::Law* hLaw = data(ilaw, HEXA_DATA_ROLE).value(); - int r = _hexaDocument->removeLaw( hLaw ); + HEXA_NS::Law* hLaw = data(ilaw, HEXA_DATA_ROLE).value(); + int r = _hexaDocument->removeLaw( hLaw ); - if ( r == HOK ){ - removeRow( ilaw.row(), ilaw.parent()); - ret = true; - } else if ( r == HERR ){ - ret = false; - } + if ( r == HOK ){ + removeRow( ilaw.row(), ilaw.parent()); + return true; + } - return ret; + return false; } bool DocumentModel::setPropagation( const QModelIndex& iPropagation, const QModelIndex& iLaw, bool way ) { - bool ret = false; - HEXA_NS::Propagation* hPropagation = data(iPropagation, HEXA_DATA_ROLE).value(); - HEXA_NS::Law* hLaw = data(iLaw, HEXA_DATA_ROLE).value(); + HEXA_NS::Propagation* hPropagation = data(iPropagation, HEXA_DATA_ROLE).value(); + HEXA_NS::Law* hLaw = data(iLaw, HEXA_DATA_ROLE).value(); + + int r = hPropagation->setLaw( hLaw ); + hPropagation->setWay( way ); - int r = hPropagation->setLaw( hLaw ); - hPropagation->setWay( way ); + if ( r == HOK ) return true; - if ( r == HOK ){ - ret = true; - } else if ( r == HERR ){ - ret = false; - } - return ret; + return false; } QModelIndexList DocumentModel::getPropagation( const QModelIndex& iPropagation ) const { - QModelIndexList iEdges; - - QModelIndexList iFound; - HEXA_NS::Propagation* propa = iPropagation.data(HEXA_DATA_ROLE).value(); - if ( !propa ) return iEdges; - - const HEXA_NS::Edges& edges = propa->getEdges(); - for ( HEXA_NS::Edges::const_iterator anEdge = edges.begin(); - anEdge != edges.end(); - ++anEdge ){ - iFound = match( index(0, 0), - HEXA_DATA_ROLE, - QVariant::fromValue( *anEdge ), - 1, - Qt::MatchRecursive); - if ( !iFound.isEmpty() ) - iEdges << iFound[0]; - } + QModelIndexList iEdges; + + QModelIndexList iFound; + HEXA_NS::Propagation* propa = iPropagation.data(HEXA_DATA_ROLE).value(); + if ( propa == NULL ) return iEdges; + + const HEXA_NS::Edges& edges = propa->getEdges(); + for ( HEXA_NS::Edges::const_iterator anEdge = edges.begin(); + anEdge != edges.end(); + ++anEdge ){ + iFound = match( index(0, 0), + HEXA_DATA_ROLE, + QVariant::fromValue( *anEdge ), + 1, + Qt::MatchRecursive); + if ( !iFound.isEmpty() ) + iEdges << iFound[0]; + } - return iEdges; + return iEdges; } HEXA_NS::Document* DocumentModel::documentImpl() { - return _hexaDocument; + return _hexaDocument; } QString DocumentModel::documentEntry() { - return _entry; + return _entry; } // 8.3 Boite: éditer une loi CS_TODO @@ -2569,17 +2757,17 @@ QString DocumentModel::documentEntry() /***************************************************************** PatternDataModel -*****************************************************************/ + *****************************************************************/ PatternDataModel::PatternDataModel( QObject * parent ) : - QSortFilterProxyModel( parent ) + QSortFilterProxyModel( parent ) { - QString dataRegExp = QString("(%1|%2|%3|%4|%5|%6|%7|%8)"). - arg(VERTEX_TREE).arg(EDGE_TREE).arg(QUAD_TREE).arg(HEXA_TREE). - arg(VERTEX_DIR_TREE).arg(EDGE_DIR_TREE).arg(QUAD_DIR_TREE).arg(HEXA_DIR_TREE); + QString dataRegExp = QString("(%1|%2|%3|%4|%5|%6|%7|%8)"). + arg(VERTEX_TREE).arg(EDGE_TREE).arg(QUAD_TREE).arg(HEXA_TREE). + arg(VERTEX_DIR_TREE).arg(EDGE_DIR_TREE).arg(QUAD_DIR_TREE).arg(HEXA_DIR_TREE); - setFilterRole(HEXA_TREE_ROLE); - setFilterRegExp ( QRegExp(dataRegExp) ); + setFilterRole(HEXA_TREE_ROLE); + setFilterRegExp ( QRegExp(dataRegExp) ); } PatternDataModel::~PatternDataModel() @@ -2588,245 +2776,297 @@ PatternDataModel::~PatternDataModel() HEXA_NS::Document* PatternDataModel::documentImpl() { - HEXA_NS::Document* doc = NULL; - DocumentModel *m = dynamic_cast( sourceModel() ); - if (m) doc = m->documentImpl(); - return doc; + HEXA_NS::Document* doc = NULL; + DocumentModel *m = dynamic_cast( sourceModel() ); + if (m) doc = m->documentImpl(); + return doc; } QString PatternDataModel::documentEntry() { - QString entry; - DocumentModel *m = dynamic_cast( sourceModel() ); - if (m) entry = m->documentEntry(); - return entry; + QString entry; + DocumentModel *m = dynamic_cast( sourceModel() ); + if (m) entry = m->documentEntry(); + return entry; } Qt::ItemFlags PatternDataModel::flags(const QModelIndex &index) const { -// MESSAGE("PatternDataModel::flags() "<< index.data().toString().toStdString() ); - Qt::ItemFlags flags; + Qt::ItemFlags flags; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - flags = m->flags( mapToSource(index) ); - } - return flags; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + flags = m->flags( mapToSource(index) ); + } + return flags; } QVariant PatternDataModel::headerData ( int section, Qt::Orientation orientation, int role ) const { - if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ - return QVariant( "Data" ); - } else { - return QSortFilterProxyModel::headerData ( section, orientation, role ); - } + if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ + return QVariant( "Data" ); + } else { + return QSortFilterProxyModel::headerData ( section, orientation, role ); + } } QStandardItem* PatternDataModel::itemFromIndex ( const QModelIndex & index ) const { - QStandardItem *item = NULL; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - item = m->itemFromIndex( mapToSource(index) ); - } - return item; + QStandardItem *item = NULL; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + item = m->itemFromIndex( mapToSource(index) ); + } + return item; } PatternBuilderModel::PatternBuilderModel( QObject * parent ) : - QSortFilterProxyModel( parent ) + QSortFilterProxyModel( parent ) { - QString builderRegExp =QString("(%1|%2|%3|%4|%5|%6|%7|%8|%9|%10)"). - arg(VECTOR_TREE).arg(CYLINDER_TREE).arg(PIPE_TREE).arg(ELEMENTS_TREE). - arg(CROSSELEMENTS_TREE).arg(VECTOR_DIR_TREE).arg(CYLINDER_DIR_TREE). - arg(PIPE_DIR_TREE).arg(ELEMENTS_DIR_TREE).arg(CROSSELEMENTS_DIR_TREE); + QString builderRegExp =QString("(%1|%2|%3|%4|%5|%6|%7|%8|%9|%10)"). + arg(VECTOR_TREE).arg(CYLINDER_TREE).arg(PIPE_TREE).arg(ELEMENTS_TREE). + arg(CROSSELEMENTS_TREE).arg(VECTOR_DIR_TREE).arg(CYLINDER_DIR_TREE). + arg(PIPE_DIR_TREE).arg(ELEMENTS_DIR_TREE).arg(CROSSELEMENTS_DIR_TREE); - setFilterRole( HEXA_TREE_ROLE ); - setFilterRegExp ( QRegExp(builderRegExp ) ); + setFilterRole( HEXA_TREE_ROLE ); + setFilterRegExp ( QRegExp(builderRegExp ) ); } -PatternBuilderModel::~PatternBuilderModel() +PatternBuilderModel::~PatternBuilderModel() { } Qt::ItemFlags PatternBuilderModel::flags(const QModelIndex &index) const { -// std::cout<<"PatternBuilderModel::flags()"<( sourceModel() ); - if ( m != NULL ){ - flags = m->flags( mapToSource(index) ); - } - return flags; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + flags = m->flags( mapToSource(index) ); + } + return flags; } QVariant PatternBuilderModel::headerData ( int section, Qt::Orientation orientation, int role ) const { - if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ - return QVariant( "Builder" ); - } else { - return QSortFilterProxyModel::headerData ( section, orientation, role ); - } + if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ + return QVariant( "Builder" ); + } else { + return QSortFilterProxyModel::headerData ( section, orientation, role ); + } } QStandardItem* PatternBuilderModel::itemFromIndex ( const QModelIndex & index ) const { - QStandardItem *item = NULL; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - item = m->itemFromIndex( mapToSource(index) ); - } - return item; + QStandardItem *item = NULL; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + item = m->itemFromIndex( mapToSource(index) ); + } + return item; +} + +//==================================================================== +// PatternGeomModel +//==================================================================== +PatternGeomModel::PatternGeomModel( QObject * parent ) : + QSortFilterProxyModel( parent ) +{ + QString builderRegExp =QString("(%1|%2|%3|%4|%5|%6|%7|%8|%9|%10|%11|%12|%13|%14)"). + arg(EXPLICIT_SHAPES_TREE).arg(IMPLICIT_SHAPES_TREE).arg(CLOUD_OF_POINTS_TREE). + arg(GEOMSHAPE_TREE).arg(GEOMPOINT_TREE).arg(GEOMEDGE_TREE).arg(GEOMFACE_TREE). + arg(EXPLICIT_SHAPES_DIR_TREE).arg(IMPLICIT_SHAPES_DIR_TREE).arg(CLOUD_OF_POINTS_DIR_TREE). + arg(GEOMSHAPE_DIR_TREE).arg(GEOMPOINT_DIR_TREE).arg(GEOMEDGE_DIR_TREE).arg(GEOMFACE_DIR_TREE); + + setFilterRole( HEXA_TREE_ROLE ); + setFilterRegExp ( QRegExp(builderRegExp ) ); +} + +PatternGeomModel::~PatternGeomModel() +{ +} + +Qt::ItemFlags PatternGeomModel::flags(const QModelIndex &index) const +{ + Qt::ItemFlags flags; + + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + flags = m->flags( mapToSource(index) ); + } + return flags; +} + +QVariant PatternGeomModel::headerData ( int section, Qt::Orientation orientation, int role ) const +{ + if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ + return QVariant( "Geometry" ); + } else { + return QSortFilterProxyModel::headerData ( section, orientation, role ); + } } +QStandardItem* PatternGeomModel::itemFromIndex ( const QModelIndex & index ) const +{ + QStandardItem *item = NULL; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + item = m->itemFromIndex( mapToSource(index) ); + } + return item; +} +//============================================================== + + + AssociationsModel::AssociationsModel( QObject * parent ) : - QSortFilterProxyModel( parent ) + QSortFilterProxyModel( parent ) { - QString assocRegExp;// =QString("(%1|%2)").arg(GROUP_TREE).arg(GROUP_DIR_TREE); CS_TODO + QString assocRegExp;// =QString("(%1|%2)").arg(GROUP_TREE).arg(GROUP_DIR_TREE); CS_TODO - setFilterRole( HEXA_TREE_ROLE ); - setFilterRegExp ( QRegExp(assocRegExp) ); + setFilterRole( HEXA_TREE_ROLE ); + setFilterRegExp ( QRegExp(assocRegExp) ); } -AssociationsModel::~AssociationsModel() +AssociationsModel::~AssociationsModel() { } Qt::ItemFlags AssociationsModel::flags(const QModelIndex &index) const { - Qt::ItemFlags flags; + Qt::ItemFlags flags; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - flags = m->flags( mapToSource(index) ); - } - return flags; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + flags = m->flags( mapToSource(index) ); + } + return flags; } QVariant AssociationsModel::headerData ( int section, Qt::Orientation orientation, int role ) const { - if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ - return QVariant( "Associations" ); - } else { - return QSortFilterProxyModel::headerData ( section, orientation, role ); - } + if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ + return QVariant( "Associations" ); + } else { + return QSortFilterProxyModel::headerData ( section, orientation, role ); + } } QStandardItem* AssociationsModel::itemFromIndex ( const QModelIndex & index ) const { - QStandardItem *item = NULL; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - item = m->itemFromIndex( mapToSource(index) ); - } - return item; + QStandardItem *item = NULL; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + item = m->itemFromIndex( mapToSource(index) ); + } + return item; } GroupsModel::GroupsModel( QObject * parent ) : - QSortFilterProxyModel( parent ) + QSortFilterProxyModel( parent ) { - QString groupsRegExp =QString("(%1|%2)").arg(GROUP_TREE).arg(GROUP_DIR_TREE); + QString groupsRegExp =QString("(%1|%2)").arg(GROUP_TREE).arg(GROUP_DIR_TREE); - setFilterRole( HEXA_TREE_ROLE ); - setFilterRegExp ( QRegExp(groupsRegExp ) ); + setFilterRole( HEXA_TREE_ROLE ); + setFilterRegExp ( QRegExp(groupsRegExp ) ); } -GroupsModel::~GroupsModel() +GroupsModel::~GroupsModel() { } Qt::ItemFlags GroupsModel::flags(const QModelIndex &index) const { - Qt::ItemFlags flags; + Qt::ItemFlags flags; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - flags = m->flags( mapToSource(index) ); - } - return flags; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + flags = m->flags( mapToSource(index) ); + } + return flags; } QVariant GroupsModel::headerData ( int section, Qt::Orientation orientation, int role ) const { - if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ - return QVariant( "Groups" ); - } else { - return QSortFilterProxyModel::headerData ( section, orientation, role ); - } + if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ + return QVariant( "Groups" ); + } else { + return QSortFilterProxyModel::headerData ( section, orientation, role ); + } } QStandardItem* GroupsModel::itemFromIndex ( const QModelIndex & index ) const { - QStandardItem *item = NULL; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - item = m->itemFromIndex( mapToSource(index) ); - } - return item; + QStandardItem *item = NULL; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + item = m->itemFromIndex( mapToSource(index) ); + } + return item; } QModelIndexList GroupsModel::getGroupElements( const QModelIndex& iGroup, DocumentModel::Group& kind ) const { - QModelIndexList elements; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - elements = m->getGroupElements( mapToSource(iGroup), kind ); - } - return elements; + QModelIndexList elements; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + elements = m->getGroupElements( mapToSource(iGroup), kind ); + } + return elements; } MeshModel::MeshModel( QObject * parent ) : - QSortFilterProxyModel( parent ) + QSortFilterProxyModel( parent ) { - QString meshRegExp =QString("(%1|%2|%3|%4)").arg(LAW_TREE).arg(LAW_DIR_TREE) .arg(PROPAGATION_TREE).arg(PROPAGATION_DIR_TREE); + QString meshRegExp =QString("(%1|%2|%3|%4)").arg(LAW_TREE).arg(LAW_DIR_TREE) .arg(PROPAGATION_TREE).arg(PROPAGATION_DIR_TREE); - setFilterRole( HEXA_TREE_ROLE ); - setFilterRegExp ( QRegExp(meshRegExp) ); + setFilterRole( HEXA_TREE_ROLE ); + setFilterRegExp ( QRegExp(meshRegExp) ); } -MeshModel::~MeshModel() +MeshModel::~MeshModel() { } Qt::ItemFlags MeshModel::flags(const QModelIndex &index) const { - Qt::ItemFlags flags; + Qt::ItemFlags flags; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - flags = m->flags( mapToSource(index) ); - } - return flags; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + flags = m->flags( mapToSource(index) ); + } + return flags; } QVariant MeshModel::headerData ( int section, Qt::Orientation orientation, int role ) const { - if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ - return QVariant( "Mesh" ); - } else { - return QSortFilterProxyModel::headerData ( section, orientation, role ); - } + if ( section == 0 and orientation == Qt::Horizontal and role == Qt::DisplayRole ){ + return QVariant( "Mesh" ); + } else { + return QSortFilterProxyModel::headerData ( section, orientation, role ); + } } QStandardItem* MeshModel::itemFromIndex ( const QModelIndex & index ) const { - QStandardItem *item = NULL; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - item = m->itemFromIndex( mapToSource(index) ); - } - return item; + QStandardItem *item = NULL; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + item = m->itemFromIndex( mapToSource(index) ); + } + return item; } QModelIndexList MeshModel::getPropagation( const QModelIndex& iPropagation ) const { - QModelIndexList edges; - DocumentModel *m = dynamic_cast( sourceModel() ); - if ( m != NULL ){ - edges = m->getPropagation( mapToSource(iPropagation) ); - } - return edges; + QModelIndexList edges; + DocumentModel *m = dynamic_cast( sourceModel() ); + if ( m != NULL ){ + edges = m->getPropagation( mapToSource(iPropagation) ); + } + return edges; } diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.hxx index 20b3227..11c9b75 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.hxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentModel.hxx @@ -29,6 +29,7 @@ #include "HEXABLOCKGUI_DocumentItem.hxx" #include "HexDocument.hxx" +#include "HexNewShape.hxx" namespace HEXABLOCK { @@ -38,410 +39,482 @@ namespace HEXABLOCK class DocumentModel : public QStandardItemModel { Q_OBJECT - public: - - // enum EnumGroup { HexaCell, QuadCell, EdgeCell, - // HexaNode, QuadNode, EdgeNode, Vertex_Node}; - typedef HEXA_NS::EnumGroup Group; - typedef HEXA_NS::KindLaw KindLaw; - - struct GeomObj - { - QString name; - QString entry; - QString subid; // sub-shape id - QString brep; - double start; - double end; - }; - - typedef QList GeomObjList; - - DocumentModel( HEXA_NS::Document* doc, const QString& entry, QObject * parent = 0 ); - DocumentModel( int rows, int columns, QObject * parent = 0 ); - - virtual ~DocumentModel(); - - - void setName(const QString& name); - QString getName(); - void load( const QString& xmlFileName ); - void save( const QString& xmlFileName ); - struct GeomObj* convertToGeomObj(GEOM::GeomObjPtr geomObjPtr); - void updateData(); - - void clearAll(); - void clearData(); - void clearBuilder(); - void clearAssociation(); - void clearGroups(); - void clearMesh(); - - void fillData(); - void fillBuilder(); - void fillAssociation(); - void fillGroups(); - void fillMesh(); + public: + + // enum EnumGroup { HexaCell, QuadCell, EdgeCell, + // HexaNode, QuadNode, EdgeNode, Vertex_Node}; + typedef HEXA_NS::EnumGroup Group; + typedef HEXA_NS::KindLaw KindLaw; + + struct GeomObj + { + QString shapeName; + QString name; + QString subid; // sub-shape id + QString brep; + double start; + double end; + }; + + typedef QList GeomObjList; + + DocumentModel( HEXA_NS::Document* doc, const QString& entry, QObject * parent = 0 ); + DocumentModel( int rows, int columns, QObject * parent = 0 ); + + virtual ~DocumentModel(); + + + void setName(const QString& name); + QString getName(); + HEXA_NS::Document* getHexaDocument() const { return _hexaDocument; } + void load( const QString& xmlFileName ); + void load(); //Loads the current document + void save( const QString& xmlFileName ); + struct GeomObj* convertToGeomObj(GEOM::GeomObjPtr geomObjPtr); + void updateData(); + void refresh(); //refresh data + bool isEmpty() const; + + void clearAll(); + void clearData(); + void clearBuilder(); + void clearGeometry(); + void clearAssociation(); + void clearGroups(); + void clearMesh(); + + void fillData(); + void fillBuilder(); + void fillGeometry(); + void fillAssociation(); + void fillGroups(); + void fillMesh(); + + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + + + void allowEdition(); + void disallowEdition(); + + // void setDefaultSelection(); + // void allowSelection(); + void allowDataSelectionOnly(); + void allowVertexSelectionOnly(); + void allowEdgeSelectionOnly(); + void allowQuadSelectionOnly(); + void allowHexaSelectionOnly(); + + void allowVectorSelectionOnly(); + void allowCylinderSelectionOnly(); + void allowPipeSelectionOnly(); + void allowElementsSelectionOnly(); + void allowCrossElementsSelectionOnly(); + + void allowLawSelectionOnly(); + + + HEXA_NS::EltBase* getHexaPtr(const QModelIndex& iElt); + template + T getHexaPtr(QModelIndex iElt) + { + if (iElt.isValid()) + return iElt.data( HEXA_DATA_ROLE ).value< T >(); + + return NULL; + } + + int getNbrElt(HEXA_NS::EnumElt eltType); + int getNbrUsedElt(HEXA_NS::EnumElt eltType); + int getNbrUnusedElt(HEXA_NS::EnumElt eltType); + + //associate a shape to the current document + bool addShape(TopoDS_Shape& forme, QString& shapeName); - virtual Qt::ItemFlags flags(const QModelIndex &index) const; + //returns the geom obj id in the document using its entry + QString getGeomObjName(QString& studyEntry) { + return docShapesName.contains(studyEntry) ? docShapesName[studyEntry] : QString(); + } + + //returns the geom obj entry in the document using its id + QString getGeomObjEntry(QString& shapeName) { + return docShapesEntry.contains(shapeName) ? docShapesEntry[shapeName] : QString(); + } + + //returns the document's shapes entries + QList getShapesEntries() const { return docShapesName.uniqueKeys(); } + //returns the associated geom index to the data index + HEXA_NS::SubShape* getGeomPtr(QString& id) + { + if (!shapeById.contains(id)) return NULL; + return shapeById[id]; + } - void allowEdition(); - void disallowEdition(); + void setGeomObjName(QString& studyEntry, QString& shapeName) {docShapesName[studyEntry] = shapeName;} + void setGeomObjEntry(QString& shapeName, QString& studyEntry) {docShapesEntry[shapeName] = studyEntry;} -// void setDefaultSelection(); -// void allowSelection(); - void allowDataSelectionOnly(); - void allowVertexSelectionOnly(); - void allowEdgeSelectionOnly(); - void allowQuadSelectionOnly(); - void allowHexaSelectionOnly(); + void setName( const QModelIndex& iElt, const QString& name ); + bool clearEltAssociations( const QModelIndex& iElt ); + HEXA_NS::Hexa* getQuadHexa(HEXA_NS::Quad* quad); - void allowVectorSelectionOnly(); - void allowCylinderSelectionOnly(); - void allowPipeSelectionOnly(); - void allowElementsSelectionOnly(); - void allowCrossElementsSelectionOnly(); + // ************ BUILD HEXABLOCK MODEL ************ + QModelIndex addVertex( double x, double y, double z ); - void allowLawSelectionOnly(); + // + QModelIndex addEdgeVertices (const QModelIndex &i_v0, const QModelIndex &i_v1 ); + QModelIndex addEdgeVector( const QModelIndex &i_v, const QModelIndex &i_vec ); + // + QModelIndex addQuadVertices( const QModelIndex &i_v0, const QModelIndex &i_v1, + const QModelIndex &i_v2, const QModelIndex &i_v3 ); + QModelIndex addQuadEdges( const QModelIndex &i_e0, const QModelIndex &i_e1, + const QModelIndex &i_e2, const QModelIndex &i_e3 ); - HEXA_NS::EltBase* getHexaPtr(const QModelIndex& iElt); - template - T getHexaPtr(QModelIndex iElt) - { - if (iElt.isValid()) - return iElt.data( HEXA_DATA_ROLE ).value< T >(); + // + QModelIndex addHexaVertices( const QModelIndex &i_v0, const QModelIndex &i_v1, + const QModelIndex &i_v2, const QModelIndex &i_v3, + const QModelIndex &i_v4, const QModelIndex &i_v5, + const QModelIndex &i_v6, const QModelIndex &i_v7 ); + QModelIndex addHexaQuad( const QModelIndex &i_q0, const QModelIndex &i_q1, const QModelIndex &i_q2, const QModelIndex &i_q3, const QModelIndex &i_q4, const QModelIndex &i_q5 ); - return NULL; - } + QModelIndex addHexaQuads( const QModelIndexList &i_quads ); //NEW HEXA3 - void setName( const QModelIndex& iElt, const QString& name ); - bool clearEltAssociations( const QModelIndex& iElt ); - HEXA_NS::Hexa* getQuadHexa(HEXA_NS::Quad* quad); - // ************ BUILD HEXABLOCK MODEL ************ - QModelIndex addVertex( double x, double y, double z ); + // + QModelIndex addVector( double dx, double dy, double dz ); + QModelIndex addVectorVertices( const QModelIndex &i_v0, const QModelIndex &i_v1 ); - // - QModelIndex addEdgeVertices (const QModelIndex &i_v0, const QModelIndex &i_v1 ); - QModelIndex addEdgeVector( const QModelIndex &i_v, const QModelIndex &i_vec ); + // + QModelIndex addCylinder( const QModelIndex &iv, const QModelIndex &ivec, double r, double h ); - // - QModelIndex addQuadVertices( const QModelIndex &i_v0, const QModelIndex &i_v1, - const QModelIndex &i_v2, const QModelIndex &i_v3 ); - QModelIndex addQuadEdges( const QModelIndex &i_e0, const QModelIndex &i_e1, - const QModelIndex &i_e2, const QModelIndex &i_e3 ); + // + QModelIndex addPipe( const QModelIndex &iv, const QModelIndex &ivec, double ri, double re, double h ); - // - QModelIndex addHexaVertices( const QModelIndex &i_v0, const QModelIndex &i_v1, - const QModelIndex &i_v2, const QModelIndex &i_v3, - const QModelIndex &i_v4, const QModelIndex &i_v5, - const QModelIndex &i_v6, const QModelIndex &i_v7 ); - QModelIndex addHexaQuad( const QModelIndex &i_q0, const QModelIndex &i_q1, const QModelIndex &i_q2, const QModelIndex &i_q3, const QModelIndex &i_q4, const QModelIndex &i_q5 ); - QModelIndex addHexaQuads( const QModelIndexList &i_quads ); //NEW HEXA3 + // + QModelIndex makeCartesian( const QModelIndex& ivex, + const QModelIndex& ivecx, const QModelIndex& ivecy, const QModelIndex& ivecz, + long nx, long ny, long nz); + QModelIndex makeCartesian( const QModelIndex& ivex, + const QModelIndex& ivec, + int nx, int ny, int nz ); - // - QModelIndex addVector( double dx, double dy, double dz ); - QModelIndex addVectorVertices( const QModelIndex &i_v0, const QModelIndex &i_v1 ); + QModelIndex makeCylindrical( const QModelIndex& i_pt, + const QModelIndex& i_vx, const QModelIndex& i_vz, + double dr, double da, double dl, + long nr, long na, long nl, + bool fill = false ); - // - QModelIndex addCylinder( const QModelIndex &iv, const QModelIndex &ivec, double r, double h ); - - // - QModelIndex addPipe( const QModelIndex &iv, const QModelIndex &ivec, double ri, double re, double h ); + QModelIndex makeCylindricals( + const QModelIndex& i_center, const QModelIndex& i_base, const QModelIndex& i_height, + QList< double> i_radius, QList i_angles, QList i_heights, + bool fill = false ); //NEW HEXA3 + QModelIndex makeSpherical( const QModelIndex& i_v, const QModelIndex& i_vec, int nb, double k = 1 ); //CS_TO_DEL - // - QModelIndex makeCartesian( const QModelIndex& ivex, - const QModelIndex& ivecx, const QModelIndex& ivecy, const QModelIndex& ivecz, - long nx, long ny, long nz); + QModelIndex makeSpherical( const QModelIndex& i_center, double rayon, int nb, double k = 1 ); - QModelIndex makeCartesian( const QModelIndex& ivex, - const QModelIndex& ivec, - int nx, int ny, int nz ); + // + QModelIndex makeCylinder( const QModelIndex& cyl, const QModelIndex& vec, + int nr, int na, int nl ); - QModelIndex makeCylindrical( const QModelIndex& i_pt, - const QModelIndex& i_vx, const QModelIndex& i_vz, - double dr, double da, double dl, - long nr, long na, long nl, - bool fill = false ); + // + QModelIndex makePipe( const QModelIndex& pipe, const QModelIndex& vecx, + int nr, int na, int nl ); - QModelIndex makeCylindricals( - const QModelIndex& i_center, const QModelIndex& i_base, const QModelIndex& i_height, - QList< double> i_radius, QList i_angles, QList i_heights, - bool fill = false ); //NEW HEXA3 + // + QModelIndex makeCylinders(const QModelIndex& cyl1, const QModelIndex& cyl2); - QModelIndex makeSpherical( const QModelIndex& i_v, const QModelIndex& i_vec, int nb, double k = 1 ); //CS_TO_DEL + // + QModelIndex makePipes( const QModelIndex& pipe1, const QModelIndex& pipe2 ); - QModelIndex makeSpherical( const QModelIndex& i_center, double rayon, int nb, double k = 1 ); - // - QModelIndex makeCylinder( const QModelIndex& cyl, const QModelIndex& vec, - int nr, int na, int nl ); - // - QModelIndex makePipe( const QModelIndex& pipe, const QModelIndex& vecx, - int nr, int na, int nl ); + QModelIndex makeRind( const QModelIndex& center, const QModelIndex& vecx, const QModelIndex& vecz, + double radext, double radint, double radhole, + const QModelIndex& plorig, + int nrad, int nang, int nhaut ); //NEW HEXA3 - // - QModelIndex makeCylinders(const QModelIndex& cyl1, const QModelIndex& cyl2); + QModelIndex makePartRind( const QModelIndex& center, const QModelIndex& vecx, const QModelIndex& vecz, + double radext, double radint, double radhole, + const QModelIndex& plorig, double angle, + int nrad, int nang, int nhaut ); //NEW HEXA3 - // - QModelIndex makePipes( const QModelIndex& pipe1, const QModelIndex& pipe2 ); + QModelIndex makeSphere( const QModelIndex& center, const QModelIndex& vecx, const QModelIndex& vecz, + double radius, double radhole, + const QModelIndex& plorig, + int nrad, int nang, int nhaut ); //NEW HEXA3 + QModelIndex makePartSphere( const QModelIndex& center, const QModelIndex& vecx, const QModelIndex& vecz, + double radius, double radhole, + const QModelIndex& plorig, double angle, + int nrad, int nang, int nhaut ); //NEW HEXA3 - - QModelIndex makeRind( const QModelIndex& center, const QModelIndex& vecx, const QModelIndex& vecz, - double radext, double radint, double radhole, - const QModelIndex& plorig, - int nrad, int nang, int nhaut ); //NEW HEXA3 + // ************ EDIT HEXABLOCK MODEL ************ - QModelIndex makePartRind( const QModelIndex& center, const QModelIndex& vecx, const QModelIndex& vecz, - double radext, double radint, double radhole, - const QModelIndex& plorig, double angle, - int nrad, int nang, int nhaut ); //NEW HEXA3 + bool updateVertex( const QModelIndex& vertex, double x, double y, double z ); - QModelIndex makeSphere( const QModelIndex& center, const QModelIndex& vecx, const QModelIndex& vecz, - double radius, double radhole, - const QModelIndex& plorig, - int nrad, int nang, int nhaut ); //NEW HEXA3 + // + bool removeHexa( const QModelIndex& hexa ); + bool removeConnectedHexa( const QModelIndex& hexa ); - QModelIndex makePartSphere( const QModelIndex& center, const QModelIndex& vecx, const QModelIndex& vecz, - double radius, double radhole, - const QModelIndex& plorig, double angle, - int nrad, int nang, int nhaut ); //NEW HEXA3 - // ************ EDIT HEXABLOCK MODEL ************ + // + QModelIndex prismQuad( const QModelIndex& quad, const QModelIndex& dv, int nb); + QModelIndex prismQuads( const QModelIndexList& quads, const QModelIndex& dv, int nb); + QModelIndex prismQuads( const QModelIndexList& quads, const QModelIndex& dv, std::vector, int nb=0); - bool updateVertex( const QModelIndex& vertex, double x, double y, double z ); + // + QModelIndex joinQuad( const QModelIndex& start_q, const QModelIndex& dest_q, + const QModelIndex& v0, const QModelIndex& v1, + const QModelIndex& v2, const QModelIndex& v3, + int nb ); - // - bool removeHexa( const QModelIndex& hexa ); - bool removeConnectedHexa( const QModelIndex& hexa ); + QModelIndex joinQuads( const QModelIndexList& start_q, const QModelIndex& dest_q, + const QModelIndex& v0, const QModelIndex& v1, + const QModelIndex& v2, const QModelIndex& v3, + int nb ); - // - QModelIndex prismQuad( const QModelIndex& quad, const QModelIndex& dv, int nb); - QModelIndex prismQuads( const QModelIndexList& quads, const QModelIndex& dv, int nb); - QModelIndex prismQuads( const QModelIndexList& quads, const QModelIndex& dv, std::vector, int nb=0); - // - QModelIndex joinQuad( const QModelIndex& start_q, const QModelIndex& dest_q, - const QModelIndex& v0, const QModelIndex& v1, - const QModelIndex& v2, const QModelIndex& v3, - int nb ); + // + bool mergeVertices( const QModelIndex& va, const QModelIndex& vb ); + bool mergeEdges( const QModelIndex& ea, const QModelIndex& eb, + const QModelIndex& v0, const QModelIndex& v1 ); + bool mergeQuads( const QModelIndex& qa, const QModelIndex& qb, + const QModelIndex& v0, const QModelIndex& v1, + const QModelIndex& v2, const QModelIndex& v3 ); + // + QModelIndex disconnectVertex( const QModelIndex& h, const QModelIndex& v ); + QModelIndex disconnectEdge( const QModelIndex& h, const QModelIndex& e ); + QModelIndex disconnectQuad( const QModelIndex& h, const QModelIndex& q ); + QModelIndex disconnectEdges( const QModelIndexList& h, const QModelIndexList& e ); - QModelIndex joinQuads( const QModelIndexList& start_q, const QModelIndex& dest_q, - const QModelIndex& v0, const QModelIndex& v1, - const QModelIndex& v2, const QModelIndex& v3, - int nb ); + // + QModelIndex cutEdge( const QModelIndex &e, int nbcuts ); + // + QModelIndex makeTranslation( const QModelIndex& elts, const QModelIndex& vec ); + QModelIndex makeScale( const QModelIndex& elts, const QModelIndex& v, double k ); - // - bool mergeVertices( const QModelIndex& va, const QModelIndex& vb ); - bool mergeEdges( const QModelIndex& ea, const QModelIndex& eb, - const QModelIndex& v0, const QModelIndex& v1 ); - bool mergeQuads( const QModelIndex& qa, const QModelIndex& qb, - const QModelIndex& v0, const QModelIndex& v1, - const QModelIndex& v2, const QModelIndex& v3 ); + // + QModelIndex makeRotation( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec, double angle ); - // - QModelIndex disconnectVertex( const QModelIndex& h, const QModelIndex& v ); - QModelIndex disconnectEdge( const QModelIndex& h, const QModelIndex& e ); - QModelIndex disconnectQuad( const QModelIndex& h, const QModelIndex& q ); - QModelIndex disconnectEdges( const QModelIndexList& h, const QModelIndexList& e ); + // + QModelIndex makeSymmetryPoint( const QModelIndex& elts, const QModelIndex& v ); + QModelIndex makeSymmetryLine( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec ); + QModelIndex makeSymmetryPlane( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec ); - // - QModelIndex cutEdge( const QModelIndex &e, int nbcuts ); + // + bool performTranslation( const QModelIndex& elts, const QModelIndex& vec ); - // - QModelIndex makeTranslation( const QModelIndex& elts, const QModelIndex& vec ); - QModelIndex makeScale( const QModelIndex& elts, const QModelIndex& v, double k ); + // + bool performScale( const QModelIndex& elts, const QModelIndex& v, double k ); - // - QModelIndex makeRotation( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec, double angle ); + // + bool performRotation( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec, double angle ); - // - QModelIndex makeSymmetryPoint( const QModelIndex& elts, const QModelIndex& v ); - QModelIndex makeSymmetryLine( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec ); - QModelIndex makeSymmetryPlane( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec ); + // + bool performSymmetryPoint( const QModelIndex& elts, const QModelIndex& v ); + bool performSymmetryLine( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec ); + bool performSymmetryPlane( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec ); - // - bool performTranslation( const QModelIndex& elts, const QModelIndex& vec ); - // - bool performScale( const QModelIndex& elts, const QModelIndex& v, double k ); + QModelIndex revolutionQuads( const QModelIndexList& startQuads, const QModelIndex& center, + const QModelIndex& vec_axis, const QList& angles); //NEW HEXA3 - // - bool performRotation( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec, double angle ); + QModelIndex replace( const QModelIndexList& quadsPattern, + const QModelIndex& p1, const QModelIndex& c1, + const QModelIndex& p2, const QModelIndex& c2, + const QModelIndex& p3, const QModelIndex& c3 ); //NEW HEXA3 - // - bool performSymmetryPoint( const QModelIndex& elts, const QModelIndex& v ); - bool performSymmetryLine( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec ); - bool performSymmetryPlane( const QModelIndex& elts, const QModelIndex& v, const QModelIndex& vec ); - QModelIndex revolutionQuads( const QModelIndexList& startQuads, const QModelIndex& center, - const QModelIndex& vec_axis, const QList& angles); //NEW HEXA3 - QModelIndex replace( const QModelIndexList& quadsPattern, - const QModelIndex& p1, const QModelIndex& c1, - const QModelIndex& p2, const QModelIndex& c2, - const QModelIndex& p3, const QModelIndex& c3 ); //NEW HEXA3 + // ************ ASSOCIATION ************ + // elt is Vertex, Edge, Quad +// void addAssociation( const QModelIndex& elt, const GeomObj& assoc ); //perime +// QList getAssociations( const QModelIndex& elt ); //perime + bool setVertexAssociation( const QModelIndex& iVertex, double x, double y, double z); + bool setVertexAssociation(const QModelIndex& iVertex, const QModelIndex& iGeomVertex); + bool addEdgeAssociation(const QModelIndex& iEdge, const QModelIndex& iGeomEdge, double start, double end); + bool addQuadAssociation (const QModelIndex& iQuad, const QModelIndex& iGeomFace); + QMultiMap< QString, int > getAssocShapesIds(const QModelIndex& dataIndex); + QModelIndex getVertexAssociation(const QModelIndex& iVertex); + QList getEdgeAssociations(const QModelIndex& iEdge); + QModelIndexList getQuadAssociations(const QModelIndex& iQuad); + //---------- perimees ------------- + bool associateOpenedLine( const QModelIndexList& edges, + const GeomObjList& assocs, + double pstart, + double pend ); - // ************ ASSOCIATION ************ - // elt is Vertex, Edge, Quad - void addAssociation( const QModelIndex& elt, const GeomObj& assoc ); - QList getAssociations( const QModelIndex& elt ); + bool associateClosedLine( const QModelIndex& vertex, + const QModelIndexList& edges, + const GeomObjList& assocs, + double pstart, + bool inv = false ); + //------------- - bool associateOpenedLine( const QModelIndexList& edges, - const GeomObjList& assocs, - double pstart, - double pend ); + bool associateOpenedLine( const QModelIndexList& edges, + HEXA_NS::NewShapes shapes, + HEXA_NS::IntVector subIds, + double pstart, + double pend ); - bool associateClosedLine( const QModelIndex& vertex, - const QModelIndexList& edges, - const GeomObjList& assocs, - double pstart, - bool inv = false ); + bool associateClosedLine( const QModelIndex& vertex, + const QModelIndexList& edges, + HEXA_NS::NewShapes shapes, + HEXA_NS::IntVector subIds, + double pstart, + bool inv = false ); + void clearAssociation(HEXA_NS::EnumElt& eltType); - // ************ GROUPS ************ - // - QModelIndex addGroup( const QString& name, Group kind ); + // ************ GROUPS ************ - // - bool removeGroup( const QModelIndex& grp ); + // + QModelIndex addGroup( const QString& name, Group kind ); - // - QModelIndexList getGroupElements( const QModelIndex& iGroup, Group& kind) const; + // + bool removeGroup( const QModelIndex& grp ); - // 7.4 Boite: éditer un groupe - void setGroupName( const QModelIndex& grp, const QString& name ); - bool addGroupElement( const QModelIndex& grp, const QModelIndex& elt ); - bool removeGroupElement( const QModelIndex& grp, int nro ); //CS_TODO - bool clearGroupElement( const QModelIndex& grp ); + // + QModelIndexList getGroupElements( const QModelIndex& iGroup, Group& kind) const; + // 7.4 Boite: éditer un groupe + void setGroupName( const QModelIndex& grp, const QString& name ); + bool addGroupElement( const QModelIndex& grp, const QModelIndex& elt ); + bool removeGroupElement( const QModelIndex& grp, int nro ); //CS_TODO + bool clearGroupElement( const QModelIndex& grp ); - // ************ LAWS ************ - // - QModelIndex addLaw( const QString& name, int nbnodes ); + // ************ LAWS ************ -// 8.2 Boite: créer une loi -// class Law -// { -// public: -// int setNodes (int nbre); -// int setCoefficient (double coeff); -// void setKind (KindLaw type); -// } + // + QModelIndex addLaw( const QString& name, int nbnodes ); - bool setLaw( const QModelIndex& ilaw, int nbnodes, double coeff, KindLaw type ); + // 8.2 Boite: créer une loi + // class Law + // { + // public: + // int setNodes (int nbre); + // int setCoefficient (double coeff); + // void setKind (KindLaw type); + // } - // - bool removeLaw( const QModelIndex& law ); + bool setLaw( const QModelIndex& ilaw, int nbnodes, double coeff, KindLaw type ); - // 8.3 Boite: éditer une loi - // (idem création) + // + bool removeLaw( const QModelIndex& law ); -// 9 Discrétisation -// 9.1 Boite: poser une loi de discrétisation sur une propagation -// int setLaw (Law* loi); -// void setWay (bool sens); - bool setPropagation( const QModelIndex& iPropagation, const QModelIndex& iLaw, bool way ); - QModelIndexList getPropagation( const QModelIndex& iPropagation ) const; + // 8.3 Boite: éditer une loi + // (idem création) -// -// 9.1 Boite: éditer -// (idem création) + // 9 Discrétisation + // 9.1 Boite: poser une loi de discrétisation sur une propagation + // int setLaw (Law* loi); + // void setWay (bool sens); + bool setPropagation( const QModelIndex& iPropagation, const QModelIndex& iLaw, bool way ); + QModelIndexList getPropagation( const QModelIndex& iPropagation ) const; + + // + // 9.1 Boite: éditer + // (idem création) // tools HEXA_NS::Document* documentImpl(); QString documentEntry(); -// QModelIndex indexBy( int role, const QString& value ); + // QModelIndex indexBy( int role, const QString& value ); signals: - void patternDataChanged(); - void nameChanged(const QString& name); - - private: - QTemporaryFile *_hexaFile; - HEXA_NS::Document *_hexaDocument; - QString _entry; - - QMap _assocName; // clé: id; valeur: nom - bool _disallowEdition; - - //data - QStandardItem *_vertexDirItem; - QStandardItem *_edgeDirItem; - QStandardItem *_quadDirItem; - QStandardItem *_hexaDirItem; - - //builder - QStandardItem *_vectorDirItem; - QStandardItem *_cylinderDirItem; - QStandardItem *_pipeDirItem; - QStandardItem *_elementsDirItem; - QStandardItem *_crossElementsDirItem; - - - //association - // CS_TODO - - - // groups - QStandardItem *_groupDirItem; - - // law - QStandardItem *_lawDirItem; - QStandardItem *_propagationDirItem; - - - Qt::ItemFlags _vertexItemFlags; - Qt::ItemFlags _edgeItemFlags; - Qt::ItemFlags _quadItemFlags; - Qt::ItemFlags _hexaItemFlags; - - Qt::ItemFlags _vectorItemFlags; - Qt::ItemFlags _cylinderItemFlags; - Qt::ItemFlags _pipeItemFlags; - Qt::ItemFlags _elementsItemFlags; - Qt::ItemFlags _crossElementsItemFlags; - - Qt::ItemFlags _groupItemFlags; - Qt::ItemFlags _lawItemFlags; - Qt::ItemFlags _propagationItemFlags; + void patternDataChanged(); + void nameChanged(const QString& name); - }; + private: + QTemporaryFile *_hexaFile; + HEXA_NS::Document *_hexaDocument; + QString _entry; + + //geom + QMap docShapesEntry; + QMap docShapesName; + QMap shapeById; + + QMap _assocName; // clé: id; valeur: nom + bool _disallowEdition; + + //data + QStandardItem *_vertexDirItem; + QStandardItem *_edgeDirItem; + QStandardItem *_quadDirItem; + QStandardItem *_hexaDirItem; + + //builder + QStandardItem *_vectorDirItem; + QStandardItem *_cylinderDirItem; + QStandardItem *_pipeDirItem; + QStandardItem *_elementsDirItem; + QStandardItem *_crossElementsDirItem; + + //geometry + QStandardItem *_explicitShapesDirItem; + QStandardItem *_implicitShapesDirItem; + QStandardItem *_cloudOfPointsDirItem; + //association + // CS_TODO + + + // groups + QStandardItem *_groupDirItem; + + // law + QStandardItem *_lawDirItem; + QStandardItem *_propagationDirItem; + + + Qt::ItemFlags _vertexItemFlags; + Qt::ItemFlags _edgeItemFlags; + Qt::ItemFlags _quadItemFlags; + Qt::ItemFlags _hexaItemFlags; + + Qt::ItemFlags _vectorItemFlags; + Qt::ItemFlags _cylinderItemFlags; + Qt::ItemFlags _pipeItemFlags; + Qt::ItemFlags _elementsItemFlags; + Qt::ItemFlags _crossElementsItemFlags; + + Qt::ItemFlags _groupItemFlags; + Qt::ItemFlags _lawItemFlags; + Qt::ItemFlags _propagationItemFlags; + + }; + class PatternDataModel : public QSortFilterProxyModel { - public: - PatternDataModel( QObject * parent = 0 ); - virtual ~PatternDataModel(); + public: + PatternDataModel( QObject * parent = 0 ); + virtual ~PatternDataModel(); - virtual Qt::ItemFlags flags(const QModelIndex &index) const; - virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; - QStandardItem * itemFromIndex ( const QModelIndex & index ) const; + QStandardItem * itemFromIndex ( const QModelIndex & index ) const; - HEXA_NS::Document* documentImpl(); - QString documentEntry(); + HEXA_NS::Document* documentImpl(); + QString documentEntry(); }; @@ -449,12 +522,24 @@ namespace HEXABLOCK class PatternBuilderModel : public QSortFilterProxyModel { - public: - PatternBuilderModel( QObject * parent = 0 ); - virtual ~PatternBuilderModel(); + public: + PatternBuilderModel( QObject * parent = 0 ); + virtual ~PatternBuilderModel(); + + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + QStandardItem * itemFromIndex ( const QModelIndex & index ) const; + }; + + class PatternGeomModel : public QSortFilterProxyModel + { + public: + PatternGeomModel( QObject* parent = 0); + virtual ~PatternGeomModel(); virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + QStandardItem * itemFromIndex ( const QModelIndex & index ) const; }; @@ -462,42 +547,42 @@ namespace HEXABLOCK class AssociationsModel : public QSortFilterProxyModel { - public: - AssociationsModel( QObject * parent = 0 ); - virtual ~AssociationsModel(); + public: + AssociationsModel( QObject * parent = 0 ); + virtual ~AssociationsModel(); - virtual Qt::ItemFlags flags(const QModelIndex &index) const; - virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; - QStandardItem * itemFromIndex ( const QModelIndex & index ) const; + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + QStandardItem * itemFromIndex ( const QModelIndex & index ) const; }; class GroupsModel : public QSortFilterProxyModel { - public: - GroupsModel( QObject * parent = 0 ); - virtual ~GroupsModel(); + public: + GroupsModel( QObject * parent = 0 ); + virtual ~GroupsModel(); - virtual Qt::ItemFlags flags(const QModelIndex &index) const; - virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; - QStandardItem * itemFromIndex ( const QModelIndex & index ) const; + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + QStandardItem * itemFromIndex ( const QModelIndex & index ) const; - QModelIndexList getGroupElements( const QModelIndex& iGroup, DocumentModel::Group& kind ) const; - }; + QModelIndexList getGroupElements( const QModelIndex& iGroup, DocumentModel::Group& kind ) const; + }; class MeshModel : public QSortFilterProxyModel { - public: - MeshModel( QObject * parent = 0 ); - virtual ~MeshModel(); + public: + MeshModel( QObject * parent = 0 ); + virtual ~MeshModel(); - virtual Qt::ItemFlags flags(const QModelIndex &index) const; - virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; - QStandardItem * itemFromIndex ( const QModelIndex & index ) const; + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + QStandardItem * itemFromIndex ( const QModelIndex & index ) const; - QModelIndexList getPropagation( const QModelIndex& iPropagation ) const; + QModelIndexList getPropagation( const QModelIndex& iPropagation ) const; }; diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.cxx index 27203c1..01decf1 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.cxx @@ -19,9 +19,10 @@ #include #include "HEXABLOCKGUI_DocumentPanel.hxx" -#include "HEXABLOCKGUI_DocumentGraphicView.hxx" +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" +#include "HEXABLOCKGUI_OccGraphicView.hxx" #include "HEXABLOCKGUI_SalomeTools.hxx" -#include "HEXABLOCKGUI.hxx" +//#include "HEXABLOCKGUI.hxx" #include @@ -36,7 +37,6 @@ #include #include -#include #include // #include @@ -92,229 +92,294 @@ Q_DECLARE_METATYPE(TopAbs_ShapeEnum); //General SpinBox Delegate class HexaDoubleSpinBoxDelegate : public QStyledItemDelegate { public: - HexaDoubleSpinBoxDelegate(QObject *parent=0) : QStyledItemDelegate (parent){} - - QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, - const QModelIndex &index) const{ - QDoubleSpinBox *sb = new QDoubleSpinBox( parent ); - sb->setDecimals(NB_DECIMALS); - return sb; - } + HexaDoubleSpinBoxDelegate(QObject *parent=0) : QStyledItemDelegate (parent){} + + QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, + const QModelIndex &index) const{ + QDoubleSpinBox *sb = new QDoubleSpinBox( parent ); + sb->setDecimals(NB_DECIMALS); + return sb; + } }; //Angle SpinBox Delegate class HexaAngleDoubleSpinBoxDelegate : public QStyledItemDelegate { public: - HexaAngleDoubleSpinBoxDelegate(QObject *parent=0) : QStyledItemDelegate (parent){} - - QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, - const QModelIndex &index) const{ - QDoubleSpinBox *sb = new QDoubleSpinBox( parent ); - sb->setMinimum(SPINBOX_POSITIVE_DOUBLE_MIN); - sb->setMaximum(SPINBOX_ANGLE_MAX); - sb->setDecimals(NB_DECIMALS); - return sb; - } + HexaAngleDoubleSpinBoxDelegate(QObject *parent=0) : QStyledItemDelegate (parent){} + + QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, + const QModelIndex &index) const{ + QDoubleSpinBox *sb = new QDoubleSpinBox( parent ); + sb->setMinimum(SPINBOX_POSITIVE_DOUBLE_MIN); + sb->setMaximum(SPINBOX_ANGLE_MAX); + sb->setDecimals(NB_DECIMALS); + return sb; + } }; //Positive DoubleSpinBox Delegate (for heigth, radius, ...) class HexaPositiveDoubleSpinBoxDelegate : public QStyledItemDelegate { public: - HexaPositiveDoubleSpinBoxDelegate(QObject *parent=0) : QStyledItemDelegate (parent){} - - QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, - const QModelIndex &index) const{ - QDoubleSpinBox *sb = new QDoubleSpinBox( parent ); - sb->setMinimum(SPINBOX_POSITIVE_DOUBLE_MIN); - /////// sb->setMaximum(1000000000000000); //10e15 Abu : Pb en 32 bits - sb->setMaximum(SPINBOX_DOUBLE_MAX); //10e9 - sb->setDecimals(NB_DECIMALS); - return sb; - } + HexaPositiveDoubleSpinBoxDelegate(QObject *parent=0) : QStyledItemDelegate (parent){} + + QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, + const QModelIndex &index) const{ + QDoubleSpinBox *sb = new QDoubleSpinBox( parent ); + sb->setMinimum(SPINBOX_POSITIVE_DOUBLE_MIN); + /////// sb->setMaximum(1000000000000000); //10e15 Abu : Pb en 32 bits + sb->setMaximum(SPINBOX_DOUBLE_MAX); //10e9 + sb->setDecimals(NB_DECIMALS); + return sb; + } }; // ======================================================== Constructeur HexaBaseDialog::HexaBaseDialog( QWidget * parent, Mode editmode, Qt::WindowFlags f ): - // _model(0), - // _selectionModel(0), - QDialog(parent, f), - MyGEOMBase_Helper( dynamic_cast(parent->parent()) ), - _editMode( editmode ), - _documentModel(0), - // _patternDataModel(0), - // _patternBuilderModel(0), - _patternDataSelectionModel(0), - _patternBuilderSelectionModel(0), - _groupsSelectionModel(0), - _meshSelectionModel(0), - _mgr(0), - _vtkVm(0), - _occVm(0), - _currentObj(0), - currentOCCSelectionMode(TopAbs_SHAPE), - _expectedSelection(-1), - _selectionMutex( false ), - // _applyCloseButton(0), - _applyButton(0), - debugEdgeAssoc(false) -{ - MESSAGE("HexaBaseDialog::HexaBaseDialog() dynamic_cast(parent->parent()) =>" << dynamic_cast(parent->parent()) ); - _strHexaWidgetType[VERTEX_TREE] = tr( "VERTEX" ); - _strHexaWidgetType[EDGE_TREE] = tr( "EDGE" ); - _strHexaWidgetType[QUAD_TREE] = tr( "QUAD" ); - _strHexaWidgetType[HEXA_TREE] = tr( "HEXA" ); - - _strHexaWidgetType[VECTOR_TREE] = tr( "VECTOR" ); - _strHexaWidgetType[CYLINDER_TREE] = tr( "CYLINDER" ); - _strHexaWidgetType[PIPE_TREE] = tr( "PIPE" ); - _strHexaWidgetType[ELEMENTS_TREE] = tr( "ELEMENTS" ); - _strHexaWidgetType[CROSSELEMENTS_TREE]= tr( "CROSSELEMENTS" ); - - _strHexaWidgetType[GROUP_TREE] = tr( "GROUP" ); - _strHexaWidgetType[LAW_TREE] = tr( "LAW" ); - _strHexaWidgetType[PROPAGATION_TREE]= tr( "PROPAGATION" ); -} - + QDialog(parent, f), + MyGEOMBase_Helper( dynamic_cast(parent->parent()) ), + _editMode( editmode ), + _currentObj(NULL), + _expectedSelection(-1), + _selectionMutex( false ), + // _applyCloseButton(0), + _applyButton(NULL), + debugEdgeAssoc(false), + autoFocusSwitch(true) +{ + _strHexaWidgetType[VERTEX_TREE] = tr( "VERTEX" ); + _strHexaWidgetType[EDGE_TREE] = tr( "EDGE" ); + _strHexaWidgetType[QUAD_TREE] = tr( "QUAD" ); + _strHexaWidgetType[HEXA_TREE] = tr( "HEXA" ); + + _strHexaWidgetType[VECTOR_TREE] = tr( "VECTOR" ); + _strHexaWidgetType[CYLINDER_TREE] = tr( "CYLINDER" ); + _strHexaWidgetType[PIPE_TREE] = tr( "PIPE" ); + _strHexaWidgetType[ELEMENTS_TREE] = tr( "ELEMENTS" ); + _strHexaWidgetType[CROSSELEMENTS_TREE]= tr( "CROSSELEMENTS" ); + + //geom + _strHexaWidgetType[GEOMSHAPE_TREE] = tr( "GEOMSHAPE" ); + _strHexaWidgetType[GEOMPOINT_TREE] = tr( "GEOMPOINT" ); + _strHexaWidgetType[GEOMEDGE_TREE] = tr( "GEOMEDGE" ); + _strHexaWidgetType[GEOMFACE_TREE] = tr( "GEOMFACE" ); + + + _strHexaWidgetType[GROUP_TREE] = tr( "GROUP" ); + _strHexaWidgetType[LAW_TREE] = tr( "LAW" ); + _strHexaWidgetType[PROPAGATION_TREE]= tr( "PROPAGATION" ); +} + +// ============================================================= getIndexList QModelIndexList HexaBaseDialog::getIndexList(QListWidget* itemsList) { - QModelIndexList iItems; - QModelIndex iItem; - QListWidgetItem* item = NULL; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if (patternDataModel == NULL) return iItems; + QModelIndexList iItems; + QModelIndex iItem; + QListWidgetItem* item = NULL; - unsigned int nbItems = itemsList->count(); - for ( int r = 0; r < nbItems; ++r){ - item = itemsList->item(r); - iItem = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - iItems << iItem; - } - return iItems; -} + const PatternDataModel* patternDataModel = getPatternDataModel(); + if (patternDataModel == NULL || itemsList == NULL) return iItems; + unsigned int nbItems = itemsList->count(); + for ( int r = 0; r < nbItems; ++r){ + item = itemsList->item(r); + iItem = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + iItems << iItem; + } + return iItems; +} // ============================================================= lockSizeToSizeHint void HexaBaseDialog::lockSizeToSizeHint() { - setMaximumHeight(sizeHint().height()); - setMaximumWidth(sizeHint().width()); -// setMinimumHeight(sizeHint().height()); -// setMinimumWidth(sizeHint().width()); + setMaximumHeight(sizeHint().height()); +// setMaximumWidth(sizeHint().width()); + // setMinimumHeight(sizeHint().height()); + // setMinimumWidth(sizeHint().width()); } // ============================================================= unlockSizeModification void HexaBaseDialog::unlockSizeModification() { - setMaximumHeight(MAX_HEIGHT); - setMaximumWidth(MAX_WIDTH); -// setMinimumHeight(MIN_HEIGHT); -// setMinimumWidth(MIN_WIDTH); + setMaximumHeight(MAX_HEIGHT); +// setMaximumWidth(MAX_WIDTH); + // setMinimumHeight(MIN_HEIGHT); + // setMinimumWidth(MIN_WIDTH); } // ============================================================= resetSizeAndShow void HexaBaseDialog::resetSizeAndShow(QDockWidget* parent) { - //force the dialog to fit its contain - lockSizeToSizeHint(); + //force the dialog to fit its contain + lockSizeToSizeHint(); + + //set the dialog in the dockwidget + parent->setWidget(this); + parent->setWindowTitle(windowTitle()); + parent->setVisible(true); + show(); + + unlockSizeModification(); +} + +//unlink the widget from the model +void HexaBaseDialog::modelUnregister(QWidget* widget) +{ + if (widget == NULL) return; + + //Update the line edit + widget->setProperty("QModelIndex", QVariant()); + _index[widget] = QModelIndex(); +} + +// ============================================================= connectDocumentGraphicView +void HexaBaseDialog::connectDocumentGraphicView(VtkDocumentGraphicView* docGView) +{ + if (docGView == NULL) docGView = HEXABLOCKGUI::currentDocGView; + if (docGView == NULL) return; + + disconnectDocumentGraphicView(docGView); //to avoid double connect + + //Connect the graphic view and its model to the dialog box + connect( docGView->getPatternDataSelectionModel(), SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + connect( docGView->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + connect( docGView->getPatternGeomSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + connect( docGView->getGroupsSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); + connect( docGView->getMeshSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ), Qt::UniqueConnection ); +} + +// ============================================================= disconnectDocumentGraphicView +void HexaBaseDialog::disconnectDocumentGraphicView(VtkDocumentGraphicView* docGView) +{ + if (docGView == NULL) docGView = HEXABLOCKGUI::currentDocGView; + if (docGView == NULL) return; + + + //Disconnect graphic view signals form the dialog box + disconnect(docGView->getPatternDataSelectionModel(), SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - //set the dialog in the dockwidget - parent->setWidget(this); - parent->setWindowTitle(windowTitle()); - parent->setVisible(true); - show(); + disconnect(docGView->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - unlockSizeModification(); + disconnect(docGView->getPatternGeomSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + + disconnect( docGView->getGroupsSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + + disconnect( docGView->getMeshSelectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); } // ============================================================= onCurrentSelectionChanged void HexaBaseDialog::onCurrentSelectionChanged() { - highlightSelectedAssocs(); + highlightSelectedAssocs(); } +void HexaBaseDialog::clearCurrentObjectFocus() +{ + QWidget* currentWidget = dynamic_cast(_currentObj); + if (currentWidget != NULL) + { + currentWidget->clearFocus(); + _currentObj = NULL; + } +} // ============================================================= setFocusToNextField //Sets focus to the next field of the current object void HexaBaseDialog::setFocusToNextField() { - activateWindow (); - _highlightWidget(_currentObj, Qt::white); - if (!debugEdgeAssoc) focusNextPrevChild(true); + activateWindow (); + + if (!HEXABLOCKGUI::assocInProgress && autoFocusSwitch) + { + _highlightWidget(_currentObj, Qt::white); + focusNextChild (); + } + + if (!_isLineOrListWidget(focusWidget())) clearVTKSelection(); + } // ============================================================== _initButtonBox QGroupBox* HexaBaseDialog::_initButtonBox( Mode editmode ) { - if ( editmode == INFO_MODE ) - return NULL; - - //QDialogButtonBox* buttonBox = new QDialogButtonBox(this); - QGroupBox* buttonBox = new QGroupBox(); - buttonBox->setMinimumWidth(BUTTON_BOX_MIN_WIDTH); - buttonBox->setObjectName(QString::fromUtf8("buttonBox")); - //buttonBox->setOrientation(Qt::Horizontal); - QHBoxLayout* buttonsHLayout = new QHBoxLayout(); - _applyButton = new QPushButton(tr("Apply")); - QPushButton* closeButton = new QPushButton(tr("Close")); - QPushButton* helpButton = new QPushButton(tr("Help")); - //_applyCloseButton = new QPushButton(tr("Apply And Close")); - - //connect( buttonBox, SIGNAL(clicked()), this, SLOT(applyAndClose()) ); - connect( _applyButton, SIGNAL(clicked()), this, SLOT(apply()) ); - connect( closeButton, SIGNAL(clicked()), this, SLOT(close()) ); - connect( helpButton, SIGNAL(clicked()), this, SLOT(onHelpRequested()) ); - - buttonsHLayout->addWidget( _applyButton ); - buttonsHLayout->addWidget( closeButton ); - buttonsHLayout->addStretch(1); - buttonsHLayout->addWidget( helpButton ); - //buttonsHLayout->addButton( _applyCloseButton ); - buttonBox->setLayout(buttonsHLayout); - layout()->addWidget(buttonBox); - buttonBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); - return buttonBox; + if ( editmode == INFO_MODE ) + return NULL; + + //QDialogButtonBox* buttonBox = new QDialogButtonBox(this); + QGroupBox* buttonBox = new QGroupBox(); + buttonBox->setMinimumWidth(BUTTON_BOX_MIN_WIDTH); + buttonBox->setObjectName(QString::fromUtf8("buttonBox")); + //buttonBox->setOrientation(Qt::Horizontal); + QHBoxLayout* buttonsHLayout = new QHBoxLayout(); + _applyButton = new QPushButton(tr("Apply")); + QPushButton* closeButton = new QPushButton(tr("Close")); + QPushButton* helpButton = new QPushButton(tr("Help")); + //_applyCloseButton = new QPushButton(tr("Apply And Close")); + + //connect( buttonBox, SIGNAL(clicked()), this, SLOT(applyAndClose()) ); + connect( _applyButton, SIGNAL(clicked()), this, SLOT(apply()), Qt::UniqueConnection ); + connect( closeButton, SIGNAL(clicked()), this, SLOT(close()), Qt::UniqueConnection ); + connect( helpButton, SIGNAL(clicked()), this, SLOT(onHelpRequested()), Qt::UniqueConnection ); + + buttonsHLayout->addWidget( _applyButton ); + buttonsHLayout->addWidget( closeButton ); + buttonsHLayout->addStretch(1); + buttonsHLayout->addWidget( helpButton ); + //buttonsHLayout->addButton( _applyCloseButton ); + buttonBox->setLayout(buttonsHLayout); + layout()->addWidget(buttonBox); + buttonBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + return buttonBox; } // ============================================================== _initWidget void HexaBaseDialog::_initWidget( Mode editmode ) { - _initInputWidget( editmode ); - _initButtonBox( editmode ); + _initInputWidget( editmode ); + _initButtonBox( editmode ); } - // ============================================================== _initViewManager void HexaBaseDialog::_initViewManager() { - SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); - _mgr = dynamic_cast( anApp->selectionMgr() ); - _occVm = anApp->getViewManager( OCCViewer_Viewer::Type(), true ); - _vtkVm = anApp->getViewManager( SVTK_Viewer::Type(), true ); - SUIT_ViewManager* activeVm = anApp->activeViewManager(); - onWindowActivated ( activeVm ); +// SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); +// if (anApp == NULL) return; +// _mgr = dynamic_cast( anApp->selectionMgr() ); +// _occVm = anApp->getViewManager( OCCViewer_Viewer::Type(), true ); +// _vtkVm = anApp->getViewManager( SVTK_Viewer::Type(), true ); +// SUIT_ViewManager* activeVm = anApp->activeViewManager(); +// onWindowActivated ( activeVm ); } - // ============================================================== apply bool HexaBaseDialog::apply() { - MESSAGE("HexaBaseDialog::apply()"); - QModelIndex iNew; - bool applied = apply(iNew); - if ( applied ){ - // clear all selection - if (_patternDataSelectionModel) _patternDataSelectionModel->clearSelection(); - if (_patternBuilderSelectionModel) _patternBuilderSelectionModel->clearSelection(); - if (_groupsSelectionModel) _groupsSelectionModel->clearSelection(); - if (_meshSelectionModel) _meshSelectionModel->clearSelection(); - // select and highlight in vtk view the result - _selectAndHighlight( iNew ); - // reinitialization -// _currentObj = NULL; - } - return applied; + QModelIndex iNew; + bool applied = apply(iNew); + if ( applied ){ + // clear all selection + if (getPatternDataSelectionModel() != NULL) getPatternDataSelectionModel()->clearSelection(); + if (getPatternBuilderSelectionModel() != NULL) getPatternBuilderSelectionModel()->clearSelection(); + if (getPatternGeomSelectionModel() != NULL) getPatternGeomSelectionModel()->clearSelection(); + if (getGroupsSelectionModel() != NULL) getGroupsSelectionModel()->clearSelection(); + if (getMeshSelectionModel() != NULL) getMeshSelectionModel()->clearSelection(); + // select and highlight in vtk view the result + _selectAndHighlight( iNew ); + // reinitialization + // _currentObj = NULL; + } + return applied; } // ============================================================== accept @@ -329,226 +394,238 @@ bool HexaBaseDialog::apply() void HexaBaseDialog::clearVTKSelection() { - if (HEXABLOCKGUI::currentVtkView == NULL) return; - HEXABLOCKGUI::currentVtkView->unHighlightAll(); - _disallowSelection(); + HEXABLOCKGUI::currentDocGView->clearSelection(); +// setFocus(); + _highlightWidget(_currentObj, Qt::white); +// _disallowSelection(); } void HexaBaseDialog::clearOCCSelection() { - if (HEXABLOCKGUI::selectionMgr() == NULL || HEXABLOCKGUI::currentOccView == NULL) return; - HEXABLOCKGUI::selectionMgr()->clearSelected(); - globalSelection(); - localSelection(GEOM::GEOM_Object::_nil(), TopAbs_SHAPE); + if (HEXABLOCKGUI::currentOccGView != NULL) + HEXABLOCKGUI::currentOccGView->clearSelection(); } // ============================================================== close void HexaBaseDialog::close() { -// _currentObj = NULL; - //Clear VTK selection - clearVTKSelection(); + //Clear vtk selection +// clearVTKSelection(); + + //reset the data selection pattern (forget all selections of the current context) +// if (getPatternDataSelectionModel() != NULL) +// getPatternDataSelectionModel()->reset(); +// +// if (getPatternGeomSelectionModel() != NULL) +// getPatternGeomSelectionModel()->reset(); - //Clear OCC selection - clearOCCSelection(); + //Clear occ selection +// clearOCCSelection(); - //Close the dialog box - if (parentWidget()) parentWidget()->close(); + //Close the dialog box + if (parentWidget()) parentWidget()->close(); } // ============================================================== onHelpRequested void HexaBaseDialog::onHelpRequested() { - LightApp_Application* app = (LightApp_Application*)( SUIT_Session::session()->activeApplication() ); - if ( app ) - // app->onHelpContextModule( myGeometryGUI ? app->moduleName( myGeometryGUI->moduleName() ) : QString( "" ), _helpFileName ); - app->onHelpContextModule( "HEXABLOCK", _helpFileName ); + LightApp_Application* app = (LightApp_Application*)( SUIT_Session::session()->activeApplication() ); + if ( app ) + // app->onHelpContextModule( myGeometryGUI ? app->moduleName( myGeometryGUI->moduleName() ) : QString( "" ), _helpFileName ); + app->onHelpContextModule( "HEXABLOCK", _helpFileName ); - else { - QString platform; + else { + QString platform; #ifdef WIN32 - platform = "winapplication"; + platform = "winapplication"; #else - platform = "application"; + platform = "application"; #endif - SUIT_MessageBox::warning( 0, QObject::tr( "WRN_WARNING" ), - QObject::tr( "EXTERNAL_BROWSER_CANNOT_SHOW_PAGE" ). - arg( app->resourceMgr()->stringValue( "ExternalBrowser", platform ) ).arg( _helpFileName ), - QObject::tr( "BUT_OK" ) ); - } + SUIT_MessageBox::warning( 0, QObject::tr( "WRN_WARNING" ), + QObject::tr( "EXTERNAL_BROWSER_CANNOT_SHOW_PAGE" ). + arg( app->resourceMgr()->stringValue( "ExternalBrowser", platform ) ).arg( _helpFileName ), + QObject::tr( "BUT_OK" ) ); + } } // ============================================================== highlightSelectedAssocs void HexaBaseDialog::highlightSelectedAssocs() { - if (!_patternDataSelectionModel || !HEXABLOCKGUI::selectionMgr()) return; - HEXABLOCKGUI::selectionMgr()->clearSelected(); + if (getPatternDataSelectionModel() == NULL || + HEXABLOCKGUI::selectionMgr() == NULL || + HEXABLOCKGUI::currentDocGView->getViewWindow() == NULL) return; - //highlight vtk selected elts - QModelIndexList vtkAssocs = getAssocsVTK(); - if (!vtkAssocs.isEmpty()) _patternDataSelectionModel->highlightVTKElts(vtkAssocs); + QMultiMap geomAssocs = getAssocsGEOM(); + QModelIndexList vtkAssocs = getAssocsVTK(); + + //highlight geom selected elts + if (geomAssocs.size() > 0) + { + HEXABLOCKGUI::selectionMgr()->clearSelected(); + HEXABLOCKGUI::currentOccGView->highlight(geomAssocs); + } + + //highlight vtk selected elts + if (!vtkAssocs.isEmpty()) + HEXABLOCKGUI::currentDocGView->highlight(vtkAssocs); +} - //highlight geom selected elts - QMultiMap geomAssocs = getAssocsGEOM(); - if (geomAssocs.size() > 0) _patternDataSelectionModel->_highlightGEOM(geomAssocs); +// ============================================================== refreshHighlight +void HexaBaseDialog::refreshHighlight() +{ + if (HEXABLOCKGUI::selectionMgr() != NULL) + HEXABLOCKGUI::selectionMgr()->clearSelected(); + highlightSelectedAssocs(); } // ============================================================== getObjectViewType -HexaBaseDialog::ViewType HexaBaseDialog::getObjectViewType(QObject* obj) +HEXABLOCKGUI::ViewType HexaBaseDialog::getObjectViewType(QObject* obj) { - if (obj == NULL) return NONE; - QVariant v = obj->property("HexaWidgetType"); - if ( v.isValid() ) return VTK; - v = obj->property("GeomWidgetType"); - if ( v.isValid() ) return OCC; - return NONE; + if (obj == NULL) return HEXABLOCKGUI::UNKNOWN; + QVariant v = obj->property("HexaWidgetType"); + if ( v.isValid() ) return HEXABLOCKGUI::VTK; + v = obj->property("GeomWidgetType"); + if ( v.isValid() ) return HEXABLOCKGUI::OCC; + return HEXABLOCKGUI::UNKNOWN; } // ============================================================== _selectAndHighlight void HexaBaseDialog::_selectAndHighlight( const QModelIndex& i ) { - if ( !i.isValid() ) return; - setProperty("QModelIndex", QVariant::fromValue(i)); - setFocus(); + if ( !i.isValid() ) return; + setProperty("QModelIndex", QVariant::fromValue(i)); + setFocus(); } // ============================================================== _allowSelection void HexaBaseDialog::_allowSelection() { - MESSAGE("HexaBaseDialog::_allowSelection(){"); - if ( _documentModel ){ - _documentModel->disallowEdition(); - } - MESSAGE("}"); + if ( getDocumentModel() ){ + getDocumentModel()->disallowEdition(); + } } // ============================================================== _disallowSelection void HexaBaseDialog::_disallowSelection() { - MESSAGE("HexaBaseDialog::_disallowSelection(){"); - if ( _documentModel ){ - _documentModel->allowEdition(); - } - if ( _patternDataSelectionModel ){ - _patternDataSelectionModel->setAllSelection(); - } - MESSAGE("}"); + if ( getDocumentModel() ){ + getDocumentModel()->allowEdition(); + } + HEXABLOCKGUI::currentDocGView->setAllSelection(); } -void HexaBaseDialog::setOCCSelectionMode(TopAbs_ShapeEnum mode) -{ - if (HEXABLOCKGUI::selectionMgr() != NULL) - { - HEXABLOCKGUI::selectionMgr()->clearSelected(); - globalSelection(); - localSelection(GEOM::GEOM_Object::_nil(), mode); - currentOCCSelectionMode = mode; - } -} // ============================================================== _allowVTKSelection bool HexaBaseDialog::_allowVTKSelection( QObject* obj ) { - MESSAGE("HexaBaseDialog::_allowVTKSelection(){"); - if ( !_patternDataSelectionModel ) return false; - bool isOk = false; - -// MESSAGE("* HEXABLOCKGUI::currentVtkView->raise()"); -// HEXABLOCKGUI::currentVtkView->raise(); -// HEXABLOCKGUI::currentVtkView->setFocus(); - QVariant v = obj->property("HexaWidgetType"); - HexaWidgetType wType = v.value(); - MESSAGE("* HexaWidgetType property is " << wType ); - - switch (wType){ - case VERTEX_TREE: - _patternDataSelectionModel->setVertexSelection(); isOk = true; - break; - case EDGE_TREE: - _patternDataSelectionModel->setEdgeSelection(); isOk = true; - break; - case QUAD_TREE: - _patternDataSelectionModel->setQuadSelection(); isOk = true; - break; - case HEXA_TREE: - _patternDataSelectionModel->setHexaSelection(); isOk = true; - break; - // case VECTOR_TREE: - // case CYLINDER_TREE: - // case PIPE_TREE: - // case ELEMENTS_TREE: - // case CROSSELEMENTS_TREE: //selector = _patternBuilderSelectionModel; - // case GROUP_TREE: //selector = _groupsSelectionModel; - // case LAW_TREE: - // case PROPAGATION_TREE: // selector = _meshSelectionModel; - default : MESSAGE("NOT YET"); - } - MESSAGE("}"); - return isOk; -} - -void HexaBaseDialog::refreshConnects() -{ - hide(); - show(); + bool isOk = false; + + QVariant v = obj->property("HexaWidgetType"); + HexaWidgetType wType = v.value(); + + switch (wType){ + case VERTEX_TREE: + HEXABLOCKGUI::currentDocGView->setVertexSelection(); isOk = true; + break; + case EDGE_TREE: + HEXABLOCKGUI::currentDocGView->setEdgeSelection(); isOk = true; + break; + case QUAD_TREE: + HEXABLOCKGUI::currentDocGView->setQuadSelection(); isOk = true; + break; + case HEXA_TREE: + HEXABLOCKGUI::currentDocGView->setHexaSelection(); isOk = true; + break; + // case VECTOR_TREE: + // case CYLINDER_TREE: + // case PIPE_TREE: + // case ELEMENTS_TREE: + // case CROSSELEMENTS_TREE: //selector = getPatternDataSelectionModel(); + // case GROUP_TREE: //selector = getGroupsSelectionModel(); + // case LAW_TREE: + // case PROPAGATION_TREE: // selector = getMeshSelectionModel(); + default: HEXABLOCKGUI::currentDocGView->setAllSelection(); + } + return isOk; } // ============================================================== _allowOCCSelection bool HexaBaseDialog::_allowOCCSelection( QObject* obj ) { - MESSAGE("HexaBaseDialog::_allowOCCCSelection(){"); - if ( HEXABLOCKGUI::currentOccView == NULL) return false; + QVariant v = obj->property("GeomWidgetType"); + GeomWidgetType wType = v.value(); + HEXABLOCKGUI::currentOccGView->setSelectionMode(wType); - QVariant v = obj->property("GeomWidgetType"); - GeomWidgetType wType = v.value(); - setOCCSelectionMode(wType); - return true; + return true; } // ============================================================== _getSelector QItemSelectionModel* HexaBaseDialog::_getSelector( QObject* obj ) { - QItemSelectionModel* selector = NULL; - MESSAGE("HexaBaseDialog::_getSelector(){"); - - QString objectName = obj->objectName(); - QString className = obj->metaObject()->className(); - MESSAGE("* obj->objectName() is "<< objectName.toStdString() ); //toStdString() - MESSAGE("* obj->metaObject()->className() is "<< className.toStdString() ); - - HexaWidgetType wtype; - QVariant v = obj->property("HexaWidgetType"); - if ( !v.isValid() ) { - MESSAGE("* no HexaWidgetType property"); - return NULL; - } - - wtype = v.value(); - MESSAGE("* HexaWidgetType property is " << wtype); - - switch (wtype){ - case VERTEX_TREE: - case EDGE_TREE: - case QUAD_TREE: - case HEXA_TREE: selector = _patternDataSelectionModel; break; - case VECTOR_TREE: - case CYLINDER_TREE: - case PIPE_TREE: - case ELEMENTS_TREE: - case CROSSELEMENTS_TREE: selector = _patternBuilderSelectionModel; break; - case GROUP_TREE: selector = _groupsSelectionModel; break; - case LAW_TREE: - case PROPAGATION_TREE: selector = _meshSelectionModel; break; - default : MESSAGE("NOT YET"); - } - MESSAGE("}"); - return selector; + QItemSelectionModel* selector = NULL; + + QString objectName = obj->objectName(); + QString className = obj->metaObject()->className(); + + HexaWidgetType wtype; + QVariant v = obj->property("HexaWidgetType"); + if ( !v.isValid() ) { + return NULL; + } + + wtype = v.value(); + + switch (wtype){ + case VERTEX_TREE: + case EDGE_TREE: + case QUAD_TREE: + case HEXA_TREE: selector = getPatternDataSelectionModel(); break; + case VECTOR_TREE: + case CYLINDER_TREE: + case PIPE_TREE: + case ELEMENTS_TREE: + case CROSSELEMENTS_TREE: selector = getPatternBuilderSelectionModel(); break; + case GEOMPOINT_TREE: + case GEOMEDGE_TREE: + case GEOMFACE_TREE: selector = getPatternGeomSelectionModel(); break; + case GROUP_TREE: selector = getGroupsSelectionModel(); break; + case LAW_TREE: + case PROPAGATION_TREE: selector = getMeshSelectionModel(); break; + default : ; + } + return selector; +} + +DocumentModel::GeomObj* HexaBaseDialog::getGeomObj(const QModelIndex& index) +{ + HEXA_NS::NewShape* aSh = getDocumentModel()->getHexaPtr(index); + DocumentModel::GeomObj* geomObj = NULL; + if (aSh != NULL) + { + geomObj = new DocumentModel::GeomObj; + geomObj->shapeName = aSh->getName(); + geomObj->subid = QString::number(-1); + } + else + { + HEXA_NS::EltBase* aSShElt = getDocumentModel()->getHexaPtr(index); + HEXA_NS::SubShape* aSSh = dynamic_cast(aSShElt); + if (aSSh != NULL) + { + geomObj = new DocumentModel::GeomObj; + QString shapeName; + if (aSSh->getParentShape() != NULL) + shapeName = aSSh->getParentShape()->getName(); + geomObj->shapeName = shapeName; + geomObj->subid = QString::number(aSSh->getIdent()); + } + } + return geomObj; } - // ============================================================== _onSelectionChanged /* * Puts elements selected in the model (treeview) in the corresponding @@ -556,40 +633,45 @@ QItemSelectionModel* HexaBaseDialog::_getSelector( QObject* obj ) */ bool HexaBaseDialog::_onSelectionChanged( const QItemSelection& sel, QLineEdit* le ) { - MESSAGE("HexaBaseDialog::_onSelectionChanged(const QItemSelection& sel, QLineEdit* le)"); - MESSAGE("* le is "<< le->objectName().toStdString() ); - QModelIndexList l = sel.indexes(); - if ( l.count() == 0 ) return false; - - //type from selection (first) - QModelIndex selected = l[0]; - int selType = selected.data(HEXA_TREE_ROLE).toInt(); - - //type of widget - QVariant v = le->property("HexaWidgetType"); - if ( !v.isValid() ) return false; - HexaWidgetType wType = v.value(); - - // check selection compatibility between selection and widget - if ( selType != wType ){ - MESSAGE("* bad selection : " << selType << " is not " << wType ); - SUIT_MessageBox::information( 0, - tr("HEXA_INFO"), - tr("%1: Bad type selected\nPlease select a %2.").arg(windowTitle()).arg(_strHexaWidgetType[wType])); - return false; - } - - //fill the lineEdit if selection is OK - le->setText( selected.data().toString() );// namee - le->setProperty("QModelIndex", QVariant::fromValue(selected) ); - _index[le] = selected; - - QLineEdit* lineEdit = dynamic_cast(_currentObj); - if (selected.isValid() && lineEdit != NULL) - setFocusToNextField(); - - MESSAGE("}"); - return true; + QModelIndexList l = sel.indexes(); + if ( l.count() == 0 ) return false; + + //type from selection (first) + QModelIndex selected = l[0]; + int selType = selected.data(HEXA_TREE_ROLE).toInt(); + + //type of widget + QVariant v = le->property("HexaWidgetType"); + if ( !v.isValid() ) return false; + HexaWidgetType wType = v.value(); + + // check selection compatibility between selection and widget + if ( selType != wType ){ + SUIT_MessageBox::information( 0, + tr("HEXA_INFO"), + tr("%1: Bad type selected\nPlease select a %2.").arg(windowTitle()).arg(_strHexaWidgetType[wType])); + return false; + } + if (le->property("GeomWidgetType").isValid()) + { + DocumentModel::GeomObj* geomObj = getGeomObj(selected); + if (geomObj != NULL) + { + le->setProperty("GeomObj", QVariant::fromValue(*geomObj)); + setCurrentGeomObj(geomObj); + } + } + + //fill the lineEdit if selection is OK + le->setText( selected.data().toString() );// namee + le->setProperty("QModelIndex", QVariant::fromValue(selected) ); + _index[le] = selected; + + QLineEdit* lineEdit = dynamic_cast(_currentObj); + if (selected.isValid() && lineEdit != NULL) + setFocusToNextField(); + + return true; } // ============================================================== _onSelectionChanged @@ -599,45 +681,47 @@ bool HexaBaseDialog::_onSelectionChanged( const QItemSelection& sel, QLineEdit* */ bool HexaBaseDialog::_onSelectionChanged( const QItemSelection& sel, QListWidget* lw ) { - MESSAGE("HexaBaseDialog::_onSelectionChanged( const QItemSelection& sel, QListWidget* lw )"); - MESSAGE("* lw is "<< lw->objectName().toStdString() ); - QModelIndexList l = sel.indexes(); - - if ( l.count() == 0 ) return false; - - //type of widget - QVariant v = lw->property("HexaWidgetType"); - if ( !v.isValid() ) return false; - HexaWidgetType wType = v.value(); - - //fill the listWidget - QListWidgetItem* item = NULL; - int selType; - QString selName; - // int maxSize = 8; - foreach( const QModelIndex& isel, l ){ - // if ( lw->count() == maxSize) break; - selType = isel.data(HEXA_TREE_ROLE).toInt(); - if ( selType != wType ){ // check selection compatibility between selection and widget - MESSAGE("* bad selection : " << selType<< " is not " << wType ); - SUIT_MessageBox::information( 0, - tr("HEXA_INFO"), - tr("%1: Bad type selected\nPlease select a %2.").arg(windowTitle()).arg( _strHexaWidgetType[wType]) ); - return false; - } - // add selection to listWidget if selection is OK - selName = isel.data().toString(); - QList twice = lw->findItems( selName, Qt::MatchExactly); - if ( twice.count() == 0 ){ - item = new QListWidgetItem( selName ); - item->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(isel) ); - item->setData(LW_DATA_ROLE, isel.data(HEXA_DATA_ROLE)); - lw->addItem(item); - updateButtonBox(); - } - } - MESSAGE("}"); - return true; + QModelIndexList l = sel.indexes(); + + if ( l.count() == 0 ) return false; + + //type of widget + QVariant v = lw->property("HexaWidgetType"); + if ( !v.isValid() ) return false; + HexaWidgetType wType = v.value(); + + //fill the listWidget + QListWidgetItem* item = NULL; + int selType; + QString selName; + // int maxSize = 8; + foreach( const QModelIndex& isel, l ){ + // if ( lw->count() == maxSize) break; + selType = isel.data(HEXA_TREE_ROLE).toInt(); + if ( selType != wType ){ // check selection compatibility between selection and widget + SUIT_MessageBox::information( 0, + tr("HEXA_INFO"), + tr("%1: Bad type selected\nPlease select a %2.").arg(windowTitle()).arg( _strHexaWidgetType[wType]) ); + return false; + } + // add selection to listWidget if selection is OK + selName = isel.data().toString(); + QList twice = lw->findItems( selName, Qt::MatchExactly); + if ( twice.count() == 0 ){ + item = new QListWidgetItem( selName ); + item->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(isel) ); + item->setData(LW_DATA_ROLE, isel.data(HEXA_DATA_ROLE)); + if (lw->property("GeomWidgetType").isValid()) + { + DocumentModel::GeomObj* geomObj = getGeomObj(isel); + if (geomObj != NULL) + item->setData(LW_ASSOC_ROLE, QVariant::fromValue(*geomObj)); + } + lw->addItem(item); + updateButtonBox(); + } + } + return true; } // ============================================================== onSelectionChanged @@ -647,158 +731,105 @@ bool HexaBaseDialog::_onSelectionChanged( const QItemSelection& sel, QListWidget */ void HexaBaseDialog::onSelectionChanged( const QItemSelection& sel, const QItemSelection& unsel ) { - MESSAGE( "HexaBaseDialog::onSelectionChanged(){" ); - QString className = metaObject()->className(); - MESSAGE( "* I am : " << className.toStdString() ); - MESSAGE( "* sender is : " << sender() ); - MESSAGE( "* _patternDataSelectionModel : " << _patternDataSelectionModel ); - MESSAGE( "* _patternBuilderSelectionModel : " << _patternBuilderSelectionModel ); - MESSAGE( "* _groupsSelectionModel : " << _groupsSelectionModel ); - MESSAGE( "* _meshSelectionModel : " << _meshSelectionModel ); - -// highlightSelectedAssocs(); - QItemSelectionModel* selector = dynamic_cast(sender()); - MESSAGE( "* selector : " << selector); - - foreach( const QModelIndex& isel, sel.indexes() ){ - MESSAGE("* selected : " << isel.data().toString().toStdString()); - } - foreach( const QModelIndex& iunsel, unsel.indexes() ){ - MESSAGE("* unselected : " << iunsel.data().toString().toStdString()); - } - - //type of the selected item - QModelIndexList itemsIndexes = sel.indexes(); - if ( itemsIndexes.count() == 0 ) return; - - //type from selection (first) - QModelIndex selected = itemsIndexes[0]; - int selType = selected.data(HEXA_TREE_ROLE).toInt(); - - switch(selType){ - case VERTEX_TREE: - if (currentOCCSelectionMode != TopAbs_VERTEX) - { -// if (HEXABLOCKGUI::currentOccView != NULL) HEXABLOCKGUI::currentOccView->setFocus(); - setOCCSelectionMode(TopAbs_VERTEX); - } - _patternDataSelectionModel->highlightEltsWithAssocs(itemsIndexes); - break; - case EDGE_TREE: - if (currentOCCSelectionMode != TopAbs_EDGE) - { -// if (HEXABLOCKGUI::currentOccView != NULL) HEXABLOCKGUI::currentOccView->setFocus(); - setOCCSelectionMode(TopAbs_EDGE); - } - _patternDataSelectionModel->highlightEltsWithAssocs(itemsIndexes); - break; - case QUAD_TREE: - if (currentOCCSelectionMode != TopAbs_FACE) - { -// if (HEXABLOCKGUI::currentOccView != NULL) HEXABLOCKGUI::currentOccView->setFocus(); - setOCCSelectionMode(TopAbs_FACE); - } - _patternDataSelectionModel->highlightEltsWithAssocs(itemsIndexes); - break; - case HEXA_TREE: - _patternDataSelectionModel->highlightEltsWithAssocs(itemsIndexes); - break; - } - - if ( _selectionMutex ) return; - - - bool selOk = false; - QLineEdit* aLineEdit = NULL; - QListWidget* aListWidget = NULL; - aLineEdit = dynamic_cast(_currentObj); - - if ( aLineEdit){ //fill the lineedit with selection - selOk = _onSelectionChanged( sel, aLineEdit ); - } - aListWidget = dynamic_cast(_currentObj); - if ( aListWidget){ //fill the listWidget with selection - selOk = _onSelectionChanged( sel, aListWidget ); - } - - if ( !selOk && selector && ( aLineEdit || aListWidget ) ){ - selector->clearSelection(); - } - - MESSAGE("}"); + QString className = metaObject()->className(); + + // highlightSelectedAssocs(); + QItemSelectionModel* selector = dynamic_cast(sender()); + + if ( _selectionMutex ) return; + bool selOk = false; + QLineEdit* aLineEdit = NULL; + QListWidget* aListWidget = NULL; + aLineEdit = dynamic_cast(_currentObj); + + if ( aLineEdit){ //fill the lineedit with selection + selOk = _onSelectionChanged( sel, aLineEdit ); + } + aListWidget = dynamic_cast(_currentObj); + if ( aListWidget){ //fill the listWidget with selection + selOk = _onSelectionChanged( sel, aListWidget ); + } + + if ( !selOk && selector && ( aLineEdit || aListWidget ) ){ + selector->clearSelection(); + } } // ============================================================== showEvent void HexaBaseDialog::showEvent( QShowEvent * event ) { - MESSAGE("HexaBaseDialog::showEvent(){"); - QString className = metaObject()->className(); - MESSAGE( "* I am : " << className.toStdString() ); - - - if ( _editMode == INFO_MODE ){ - _documentModel->allowEdition(); - } else { - _documentModel->disallowEdition(); - } - - if ( _patternDataSelectionModel ){ - _patternDataSelectionModel->clearSelection(); - connect( _patternDataSelectionModel, SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - } - if ( _patternBuilderSelectionModel ){ - _patternBuilderSelectionModel->clearSelection(); - connect( _patternBuilderSelectionModel, SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - } - if ( _groupsSelectionModel ){ - _groupsSelectionModel->clearSelection(); - connect( _groupsSelectionModel, SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - } - if ( _meshSelectionModel ){ - _meshSelectionModel->clearSelection(); - connect( _meshSelectionModel, SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - } - - connect( HEXABLOCKGUI::selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(onCurrentSelectionChanged()) ); - connect( _vtkVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); - connect( _occVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); - - QDialog::showEvent ( event ); - MESSAGE("}"); + QString className = metaObject()->className(); + + if (getDocumentModel() == NULL) + { + QDialog::showEvent ( event ); + return; + } + + if ( _editMode == INFO_MODE ){ + getDocumentModel()->allowEdition(); + } else { + getDocumentModel()->disallowEdition(); + } + + //Connect to salome selection signals + if (HEXABLOCKGUI::selectionMgr() != NULL) + { + connect( HEXABLOCKGUI::selectionMgr(), SIGNAL(currentSelectionChanged()), + this, SLOT(onCurrentSelectionChanged()), Qt::UniqueConnection ); + } + + //Connect to vtk window activation signals + if (HEXABLOCKGUI::currentDocGView->getViewWindow() != NULL) + { + connect( HEXABLOCKGUI::currentDocGView->getViewWindow()->getViewManager(), SIGNAL( activated(SUIT_ViewManager*) ), + this, SLOT( onWindowActivated(SUIT_ViewManager*) ), Qt::UniqueConnection ); + } + + //connect to occ window activation signals + if (HEXABLOCKGUI::currentOccGView->getViewWindow() != NULL) + { + connect( HEXABLOCKGUI::currentOccGView->getViewWindow()->getViewManager(), + SIGNAL( activated(SUIT_ViewManager*) ), + this, SLOT( onWindowActivated(SUIT_ViewManager*) ), Qt::UniqueConnection ); + } + + //connect model selection signals + connectDocumentGraphicView(); + + QDialog::showEvent ( event ); } // ============================================================== hideEvent void HexaBaseDialog::hideEvent ( QHideEvent * event ) { - MESSAGE("HexaBaseDialog::hideEvent(){"); - QString className = metaObject()->className(); - MESSAGE( "* I am : " << className.toStdString() ); + QString className = metaObject()->className(); + if (getDocumentModel() == NULL) return; + + //Disconnection salome selection signals + if (HEXABLOCKGUI::selectionMgr() != NULL) + disconnect( HEXABLOCKGUI::selectionMgr() , SIGNAL(currentSelectionChanged()), + this, SLOT(onCurrentSelectionChanged()) ); + + //Disconnect vtk window activation signals + if (HEXABLOCKGUI::currentDocGView->getViewWindow() != NULL) + disconnect( HEXABLOCKGUI::currentDocGView->getViewWindow()->getViewManager(), + SIGNAL( activated(SUIT_ViewManager*) ), + this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); + + //Disconnect occ window activation signals + if (HEXABLOCKGUI::currentOccGView->getViewWindow() != NULL) + disconnect( HEXABLOCKGUI::currentOccGView->getViewWindow()->getViewManager(), + SIGNAL( activated(SUIT_ViewManager*) ), + this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); - if ( _patternDataSelectionModel!=NULL ) - disconnect( _patternDataSelectionModel, SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - if ( _patternBuilderSelectionModel!=NULL ) - disconnect( _patternBuilderSelectionModel, SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - if ( _groupsSelectionModel!=NULL ) - disconnect( _groupsSelectionModel, SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - if ( _meshSelectionModel!=NULL) - disconnect( _meshSelectionModel, SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - disconnect( HEXABLOCKGUI::selectionMgr() , SIGNAL(currentSelectionChanged()), this, SLOT(onCurrentSelectionChanged()) ); - disconnect( _vtkVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); - disconnect( _occVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); + //Disconnect model selection signals + disconnectDocumentGraphicView(); - _documentModel->allowEdition(); + getDocumentModel()->allowEdition(); - QDialog::hideEvent( event ); - MESSAGE("}"); + QDialog::hideEvent( event ); } // ============================================================== updateButtonBox @@ -806,58 +837,64 @@ void HexaBaseDialog::updateButtonBox() { } -// ============================================================== updateButtonBox +// ============================================================== updateName void HexaBaseDialog::updateName() { - if (!_documentModel) return; - if ( !_patternDataSelectionModel ) return; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); + if (!getDocumentModel()) return; + if ( getPatternDataSelectionModel() == NULL ) return; + const PatternDataModel* patternDataModel = getPatternDataModel(); + if (patternDataModel == NULL) return; - QLineEdit* lineEdit = dynamic_cast(sender()); - if (!lineEdit) return; - QString newName = lineEdit->text(); - if ( newName.isEmpty() ) return; + QLineEdit* lineEdit = dynamic_cast(sender()); + if (!lineEdit) return; + QString newName = lineEdit->text(); + if ( newName.isEmpty() ) return; - QVariant v = lineEdit->property("QModelIndex"); - if ( !v.isValid() ) return; + QVariant v = lineEdit->property("QModelIndex"); + if ( !v.isValid() ) return; - QModelIndex index = v.value(); - if ( index.isValid() ) - _documentModel->setName( patternDataModel->mapToSource(index), newName ); + QModelIndex index = v.value(); + if ( index.isValid() ) + getDocumentModel()->setName( patternDataModel->mapToSource(index), newName ); } +// ============================================================== updateDefaultName +void HexaBaseDialog::updateDefaultName(QLineEdit* name_field, HEXA_NS::EnumElt type) +{ + if (getDocumentModel() == NULL || name_field == NULL) return; + HEXA_NS::Document* doc = getDocumentModel()->getHexaDocument(); + if (doc == NULL) return; -// ============================================================== selectElementOfModel + name_field->setText(doc->getNextName(type).c_str()); +} +// ============================================================== selectElementOfModel /*Selects in the model (treeview) elements selected in a listwidget, * or an element in a line edit.*/ void HexaBaseDialog::selectElementOfModel() { - MESSAGE("HexaBaseDialog::selectElementOfModel()"); - if (!_patternDataSelectionModel) return; + if (getPatternDataSelectionModel() == NULL) return; - QListWidget* currentListWidget = dynamic_cast( sender() ); - if ( !currentListWidget ) return; + QListWidget* currentListWidget = dynamic_cast( sender() ); + if ( !currentListWidget ) return; - _selectionMutex = true; + _selectionMutex = true; - QList sel = currentListWidget->selectedItems(); - QModelIndex index; - _patternDataSelectionModel->clearSelection(); - foreach ( QListWidgetItem *item, sel ){ -// index = item->data(LW_QMODELINDEX_ROLE).value(); //unsafe - index = _patternDataSelectionModel->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); - if ( index.isValid() ) - { - MESSAGE( "* selecting the element : " << index.data().toString().toStdString() ); - _patternDataSelectionModel->select( index, QItemSelectionModel::Select ); - } - } - _selectionMutex = false; + QList sel = currentListWidget->selectedItems(); + QModelIndex index; + getPatternDataSelectionModel()->clearSelection(); + foreach ( QListWidgetItem *item, sel ){ +// index = item->data(LW_QMODELINDEX_ROLE).value(); //unsafe: index can change in the tree + index = getPatternDataSelectionModel()->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); + if ( index.isValid() ) + { + getPatternDataSelectionModel()->select( index, QItemSelectionModel::Select ); + } + } + _selectionMutex = false; - MESSAGE("}"); } // ============================================================== _isLineOrListWidget @@ -867,11 +904,11 @@ void HexaBaseDialog::selectElementOfModel() */ bool HexaBaseDialog::_isLineOrListWidget(QObject *widget) { - if (widget == NULL) return false; + if (widget == NULL) return false; - QLineEdit *lineEdit = dynamic_cast(widget); - QListWidget *listWidget = dynamic_cast(widget); - return (lineEdit != NULL) || (listWidget != NULL); + QLineEdit *lineEdit = dynamic_cast(widget); + QListWidget *listWidget = dynamic_cast(widget); + return (lineEdit != NULL) || (listWidget != NULL); }//_isLineOrListWidget @@ -882,12 +919,12 @@ bool HexaBaseDialog::_isLineOrListWidget(QObject *widget) */ void HexaBaseDialog::_highlightWidget(QObject *obj, Qt::GlobalColor clr) { - if (!_isLineOrListWidget(obj)) return; + if (!_isLineOrListWidget(obj)) return; - QWidget *widget = dynamic_cast(obj); //sure it's not NULL (_isLineOrListWidget(obj)) - QPalette palette1 = widget->palette(); - palette1.setColor(widget->backgroundRole(), clr); - widget->setPalette(palette1); + QWidget *widget = dynamic_cast(obj); //sure it's not NULL (_isLineOrListWidget(obj)) + QPalette palette1 = widget->palette(); + palette1.setColor(widget->backgroundRole(), clr); + widget->setPalette(palette1); }//_highlightWidget @@ -895,169 +932,153 @@ void HexaBaseDialog::_highlightWidget(QObject *obj, Qt::GlobalColor clr) // ============================================================== _updateCurrentObject void HexaBaseDialog::_updateCurrentObject(QObject* obj) { - _highlightWidget(_currentObj, Qt::white); - _currentObj = obj; - _highlightWidget(obj, Qt::yellow); + _highlightWidget(_currentObj, Qt::white); + _currentObj = obj; + _highlightWidget(obj, Qt::yellow); } - // ============================================================== eventFilter /* * Handles events from the treeview and the dialog boxes. */ bool HexaBaseDialog::eventFilter(QObject *obj, QEvent *event) { -// highlightSelectedAssocs(); - QLineEdit *lineEdit = dynamic_cast(obj); - QListWidget *listWidget = dynamic_cast(obj); - HexaBaseDialog *dialog = dynamic_cast(obj); - - if ( event->type() == QEvent::KeyPress ) - { - if ( ((QKeyEvent*)event)->key() == Qt::Key_Return) - { - setFocusToNextField(); - return true; - } - } - - if ( event->type() == QEvent::FocusOut ){ - QString className = obj->metaObject()->className(); - QString objectName = obj->objectName(); - MESSAGE("QEvent::FocusOut : I am "<< objectName.toStdString() ); - MESSAGE("QEvent::FocusOut : I am "<< className.toStdString() ); - } - - if ( event->type() == QEvent::FocusIn ){ - QString className = obj->metaObject()->className(); - QString objectName = obj->objectName(); - MESSAGE("QEvent::FocusIn : I am "<< objectName.toStdString() ); - MESSAGE("QEvent::FocusIn : I am "<< className.toStdString() ); - - } - else return false; - - - MESSAGE("HexaBaseDialog::eventFilter{"); - MESSAGE("* QEvent::FocusIn"); - - /* ON FOCUS ON A WIDGET*/ - - QVariant v; - QModelIndex index; - - QItemSelectionModel *selector = 0; - - //vtk selection - if (getObjectViewType(obj) == VTK) - _allowVTKSelection( obj ); - - //geom selection - if (getObjectViewType(obj) == OCC) - _allowOCCSelection( obj ); - - //If the widget is a geom line edit highlight its content in the occ view - if (lineEdit != NULL && _patternDataSelectionModel != NULL && - getObjectViewType(obj) == OCC && !lineEdit->text().isEmpty()) - { - //highlight element in the OCC View - QMultiMap geomElts; - DocumentModel::GeomObj geomObj; - QVariant v = lineEdit->property("GeomObj"); - if ( v.isValid() ) - { - geomObj = v.value(); - geomElts.insert( geomObj.entry, geomObj.subid.toInt() ); - } - _patternDataSelectionModel->_highlightGEOM(geomElts); - } - - //Depending of focused widget type, get the right selector for it - selector = _getSelector( obj ); - if ( selector == NULL ) - { - _updateCurrentObject(obj); - return false; - } - - if ( _currentObj != obj && (lineEdit || listWidget) ) - selector->clearSelection(); - - _updateCurrentObject(obj); - - //If there is a current selection fill the widget with it - if ( selector->hasSelection() ){ -// QItemSelection currentSelection = selector->selection(); -// bool selOk = false; -// if ( lineEdit ){ //element can be from lineEdit -// selOk = _onSelectionChanged( currentSelection, lineEdit ); -// } else if ( listWidget ){ -// selOk = _onSelectionChanged( currentSelection, listWidget ); -// } -// if ( !selOk && ( lineEdit || listWidget ) ){ -// selector->clearSelection(); -// } - - } else { //If the widget contains an hexa element, select it in model/view - if ( lineEdit ){ //element can be from lineEdit - MESSAGE("* on QLineEdit"); - v = lineEdit->property("QModelIndex"); - if ( !v.isValid() ) { - //return QObject::eventFilter(obj, event); - return false; - } - index = v.value(); - - _selectionMutex = true; - MESSAGE("* selecting the element : " << index.data().toString().toStdString()); - MESSAGE("* with selector : " << selector); - MESSAGE( "* _patternDataSelectionModel : " << _patternDataSelectionModel ); - MESSAGE( "* _patternBuilderSelectionModel : " << _patternBuilderSelectionModel ); - MESSAGE( "* _groupsSelectionModel : " << _groupsSelectionModel ); - MESSAGE( "* _meshSelectionModel : " << _meshSelectionModel ); - selector->select( index, QItemSelectionModel::Clear ); - selector->select( index, QItemSelectionModel::Select ); - _selectionMutex = false; - } - - if ( dialog ){ //element can be from a dialog box - MESSAGE("* on Dialog"); - v = dialog->property("QModelIndex"); - if ( !v.isValid() ) { - //return QObject::eventFilter(obj, event); - return false; - } - index = v.value(); - _selectionMutex = true; - MESSAGE("* selecting the element : " << index.data().toString().toStdString()); - selector->select( index, QItemSelectionModel::Clear ); - selector->select( index, QItemSelectionModel::Select ); - _selectionMutex = false; - } - - } - MESSAGE("eventFilter}"); - return false; + // highlightSelectedAssocs(); + QLineEdit *lineEdit = dynamic_cast(obj); + QListWidget *listWidget = dynamic_cast(obj); + HexaBaseDialog *dialog = dynamic_cast(obj); + + if ( event->type() == QEvent::KeyPress ) + { + if ( ((QKeyEvent*)event)->key() == Qt::Key_Return) + { + setFocusToNextField(); + return true; + } + } + + if ( event->type() == QEvent::FocusOut ){ + QString className = obj->metaObject()->className(); + QString objectName = obj->objectName(); + } + + if ( event->type() == QEvent::FocusIn ){ + QString className = obj->metaObject()->className(); + QString objectName = obj->objectName(); + + } + else return false; + + + + /* ON FOCUS ON A WIDGET*/ + + QVariant v; + QModelIndex index; + + QItemSelectionModel *selector = 0; + + //vtk selection + if (getObjectViewType(obj) == HEXABLOCKGUI::VTK) + _allowVTKSelection( obj ); + + //geom selection + if (getObjectViewType(obj) == HEXABLOCKGUI::OCC) + _allowOCCSelection( obj ); + + //If the widget is a geom line edit highlight its content in the occ view + if (lineEdit != NULL && getPatternDataSelectionModel() != NULL && + getObjectViewType(obj) == HEXABLOCKGUI::OCC && !lineEdit->text().isEmpty()) + { + //highlight element in the OCC View + QMultiMap geomElts; + DocumentModel::GeomObj geomObj; + QVariant v = lineEdit->property("GeomObj"); + if ( v.isValid() ) + { + geomObj = v.value(); + geomElts.insert( geomObj.shapeName, geomObj.subid.toInt() ); + } + HEXABLOCKGUI::currentOccGView->highlight(geomElts); + } + + //Depending of focused widget type, get the right selector for it + selector = _getSelector( obj ); + if ( selector == NULL ) + { + _updateCurrentObject(obj); + return false; + } + + if ( _currentObj != obj && (lineEdit || listWidget) ) + selector->clearSelection(); + + _updateCurrentObject(obj); + + //If there is a current selection fill the widget with it + if ( selector->hasSelection() ){ + // QItemSelection currentSelection = selector->selection(); + // bool selOk = false; + // if ( lineEdit ){ //element can be from lineEdit + // selOk = _onSelectionChanged( currentSelection, lineEdit ); + // } else if ( listWidget ){ + // selOk = _onSelectionChanged( currentSelection, listWidget ); + // } + // if ( !selOk && ( lineEdit || listWidget ) ){ + // selector->clearSelection(); + // } + + } else { //If the widget contains an hexa element, select it in model/view + if ( lineEdit ){ //element can be from lineEdit + v = lineEdit->property("QModelIndex"); + if ( !v.isValid() ) { + //return QObject::eventFilter(obj, event); + return false; + } + index = v.value(); + + _selectionMutex = true; + selector->select( index, QItemSelectionModel::Clear ); + selector->select( index, QItemSelectionModel::Select ); + _selectionMutex = false; + } + + if ( dialog ){ //element can be from a dialog box + v = dialog->property("QModelIndex"); + if ( !v.isValid() ) { + //return QObject::eventFilter(obj, event); + return false; + } + index = v.value(); + _selectionMutex = true; + selector->select( index, QItemSelectionModel::Clear ); + selector->select( index, QItemSelectionModel::Select ); + _selectionMutex = false; + } + + } + return false; } - // ------------------------- VERTEX ---------------------------------- - // ============================================================== Constructeur VertexDialog::VertexDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f), - _value(0) + HexaBaseDialog(parent, editmode, f), + _value(0) { - _helpFileName = "gui_vertex.html"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( name_le ); + _helpFileName = "gui_vertex.html"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( name_le ); - if ( editmode == NEW_MODE ){ - setWindowTitle( tr("Vertex Construction") ); - } else if ( editmode == UPDATE_MODE ){ - setWindowTitle( tr("Vertex Modification") ); - } + if ( editmode == NEW_MODE ){ + setWindowTitle( tr("Vertex Construction") ); + } else if ( editmode == UPDATE_MODE ){ + setWindowTitle( tr("Vertex Modification") ); + } + else if ( editmode == INFO_MODE){ + setWindowTitle( tr("Vertex Information") ); + } } // ============================================================== Destructeur @@ -1069,100 +1090,115 @@ VertexDialog::~VertexDialog() // ============================================================== _initInputWidget void VertexDialog::_initInputWidget( Mode editmode ) { - x_spb->setRange(VERTEX_COORD_MIN, VERTEX_COORD_MAX); - y_spb->setRange(VERTEX_COORD_MIN, VERTEX_COORD_MAX); - z_spb->setRange(VERTEX_COORD_MIN, VERTEX_COORD_MAX); + x_spb->setRange(VERTEX_COORD_MIN, VERTEX_COORD_MAX); + y_spb->setRange(VERTEX_COORD_MIN, VERTEX_COORD_MAX); + z_spb->setRange(VERTEX_COORD_MIN, VERTEX_COORD_MAX); + +// setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + installEventFilter(this); +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + name_le->installEventFilter(this); - setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - name_le->installEventFilter(this); + if (editmode == INFO_MODE) + { + name_le->setReadOnly(true); + x_spb->setReadOnly(true); + y_spb->setReadOnly(true); + z_spb->setReadOnly(true); + } - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName())); + //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName())); } // ============================================================== clear void VertexDialog::clear() { - // name_le->clear(); + name_le->clear(); + + modelUnregister(this); } // ============================================================== setValue void VertexDialog::setValue(HEXA_NS::Vertex* v) { - MESSAGE("* setValue : " << v); - //0) Name - name_le->setText( v->getName() ); + //0) Name + name_le->setText( v->getName() ); - //1) Value (x,y,z) - x_spb->setValue( v->getX() ); - y_spb->setValue( v->getY() ); - z_spb->setValue( v->getZ() ); + //1) Value (x,y,z) + x_spb->setValue( v->getX() ); + y_spb->setValue( v->getY() ); + z_spb->setValue( v->getZ() ); - MESSAGE("* _patternDataSelectionModel : " << _patternDataSelectionModel ); - if ( _patternDataSelectionModel ){ - QModelIndex iv = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v) ); - MESSAGE("* selecting the element : " << iv.data().toString().toStdString()); + if ( getPatternDataSelectionModel() != NULL ){ + QModelIndex iv = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v) ); - setProperty( "QModelIndex", QVariant::fromValue(iv) ); - name_le->setProperty( "QModelIndex", QVariant::fromValue(iv) ); - } - _value = v; + setProperty( "QModelIndex", QVariant::fromValue(iv) ); + name_le->setProperty( "QModelIndex", QVariant::fromValue(iv) ); + } + _value = v; } // ============================================================== getValue HEXA_NS::Vertex* VertexDialog::getValue() { - return _value; + return _value; } - // ============================================================== apply bool VertexDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_patternDataSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return false; - - bool isOk = false; - - QModelIndex iVertex; - double newX = x_spb->value(); - double newY = y_spb->value(); - double newZ = z_spb->value(); - - if ( _editMode == UPDATE_MODE){ - QVariant v = property("QModelIndex"); - if ( v.isValid() ){ - iVertex = patternDataModel->mapToSource( v.value() ); - if ( iVertex.isValid() ) - isOk = _documentModel->updateVertex( iVertex, newX, newY, newZ ); - } - } else if ( _editMode == NEW_MODE){ - iVertex = _documentModel->addVertex( newX, newY, newZ ); - if ( iVertex.isValid() ) - isOk = true; - } - if (!isOk) { - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "VERTEX UPDATE/CONSTRUCTION" ) ); - return false; - } - - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iVertex, newName ); - - // to select/highlight result - result = patternDataModel->mapFromSource(iVertex); - - return isOk; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + if ( !getPatternDataSelectionModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return false; + + bool isOk = false; + + QModelIndex iVertex; + double newX = x_spb->value(); + double newY = y_spb->value(); + double newZ = z_spb->value(); + + if ( _editMode == UPDATE_MODE){ + QVariant v = property("QModelIndex"); + if ( v.isValid() ){ + iVertex = patternDataModel->mapToSource( v.value() ); + if ( iVertex.isValid() ) + isOk = getDocumentModel()->updateVertex( iVertex, newX, newY, newZ ); + } + } else if ( _editMode == NEW_MODE){ + iVertex = getDocumentModel()->addVertex( newX, newY, newZ ); + if ( iVertex.isValid() ) + { + isOk = true; + } + } + if (!isOk) { + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "VERTEX UPDATE/CONSTRUCTION" ) ); + return false; + } + + QString newName = name_le->text(); + if ( !newName.isEmpty() )/*{*/ + getDocumentModel()->setName( iVertex, newName ); + + //the default name in the dialog box + HEXA_NS::Vertex* v = getDocumentModel()->getHexaPtr(iVertex); + if (v != NULL) + updateDefaultName(name_le, v->getType()); + + // to select/highlight result + result = patternDataModel->mapFromSource(iVertex); + + // updateDialogBoxName(name_le, result); + // const char *defaultName = getDocumentModel()->getHexaPtr(last)->getName(); + return isOk; } @@ -1170,22 +1206,25 @@ bool VertexDialog::apply(QModelIndex& result) // ============================================================== Constructeur EdgeDialog::EdgeDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f), - _value(0) + HexaBaseDialog(parent, editmode, f), + _value(0) { - _helpFileName = "gui_edge.html"; - setupUi( this ); - _initWidget(editmode); + _helpFileName = "gui_edge.html"; + setupUi( this ); + _initWidget(editmode); -// rb0->setFocusProxy( v0_le_rb0 ); -// rb1->setFocusProxy( vex_le_rb1 ); + // rb0->setFocusProxy( v0_le_rb0 ); + // rb1->setFocusProxy( vex_le_rb1 ); - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Edge Information") ); - rb1->hide(); - } + if ( editmode == INFO_MODE ){ + setWindowTitle( tr("Edge Information") ); + rb1->hide(); + } + else if ( editmode == UPDATE_MODE ){ + setWindowTitle( tr("Edge Modification") ); + } - rb0->click(); + rb0->click(); } @@ -1198,35 +1237,38 @@ EdgeDialog::~EdgeDialog() // ============================================================== _initInputWidget void EdgeDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - name_le->installEventFilter(this); +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + name_le->installEventFilter(this); - v0_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v1_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v0_le_rb0->setValidator( validator ); - v1_le_rb0->setValidator( validator ); - v0_le_rb0->installEventFilter(this); - v1_le_rb0->installEventFilter(this); + v0_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v1_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v0_le_rb0->setValidator( validator ); + v1_le_rb0->setValidator( validator ); + v0_le_rb0->installEventFilter(this); + v1_le_rb0->installEventFilter(this); - vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - vex_le_rb1->setValidator( validator ); - vec_le_rb1->setValidator( validator ); - vex_le_rb1->installEventFilter(this); - vec_le_rb1->installEventFilter(this); + vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + vex_le_rb1->setValidator( validator ); + vec_le_rb1->setValidator( validator ); + vex_le_rb1->installEventFilter(this); + vec_le_rb1->installEventFilter(this); - v0_le_rb0->setReadOnly(true); - v1_le_rb0->setReadOnly(true); - vex_le_rb1->setReadOnly(true); - vec_le_rb1->setReadOnly(true); + v0_le_rb0->setReadOnly(true); + v1_le_rb0->setReadOnly(true); + vex_le_rb1->setReadOnly(true); + vec_le_rb1->setReadOnly(true); - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); + if (editmode == INFO_MODE) + name_le->setReadOnly(true); + + //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); } @@ -1234,11 +1276,21 @@ void EdgeDialog::_initInputWidget( Mode editmode ) // ============================================================== Clear void EdgeDialog::clear() { - name_le->clear(); - v0_le_rb0->clear(); - v1_le_rb0->clear(); - vex_le_rb1->clear(); - vec_le_rb1->clear(); + name_le->clear(); + + v0_le_rb0->clear(); + modelUnregister(v0_le_rb0); + + v1_le_rb0->clear(); + modelUnregister(v1_le_rb0); + + vex_le_rb1->clear(); + modelUnregister(vex_le_rb1); + + vec_le_rb1->clear(); + modelUnregister(vec_le_rb1); + + modelUnregister(this); } @@ -1246,79 +1298,80 @@ void EdgeDialog::clear() // ============================================================== setValue void EdgeDialog::setValue(HEXA_NS::Edge* e) { - HEXA_NS::Vertex* v0 = e->getVertex(0); - HEXA_NS::Vertex* v1 = e->getVertex(1); -// HEXA_NS::EltBase* e0 = e; -// HEXA_NS::EltBase* v0 = e->getVertex(0); -// HEXA_NS::EltBase* v1 = e->getVertex(1); + HEXA_NS::Vertex* v0 = e->getVertex(0); + HEXA_NS::Vertex* v1 = e->getVertex(1); + // HEXA_NS::EltBase* e0 = e; + // HEXA_NS::EltBase* v0 = e->getVertex(0); + // HEXA_NS::EltBase* v1 = e->getVertex(1); - name_le->setText( e->getName() ); - v0_le_rb0->setText( v0->getName() ); - v1_le_rb0->setText( v1->getName() ); + name_le->setText( e->getName() ); + v0_le_rb0->setText( v0->getName() ); + v1_le_rb0->setText( v1->getName() ); - if ( _patternDataSelectionModel ){ - QModelIndex ie = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e) ); - QModelIndex iv0 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v0) ); - QModelIndex iv1 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v1) ); + if ( getPatternDataSelectionModel() ){ + QModelIndex ie = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e) ); + QModelIndex iv0 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v0) ); + QModelIndex iv1 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v1) ); - name_le->setProperty( "QModelIndex", QVariant::fromValue(ie) ); - v0_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv0) ); - v1_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv1) ); - } - _value = e; + name_le->setProperty( "QModelIndex", QVariant::fromValue(ie) ); + v0_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv0) ); + v1_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv1) ); + } + _value = e; } // ============================================================== getValue HEXA_NS::Edge* EdgeDialog::getValue() { - return _value; + return _value; } // ============================================================== apply bool EdgeDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel ) return false; - QModelIndex iEdge; + QModelIndex iEdge; - if ( rb0->isChecked() ){ - QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb0] ); - QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb0] ); - if ( iv0.isValid()&& iv1.isValid() ){ - iEdge = _documentModel->addEdgeVertices( iv0, iv1 ); - } - } else if ( rb1->isChecked() ){ - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); - if ( ivex.isValid() && ivec.isValid() ){ - iEdge = _documentModel->addEdgeVector( ivex, ivec ); - } - } + if ( rb0->isChecked() ){ + QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb0] ); + QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb0] ); + if ( iv0.isValid()&& iv1.isValid() ){ + iEdge = getDocumentModel()->addEdgeVertices( iv0, iv1 ); + } + } else if ( rb1->isChecked() ){ + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); + if ( ivex.isValid() && ivec.isValid() ){ + iEdge = getDocumentModel()->addEdgeVector( ivex, ivec ); + } + } - if ( !iEdge.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT BUILD EDGE" ) ); - return false; - } - _value = iEdge.model()->data(iEdge, HEXA_DATA_ROLE).value(); + if ( !iEdge.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT BUILD EDGE" ) ); + return false; + } + _value = iEdge.model()->data(iEdge, HEXA_DATA_ROLE).value(); - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iEdge, newName ); + QString newName = name_le->text(); + if ( !newName.isEmpty() )/*{*/ + getDocumentModel()->setName( iEdge, newName ); - result = patternDataModel->mapFromSource(iEdge); + //update the default name in the dialog box + if (_value != NULL) + updateDefaultName(name_le, _value->getType()); - return true; + result = patternDataModel->mapFromSource(iEdge); + + return true; } @@ -1326,19 +1379,19 @@ bool EdgeDialog::apply(QModelIndex& result) // ============================================================== Constructeur QuadDialog::QuadDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f), - _value(0) + HexaBaseDialog(parent, editmode, f), + _value(0) { - _helpFileName = "gui_quadrangle.html"; - setupUi( this ); - _initWidget(editmode); -// rb0->setFocusProxy( v0_le_rb0 ); -// rb1->setFocusProxy( e0_le_rb1 ); - rb0->click(); + _helpFileName = "gui_quadrangle.html"; + setupUi( this ); + _initWidget(editmode); + // rb0->setFocusProxy( v0_le_rb0 ); + // rb1->setFocusProxy( e0_le_rb1 ); + rb0->click(); - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Quad Information") ); - } + if ( editmode == INFO_MODE ){ + setWindowTitle( tr("Quad Information") ); + } } // ============================================================== Destructeur @@ -1349,197 +1402,223 @@ QuadDialog::~QuadDialog() // ============================================================== _initInputWidget void QuadDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); + +// setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + installEventFilter(this); - setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - installEventFilter(this); +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + name_le->installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - name_le->installEventFilter(this); + v0_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v1_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v2_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v3_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v0_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v1_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v2_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v3_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v0_le_rb0->setValidator( validator ); + v1_le_rb0->setValidator( validator ); + v2_le_rb0->setValidator( validator ); + v3_le_rb0->setValidator( validator ); + v0_le_rb0->installEventFilter(this); + v1_le_rb0->installEventFilter(this); + v2_le_rb0->installEventFilter(this); + v3_le_rb0->installEventFilter(this); - v0_le_rb0->setValidator( validator ); - v1_le_rb0->setValidator( validator ); - v2_le_rb0->setValidator( validator ); - v3_le_rb0->setValidator( validator ); - v0_le_rb0->installEventFilter(this); - v1_le_rb0->installEventFilter(this); - v2_le_rb0->installEventFilter(this); - v3_le_rb0->installEventFilter(this); + e0_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + e1_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + e2_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + e3_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - e0_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - e1_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - e2_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - e3_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + e0_le_rb1->setValidator( validator ); + e1_le_rb1->setValidator( validator ); + e2_le_rb1->setValidator( validator ); + e3_le_rb1->setValidator( validator ); - e0_le_rb1->setValidator( validator ); - e1_le_rb1->setValidator( validator ); - e2_le_rb1->setValidator( validator ); - e3_le_rb1->setValidator( validator ); + e0_le_rb1->installEventFilter(this); + e1_le_rb1->installEventFilter(this); + e2_le_rb1->installEventFilter(this); + e3_le_rb1->installEventFilter(this); - e0_le_rb1->installEventFilter(this); - e1_le_rb1->installEventFilter(this); - e2_le_rb1->installEventFilter(this); - e3_le_rb1->installEventFilter(this); + v0_le_rb0->setReadOnly(true); + v1_le_rb0->setReadOnly(true); + v2_le_rb0->setReadOnly(true); + v3_le_rb0->setReadOnly(true); - v0_le_rb0->setReadOnly(true); - v1_le_rb0->setReadOnly(true); - v2_le_rb0->setReadOnly(true); - v3_le_rb0->setReadOnly(true); + e0_le_rb1->setReadOnly(true); + e1_le_rb1->setReadOnly(true); + e2_le_rb1->setReadOnly(true); + e3_le_rb1->setReadOnly(true); - e0_le_rb1->setReadOnly(true); - e1_le_rb1->setReadOnly(true); - e2_le_rb1->setReadOnly(true); - e3_le_rb1->setReadOnly(true); + if (editmode == INFO_MODE) + name_le->setReadOnly(true); - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); + //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); } // ============================================================== clear void QuadDialog::clear() { - v0_le_rb0->clear(); - v1_le_rb0->clear(); - v2_le_rb0->clear(); - v3_le_rb0->clear(); + //Clear the dialog and unregister it from the model + QModelIndex invalidIndex; + + name_le->clear(); + + v0_le_rb0->clear(); + modelUnregister(v0_le_rb0); + + v1_le_rb0->clear(); + modelUnregister(v1_le_rb0); + + v2_le_rb0->clear(); + modelUnregister(v2_le_rb0); - e0_le_rb1->clear(); - e1_le_rb1->clear(); - e2_le_rb1->clear(); - e3_le_rb1->clear(); + v3_le_rb0->clear(); + modelUnregister(v3_le_rb0); + + e0_le_rb1->clear(); + modelUnregister(e0_le_rb1); + + e1_le_rb1->clear(); + modelUnregister(e1_le_rb1); + + e2_le_rb1->clear(); + modelUnregister(e2_le_rb1); + + e3_le_rb1->clear(); + modelUnregister(e3_le_rb1); + + modelUnregister(this); - name_le->clear(); } // ============================================================== setValue void QuadDialog::setValue(HEXA_NS::Quad* q) { - Q_ASSERT( q->countEdge() == 4 ); - Q_ASSERT( q->countVertex() == 4 ); + Q_ASSERT( q->countEdge() == 4 ); + Q_ASSERT( q->countVertex() == 4 ); - //0) Name - name_le->setText( q->getName() ); + //0) Name + name_le->setText( q->getName() ); - //1) Vertices - HEXA_NS::Vertex* v0 = q->getVertex(0); - HEXA_NS::Vertex* v1 = q->getVertex(1); - HEXA_NS::Vertex* v2 = q->getVertex(2); - HEXA_NS::Vertex* v3 = q->getVertex(3); + //1) Vertices + HEXA_NS::Vertex* v0 = q->getVertex(0); + HEXA_NS::Vertex* v1 = q->getVertex(1); + HEXA_NS::Vertex* v2 = q->getVertex(2); + HEXA_NS::Vertex* v3 = q->getVertex(3); - v0_le_rb0->setText( v0->getName() ); - v1_le_rb0->setText( v1->getName() ); - v2_le_rb0->setText( v2->getName() ); - v3_le_rb0->setText( v3->getName() ); + v0_le_rb0->setText( v0->getName() ); + v1_le_rb0->setText( v1->getName() ); + v2_le_rb0->setText( v2->getName() ); + v3_le_rb0->setText( v3->getName() ); - //2) Edges - HEXA_NS::Edge* e0 = q->getEdge(0); - HEXA_NS::Edge* e1 = q->getEdge(1); - HEXA_NS::Edge* e2 = q->getEdge(2); - HEXA_NS::Edge* e3 = q->getEdge(3); + //2) Edges + HEXA_NS::Edge* e0 = q->getEdge(0); + HEXA_NS::Edge* e1 = q->getEdge(1); + HEXA_NS::Edge* e2 = q->getEdge(2); + HEXA_NS::Edge* e3 = q->getEdge(3); - e0_le_rb1->setText( e0->getName() ); - e1_le_rb1->setText( e1->getName() ); - e2_le_rb1->setText( e2->getName() ); - e3_le_rb1->setText( e3->getName() ); + e0_le_rb1->setText( e0->getName() ); + e1_le_rb1->setText( e1->getName() ); + e2_le_rb1->setText( e2->getName() ); + e3_le_rb1->setText( e3->getName() ); - if ( _patternDataSelectionModel ){ - QModelIndex iq = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(q) ); + if ( getPatternDataSelectionModel() ){ + QModelIndex iq = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(q) ); - QModelIndex iv0 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v0) ); - QModelIndex iv1 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v1) ); - QModelIndex iv2 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v2) ); - QModelIndex iv3 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v3) ); + QModelIndex iv0 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v0) ); + QModelIndex iv1 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v1) ); + QModelIndex iv2 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v2) ); + QModelIndex iv3 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v3) ); - QModelIndex ie0 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e0) ); - QModelIndex ie1 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e1) ); - QModelIndex ie2 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e2) ); - QModelIndex ie3 = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e3) ); + QModelIndex ie0 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e0) ); + QModelIndex ie1 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e1) ); + QModelIndex ie2 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e2) ); + QModelIndex ie3 = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(e3) ); - name_le->setProperty( "QModelIndex", QVariant::fromValue(iq) ); + name_le->setProperty( "QModelIndex", QVariant::fromValue(iq) ); - v0_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv0) ); - v1_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv1) ); - v2_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv2) ); - v3_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv3) ); + v0_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv0) ); + v1_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv1) ); + v2_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv2) ); + v3_le_rb0->setProperty( "QModelIndex", QVariant::fromValue(iv3) ); - e0_le_rb1->setProperty( "QModelIndex", QVariant::fromValue(ie0) ); - e1_le_rb1->setProperty( "QModelIndex", QVariant::fromValue(ie1) ); - e2_le_rb1->setProperty( "QModelIndex", QVariant::fromValue(ie2) ); - e3_le_rb1->setProperty( "QModelIndex", QVariant::fromValue(ie3) ); - } - _value = q; + e0_le_rb1->setProperty( "QModelIndex", QVariant::fromValue(ie0) ); + e1_le_rb1->setProperty( "QModelIndex", QVariant::fromValue(ie1) ); + e2_le_rb1->setProperty( "QModelIndex", QVariant::fromValue(ie2) ); + e3_le_rb1->setProperty( "QModelIndex", QVariant::fromValue(ie3) ); + } + _value = q; } // ============================================================== getValue HEXA_NS::Quad* QuadDialog::getValue() { - return _value; + return _value; } // ============================================================== apply bool QuadDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return false; - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return false; + QModelIndex iQuad; - QModelIndex iQuad; + if ( rb0->isChecked() ){ //vertices + QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb0] ); + QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb0] ); + QModelIndex iv2 = patternDataModel->mapToSource( _index[v2_le_rb0] ); + QModelIndex iv3 = patternDataModel->mapToSource( _index[v3_le_rb0] ); - if ( rb0->isChecked() ){ //vertices - QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb0] ); - QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb0] ); - QModelIndex iv2 = patternDataModel->mapToSource( _index[v2_le_rb0] ); - QModelIndex iv3 = patternDataModel->mapToSource( _index[v3_le_rb0] ); + if ( iv0.isValid() + && iv1.isValid() + && iv2.isValid() + && iv3.isValid() ){ + iQuad = getDocumentModel()->addQuadVertices( iv0, iv1, iv2, iv3 ); + } + } else if ( rb1->isChecked() ){ //edges + QModelIndex ie0 = patternDataModel->mapToSource( _index[e0_le_rb1] ); + QModelIndex ie1 = patternDataModel->mapToSource( _index[e1_le_rb1] ); + QModelIndex ie2 = patternDataModel->mapToSource( _index[e2_le_rb1] ); + QModelIndex ie3 = patternDataModel->mapToSource( _index[e3_le_rb1] ); - if ( iv0.isValid() - && iv1.isValid() - && iv2.isValid() - && iv3.isValid() ){ - iQuad = _documentModel->addQuadVertices( iv0, iv1, iv2, iv3 ); - } - } else if ( rb1->isChecked() ){ //edges - QModelIndex ie0 = patternDataModel->mapToSource( _index[e0_le_rb1] ); - QModelIndex ie1 = patternDataModel->mapToSource( _index[e1_le_rb1] ); - QModelIndex ie2 = patternDataModel->mapToSource( _index[e2_le_rb1] ); - QModelIndex ie3 = patternDataModel->mapToSource( _index[e3_le_rb1] ); + if ( ie0.isValid() + && ie1.isValid() + && ie2.isValid() + && ie3.isValid() ){ + iQuad = getDocumentModel()->addQuadEdges( ie0, ie1, ie2, ie3 ); + } + } - if ( ie0.isValid() - && ie1.isValid() - && ie2.isValid() - && ie3.isValid() ){ - iQuad = _documentModel->addQuadEdges( ie0, ie1, ie2, ie3 ); - } - } + if ( !iQuad.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT BUILD QUAD" ) ); + return false; + } + _value = iQuad.model()->data(iQuad, HEXA_DATA_ROLE).value(); - if ( !iQuad.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT BUILD QUAD" ) ); - return false; - } - _value = iQuad.model()->data(iQuad, HEXA_DATA_ROLE).value(); + QString newName = name_le->text(); + if ( !newName.isEmpty() )/*{*/ + getDocumentModel()->setName( iQuad, newName ); - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iQuad, newName ); + //the default name in the dialog box + if (_value != NULL) + updateDefaultName(name_le, _value->getType()); - // to select/highlight result - result = patternDataModel->mapFromSource(iQuad); + // to select/highlight result + result = patternDataModel->mapFromSource(iQuad); - return true; + return true; } @@ -1549,20 +1628,20 @@ bool QuadDialog::apply(QModelIndex& result) // ============================================================== HexaDialog HexaDialog::HexaDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f), - _value(0) +HexaBaseDialog(parent, editmode, f), +_value(0) { - _helpFileName = "gui_hexahedron.html"; - setupUi( this ); - _initWidget(editmode); -// quads_rb->setFocusProxy( quads_lw ); -// vertices_rb->setFocusProxy( vertices_lw ); - quads_rb->click(); - // quads_rb->setFocus(); + _helpFileName = "gui_hexahedron.html"; + setupUi( this ); + _initWidget(editmode); + // quads_rb->setFocusProxy( quads_lw ); + // vertices_rb->setFocusProxy( vertices_lw ); + quads_rb->click(); + // quads_rb->setFocus(); - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Hexahedron Information") ); - } + if ( editmode == INFO_MODE ){ + setWindowTitle( tr("Hexahedron Information") ); + } } // ============================================================== Destructeur @@ -1574,44 +1653,62 @@ HexaDialog::~HexaDialog() // ============================================================== _initInputWidget void HexaDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); - setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); + installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); - name_le->installEventFilter(this); +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); + name_le->installEventFilter(this); - quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - quads_lw->installEventFilter(this); + quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + quads_lw->installEventFilter(this); - vertices_lw->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vertices_lw->installEventFilter(this); + vertices_lw->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vertices_lw->installEventFilter(this); - if ( editmode != INFO_MODE ) { - // delete item from listwidget - QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); - QShortcut* delVertexShortcut = new QShortcut( QKeySequence(Qt::Key_X), vertices_lw ); - delQuadShortcut->setContext( Qt::WidgetShortcut ); - delVertexShortcut->setContext( Qt::WidgetShortcut ); - connect(delQuadShortcut, SIGNAL(activated()), this, SLOT(deleteQuadItem())); - connect(delVertexShortcut, SIGNAL(activated()), this, SLOT(deleteVertexItem())); - } - // edit name - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); - // highlight item on model view (VTK) from listwidget - connect( quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()) ); - connect( vertices_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()) ); + if ( editmode != INFO_MODE ) { + // delete item from listwidget + QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); + QShortcut* delVertexShortcut = new QShortcut( QKeySequence(Qt::Key_X), vertices_lw ); + delQuadShortcut->setContext( Qt::WidgetShortcut ); + delVertexShortcut->setContext( Qt::WidgetShortcut ); + connect(delQuadShortcut, SIGNAL(activated()), this, SLOT(deleteQuadItem())); + connect(delVertexShortcut, SIGNAL(activated()), this, SLOT(deleteVertexItem())); + } + // edit name + //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); + // highlight item on model view (VTK) from listwidget + connect( quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection ); + connect( vertices_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection ); + + if ( editmode != INFO_MODE) + { + connect( vertices_rb, SIGNAL(clicked()), vertices_lw, SLOT(setFocus())); + connect( quads_rb, SIGNAL(clicked()), quads_lw, SLOT(setFocus())); + } + + connect( vertices_rb, SIGNAL(clicked()), this, SLOT(refreshHighlight()), Qt::UniqueConnection); + connect( quads_rb, SIGNAL(clicked()), this, SLOT(refreshHighlight()), Qt::UniqueConnection); + + if (editmode == INFO_MODE) + name_le->setReadOnly(true); + } // ============================================================== clear void HexaDialog::clear() { - name_le->clear(); - quads_lw->clear(); - vertices_lw->clear(); + name_le->clear(); + + quads_lw->clear(); + modelUnregister(quads_lw); + + vertices_lw->clear(); + modelUnregister(vertices_lw); + + modelUnregister(this); } // ============================================================== getAssocsVTK @@ -1620,195 +1717,198 @@ void HexaDialog::clear() */ QModelIndexList HexaDialog::getAssocsVTK() { - QModelIndexList assocs; - QModelIndex iQuad, iVertex; - QListWidgetItem* item = NULL; - - if (quads_rb->isChecked()) - { - //ListWidget content - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return assocs; - for ( int r = 0; r < quads_lw->count(); ++r ){ - item = quads_lw->item(r); - iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iQuad.isValid() ) - assocs << iQuad; - } - return assocs; - } - else if (vertices_rb->isChecked()) - { - //ListWidget content - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return assocs; - for ( int r = 0; r < vertices_lw->count(); ++r ){ - item = vertices_lw->item(r); - iVertex = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iVertex.isValid() ) - assocs << iVertex; - } - return assocs; - } - else return assocs; + QModelIndexList assocs; + QModelIndex iQuad, iVertex; + QListWidgetItem* item = NULL; + + const PatternDataModel* patternDataModel = getPatternDataModel(); + if (patternDataModel == NULL) return assocs; + if (quads_rb->isChecked()) + { + //ListWidget content + for ( int r = 0; r < quads_lw->count(); ++r ){ + item = quads_lw->item(r); + iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iQuad.isValid() ) + assocs << iQuad; + } + return assocs; + } + else if (vertices_rb->isChecked()) + { + //ListWidget content + for ( int r = 0; r < vertices_lw->count(); ++r ){ + item = vertices_lw->item(r); + iVertex = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iVertex.isValid() ) + assocs << iVertex; + } + return assocs; + } + else return assocs; } // ============================================================== updateButtonBox void HexaDialog::updateButtonBox() { - if ( quads_rb->isChecked() ){ // build from quads count() must be between [2,6] - int nbQuads = quads_lw->count(); - //std::cout << "nbQuads => " << nbQuads << std::endl; - if ( nbQuads >= 2 && nbQuads <= 6 ){ - //_applyCloseButton->setEnabled(true); - _applyButton->setEnabled(true); - // _applyCloseButton->setFlat( false ); - // _applyButton->setFlat( false ); - } else { - //_applyCloseButton->setEnabled(false); - _applyButton->setEnabled(false); - // _applyCloseButton->setFlat( true ); - // _applyButton->setFlat( true ); - } - } else if ( vertices_rb->isChecked() ){ // build from vertices count() must be equals to 8 - int nbVertices = vertices_lw->count(); - //std::cout << "nbVertices => " << nbVertices << std::endl; - if ( nbVertices == 8 ){ - //_applyCloseButton->setEnabled(true); - _applyButton->setEnabled(true); - // _applyCloseButton->setFlat( false ); - // _applyButton->setFlat( false ); - } else { - //_applyCloseButton->setEnabled(false); - _applyButton->setEnabled(false); - // _applyCloseButton->setFlat( true ); - // _applyButton->setFlat( true ); - } - } + if ( quads_rb->isChecked() ){ // build from quads count() must be between [2,6] + int nbQuads = quads_lw->count(); + //std::cout << "nbQuads => " << nbQuads << std::endl; + if ( nbQuads >= 2 && nbQuads <= 6 ){ + //_applyCloseButton->setEnabled(true); + _applyButton->setEnabled(true); + // _applyCloseButton->setFlat( false ); + // _applyButton->setFlat( false ); + } else { + //_applyCloseButton->setEnabled(false); + _applyButton->setEnabled(false); + // _applyCloseButton->setFlat( true ); + // _applyButton->setFlat( true ); + } + } else if ( vertices_rb->isChecked() ){ // build from vertices count() must be equals to 8 + int nbVertices = vertices_lw->count(); + //std::cout << "nbVertices => " << nbVertices << std::endl; + if ( nbVertices == 8 ){ + //_applyCloseButton->setEnabled(true); + _applyButton->setEnabled(true); + // _applyCloseButton->setFlat( false ); + // _applyButton->setFlat( false ); + } else { + //_applyCloseButton->setEnabled(false); + _applyButton->setEnabled(false); + // _applyCloseButton->setFlat( true ); + // _applyButton->setFlat( true ); + } + } } // ============================================================== deleteQuadItem void HexaDialog::deleteQuadItem() { - delete quads_lw->currentItem(); - updateButtonBox(); + delete quads_lw->currentItem(); + updateButtonBox(); } // ============================================================== deleteVertexItem void HexaDialog::deleteVertexItem() { - delete vertices_lw->currentItem(); - updateButtonBox(); + delete vertices_lw->currentItem(); + updateButtonBox(); } // ============================================================== _setValueQuads void HexaDialog::_setValueQuads( HEXA_NS::Hexa* h ) { - QListWidgetItem *qItem = NULL; - HEXA_NS::Quad *q = NULL; - QModelIndex qIndex; - - quads_lw->clear(); - for( int i = 0; i <= 5; ++i ){ - q = h->getQuad(i); - qIndex = _patternDataSelectionModel->indexBy( HEXA_ENTRY_ROLE, QString::number(reinterpret_cast(q)) ); - qItem = new QListWidgetItem( q->getName() ); - qItem->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(qIndex) ); - quads_lw->addItem( qItem ); - } + QListWidgetItem *qItem = NULL; + HEXA_NS::Quad *q = NULL; + QModelIndex qIndex; + if (getPatternDataSelectionModel() == NULL) return; + quads_lw->clear(); + for( int i = 0; i <= 5; ++i ){ + q = h->getQuad(i); + qIndex = getPatternDataSelectionModel()->indexBy( HEXA_ENTRY_ROLE, QString::number(reinterpret_cast(q)) ); + qItem = new QListWidgetItem( q->getName() ); + qItem->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(qIndex) ); + qItem->setData(LW_DATA_ROLE, qIndex.data(HEXA_DATA_ROLE)); + quads_lw->addItem( qItem ); + } } // ============================================================== _setValueVertices void HexaDialog::_setValueVertices( HEXA_NS::Hexa* h ) { - QListWidgetItem *vItem = NULL; - HEXA_NS::Vertex* v = NULL; - QModelIndex vIndex; - - vertices_lw->clear(); - for( int i = 0; i <= 7; ++i ){ - v = h->getVertex(i); - vIndex = _patternDataSelectionModel->indexBy( HEXA_ENTRY_ROLE, QString::number(reinterpret_cast(v)) ); - vItem = new QListWidgetItem( v->getName() ); - vItem->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(vIndex) ); - vertices_lw->addItem( vItem ); - } + QListWidgetItem *vItem = NULL; + HEXA_NS::Vertex* v = NULL; + QModelIndex vIndex; + if (getPatternDataSelectionModel() == NULL) return; + vertices_lw->clear(); + for( int i = 0; i <= 7; ++i ){ + v = h->getVertex(i); + vIndex = getPatternDataSelectionModel()->indexBy( HEXA_ENTRY_ROLE, QString::number(reinterpret_cast(v)) ); + vItem = new QListWidgetItem( v->getName() ); + vItem->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(vIndex) ); + vItem->setData(LW_DATA_ROLE, vIndex.data(HEXA_DATA_ROLE)); + vertices_lw->addItem( vItem ); + } } // ============================================================== setValue void HexaDialog::setValue(HEXA_NS::Hexa* h) { - // 0) name - name_le->setText( h->getName() ); + // 0) name + name_le->setText( h->getName() ); - if ( _patternDataSelectionModel){ - QModelIndex hIndex = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(h) ); - _setValueVertices(h); - _setValueQuads(h); - name_le->setProperty( "QModelIndex", QVariant::fromValue(hIndex) ); - } - _value = h; + if ( getPatternDataSelectionModel()){ + QModelIndex hIndex = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(h) ); + _setValueVertices(h); + _setValueQuads(h); + name_le->setProperty( "QModelIndex", QVariant::fromValue(hIndex) ); + } + _value = h; } // ============================================================== getValue HEXA_NS::Hexa* HexaDialog::getValue() { - return _value; + return _value; } // ============================================================== apply bool HexaDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_patternDataSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return false; + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return false; - QModelIndex iHexa; + QModelIndex iHexa; - QListWidget* currentLw = NULL; - QListWidgetItem* item = NULL; + QListWidget* currentLw = NULL; + QListWidgetItem* item = NULL; - if ( quads_rb->isChecked() ) - currentLw = dynamic_cast( quads_lw ); - else if ( vertices_rb->isChecked() ) - currentLw = dynamic_cast( vertices_lw ); + if ( quads_rb->isChecked() ) + currentLw = dynamic_cast( quads_lw ); + else if ( vertices_rb->isChecked() ) + currentLw = dynamic_cast( vertices_lw ); - QModelIndex iElt; - QModelIndexList iElts; - for ( int r = 0; r < currentLw->count(); ++r){ - item = currentLw->item(r); - iElt = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iElt.isValid() ) - iElts << iElt; - } + QModelIndex iElt; + QModelIndexList iElts; + for ( int r = 0; r < currentLw->count(); ++r){ + item = currentLw->item(r); + iElt = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iElt.isValid() ) + iElts << iElt; + } - if ( quads_rb->isChecked() and (iElts.count()>=2 and iElts.count()<=6) ){ // build from quads iElts.count() should be between [2,6] - iHexa = _documentModel->addHexaQuads( iElts ); - } else if ( vertices_rb->isChecked() and iElts.count()== 8 ){ // build from vertices - iHexa = _documentModel->addHexaVertices( iElts[0], iElts[1], iElts[2], iElts[3], - iElts[4], iElts[5], iElts[6], iElts[7] ); - } + if ( quads_rb->isChecked() and (iElts.count()>=2 and iElts.count()<=6) ){ // build from quads iElts.count() should be between [2,6] + iHexa = getDocumentModel()->addHexaQuads( iElts ); + } else if ( vertices_rb->isChecked() and iElts.count()== 8 ){ // build from vertices + iHexa = getDocumentModel()->addHexaVertices( iElts[0], iElts[1], iElts[2], iElts[3], + iElts[4], iElts[5], iElts[6], iElts[7] ); + } - if ( !iHexa.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT BUILD HEXA" ) ); - return false; - } - _value = iHexa.model()->data(iHexa, HEXA_DATA_ROLE).value(); + if ( !iHexa.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT BUILD HEXA" ) ); + return false; + } + _value = iHexa.model()->data(iHexa, HEXA_DATA_ROLE).value(); - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iHexa, newName ); + QString newName = name_le->text(); + if ( !newName.isEmpty() )/*{*/ + getDocumentModel()->setName( iHexa, newName ); - // to select/highlight result - result = patternDataModel->mapFromSource(iHexa); + //update the default name in the dialog box + if (_value != NULL) + updateDefaultName(name_le, _value->getType()); - return true; + // to select/highlight result + result = patternDataModel->mapFromSource(iHexa); + + return true; } @@ -1817,22 +1917,22 @@ bool HexaDialog::apply(QModelIndex& result) // ============================================================== Constructeur VectorDialog::VectorDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f), - _value(0) + HexaBaseDialog(parent, editmode, f), + _value(0) { - _helpFileName = "gui_vector.html"; - setupUi( this ); - _initWidget(editmode); + _helpFileName = "gui_vector.html"; + setupUi( this ); + _initWidget(editmode); -// rb0->setFocusProxy( dx_spb_rb0 ); -// rb1->setFocusProxy( v0_le_rb1 ); - rb0->click(); - // setFocusProxy( rb0 ); + // rb0->setFocusProxy( dx_spb_rb0 ); + // rb1->setFocusProxy( v0_le_rb1 ); + rb0->click(); + // setFocusProxy( rb0 ); - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Vector Information") ); - rb1->hide(); - } + if ( editmode == INFO_MODE ){ + setWindowTitle( tr("Vector Information") ); + rb1->hide(); + } } // ============================================================== Destructeur @@ -1843,115 +1943,122 @@ VectorDialog::~VectorDialog() // ============================================================== _initInputWidget void VectorDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - name_le->installEventFilter(this); +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + name_le->installEventFilter(this); - v0_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v0_le_rb1->setValidator( validator ); - v0_le_rb1->installEventFilter(this); + v0_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v0_le_rb1->setValidator( validator ); + v0_le_rb1->installEventFilter(this); - v1_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v1_le_rb1->setValidator( validator ); - v1_le_rb1->installEventFilter(this); + v1_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v1_le_rb1->setValidator( validator ); + v1_le_rb1->installEventFilter(this); - if ( editmode == INFO_MODE ){ - dx_spb_rb0->setReadOnly(true); - dy_spb_rb0->setReadOnly(true); - dz_spb_rb0->setReadOnly(true); - } + if ( editmode == INFO_MODE ){ + name_le->setReadOnly(true); + dx_spb_rb0->setReadOnly(true); + dy_spb_rb0->setReadOnly(true); + dz_spb_rb0->setReadOnly(true); + } - v0_le_rb1->setReadOnly(true); - v1_le_rb1->setReadOnly(true); + v0_le_rb1->setReadOnly(true); + v1_le_rb1->setReadOnly(true); - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); + //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName()) ); } // ============================================================== clear void VectorDialog::clear() { - name_le->clear(); - dx_spb_rb0->clear(); - dy_spb_rb0->clear(); - dz_spb_rb0->clear(); - v0_le_rb1->clear(); - v1_le_rb1->clear(); + name_le->clear(); +// dx_spb_rb0->clear(); +// dy_spb_rb0->clear(); +// dz_spb_rb0->clear(); + v0_le_rb1->clear(); + modelUnregister(v0_le_rb1); + + v1_le_rb1->clear(); + modelUnregister(v1_le_rb1); + + modelUnregister(this); } // ============================================================== setValue void VectorDialog::setValue(HEXA_NS::Vector* v) { - name_le->setText( v->getName() ); - dx_spb_rb0->setValue( v->getDx() ); - dy_spb_rb0->setValue( v->getDy() ); - dz_spb_rb0->setValue( v->getDz() ); + name_le->setText( v->getName() ); + dx_spb_rb0->setValue( v->getDx() ); + dy_spb_rb0->setValue( v->getDy() ); + dz_spb_rb0->setValue( v->getDz() ); - if ( _patternDataSelectionModel ){ - QModelIndex ivec = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v) ); - name_le->setProperty( "QModelIndex", QVariant::fromValue(ivec) ); - } - _value = v; + if ( getPatternDataSelectionModel() ){ + QModelIndex ivec = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(v) ); + name_le->setProperty( "QModelIndex", QVariant::fromValue(ivec) ); + } + _value = v; } // ============================================================== getValue HEXA_NS::Vector* VectorDialog::getValue() { - return _value; + return _value; } // ============================================================== apply bool VectorDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - QModelIndex iVector; + QModelIndex iVector; - if ( rb0->isChecked() ){ //scalar - double dx = dx_spb_rb0->value(); - double dy = dy_spb_rb0->value(); - double dz = dz_spb_rb0->value(); + if ( rb0->isChecked() ){ //scalar + double dx = dx_spb_rb0->value(); + double dy = dy_spb_rb0->value(); + double dz = dz_spb_rb0->value(); - iVector = _documentModel->addVector( dx, dy, dz ); - } else if ( rb1->isChecked() ){ //vertices - QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb1] ); - QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb1] ); + iVector = getDocumentModel()->addVector( dx, dy, dz ); + } else if ( rb1->isChecked() ){ //vertices + QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb1] ); + QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb1] ); - if ( iv0.isValid() - && iv1.isValid() ){ - iVector = _documentModel->addVectorVertices( iv0, iv1 ); - } - } + if ( iv0.isValid() + && iv1.isValid() ){ + iVector = getDocumentModel()->addVectorVertices( iv0, iv1 ); + } + } - if ( !iVector.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT BUILD VECTOR" ) ); - return false; - } + if ( !iVector.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT BUILD VECTOR" ) ); + return false; + } - _value = iVector.model()->data(iVector, HEXA_DATA_ROLE).value(); + _value = iVector.model()->data(iVector, HEXA_DATA_ROLE).value(); - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iVector, newName ); + QString newName = name_le->text(); + if ( !newName.isEmpty() )/*{*/ + getDocumentModel()->setName( iVector, newName ); - // to select/highlight result - result = patternBuilderModel->mapFromSource(iVector); + //update the default name in the dialog box + if (_value != NULL) + updateDefaultName(name_le, _value->getType()); - return true; + // to select/highlight result + result = patternBuilderModel->mapFromSource(iVector); + + return true; } @@ -1960,13 +2067,13 @@ CylinderDialog::CylinderDialog( QWidget* parent, Mode editmode, Qt::WindowFlags : HexaBaseDialog(parent, editmode, f), _value(0) { - _helpFileName = "gui_cyl.html"; - setupUi( this ); - _initWidget(editmode); + _helpFileName = "gui_cyl.html"; + setupUi( this ); + _initWidget(editmode); - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Cylinder Information") ); - } + if ( editmode == INFO_MODE ){ + setWindowTitle( tr("Cylinder Information") ); + } } // ============================================================== Destructeur @@ -1977,70 +2084,85 @@ CylinderDialog::~CylinderDialog() // ============================================================== _initInputWidget void CylinderDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); + +// setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); + installEventFilter(this); - setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); - installEventFilter(this); +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); + name_le->installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); - name_le->installEventFilter(this); + vex_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - vex_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + vex_le->setValidator( validator ); + vec_le->setValidator( validator ); - vex_le->setValidator( validator ); - vec_le->setValidator( validator ); + vex_le->installEventFilter(this); + vec_le->installEventFilter(this); - vex_le->installEventFilter(this); - vec_le->installEventFilter(this); + vex_le->setReadOnly(true); + vec_le->setReadOnly(true); - vex_le->setReadOnly(true); - vec_le->setReadOnly(true); + if (editmode == INFO_MODE) + { + name_le->setReadOnly(true); + r_spb->setReadOnly(true); + h_spb->setReadOnly(true); + } - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName())); + //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName())); } // ============================================================== clear void CylinderDialog::clear() { - name_le->clear(); - vex_le->clear(); - vec_le->clear(); - r_spb->clear(); - h_spb->clear(); + name_le->clear(); + + vex_le->clear(); + modelUnregister(vex_le); + + vec_le->clear(); + modelUnregister(vec_le); + + r_spb->clear(); + h_spb->clear(); + + modelUnregister(this); + } // ============================================================== setValue void CylinderDialog::setValue(HEXA_NS::Cylinder* c) { - HEXA_NS::Vertex* base = c->getBase(); - HEXA_NS::Vector* direction = c->getDirection(); - double r = c->getRadius(); - double h = c->getHeight(); + HEXA_NS::Vertex* base = c->getBase(); + HEXA_NS::Vector* direction = c->getDirection(); + double r = c->getRadius(); + double h = c->getHeight(); - name_le->setText( c->getName() ); - vex_le->setText( base->getName() ); - vec_le->setText( direction->getName() ); - r_spb->setValue(r); - h_spb->setValue(h); + name_le->setText( c->getName() ); + vex_le->setText( base->getName() ); + vec_le->setText( direction->getName() ); + r_spb->setValue(r); + h_spb->setValue(h); - if ( _patternDataSelectionModel ){ - QModelIndex iCyl = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(c) ); - QModelIndex iBase = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(base) ); - QModelIndex iDirection = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(direction) ); + if ( getPatternDataSelectionModel() ){ + QModelIndex iCyl = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(c) ); + QModelIndex iBase = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(base) ); + QModelIndex iDirection = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(direction) ); - name_le->setProperty( "QModelIndex", QVariant::fromValue(iCyl) ); - vex_le->setProperty( "QModelIndex", QVariant::fromValue(iBase) ); - vec_le->setProperty( "QModelIndex", QVariant::fromValue(iDirection) ); - } - _value = c; + name_le->setProperty( "QModelIndex", QVariant::fromValue(iCyl) ); + vex_le->setProperty( "QModelIndex", QVariant::fromValue(iBase) ); + vec_le->setProperty( "QModelIndex", QVariant::fromValue(iDirection) ); + } + _value = c; } // ============================================================== getValue HEXA_NS::Cylinder* CylinderDialog::getValue() { - return _value; + return _value; } @@ -2048,44 +2170,45 @@ HEXA_NS::Cylinder* CylinderDialog::getValue() // ============================================================== apply bool CylinderDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + QModelIndex iCyl; + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); + double r = r_spb->value(); + double h = h_spb->value(); - QModelIndex iCyl; - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); - double r = r_spb->value(); - double h = h_spb->value(); + if ( ivex.isValid() + && ivec.isValid() ){ + iCyl = getDocumentModel()->addCylinder( ivex, ivec, r, h ); + } - if ( ivex.isValid() - && ivec.isValid() ){ - iCyl = _documentModel->addCylinder( ivex, ivec, r, h ); - } + if ( !iCyl.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD CYLINDER" ) ); + return false; + } - if ( !iCyl.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD CYLINDER" ) ); - return false; - } + _value = iCyl.model()->data(iCyl, HEXA_DATA_ROLE).value(); - _value = iCyl.model()->data(iCyl, HEXA_DATA_ROLE).value(); + QString newName = name_le->text(); + if (!newName.isEmpty()) /*{*/ + getDocumentModel()->setName( iCyl, newName ); - QString newName = name_le->text(); - if (!newName.isEmpty()) /*{*/ - _documentModel->setName( iCyl, newName ); + //update the default name in the dialog box + if (_value != NULL) + updateDefaultName(name_le, _value->getType()); - // to select/highlight result - result = patternBuilderModel->mapFromSource(iCyl); + // to select/highlight result + result = patternBuilderModel->mapFromSource(iCyl); - return true; + return true; } @@ -2097,14 +2220,14 @@ PipeDialog::PipeDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f), _value(0) { - _helpFileName = "gui_pipe.html"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( vex_le ); + _helpFileName = "gui_pipe.html"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( vex_le ); - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Pipe Information") ); - } + if ( editmode == INFO_MODE ){ + setWindowTitle( tr("Pipe Information") ); + } } @@ -2116,130 +2239,138 @@ PipeDialog::~PipeDialog() // ============================================================== _initInputWidget void PipeDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); + installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); - name_le->installEventFilter(this); +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); + name_le->installEventFilter(this); - //Vertex Field config - vex_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vex_le->installEventFilter(this); - vex_le->setValidator( validator ); + //Vertex Field config + vex_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vex_le->installEventFilter(this); + vex_le->setValidator( validator ); - //Vector Field config - vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - vec_le->installEventFilter(this); - vec_le->setValidator( validator ); + //Vector Field config + vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + vec_le->installEventFilter(this); + vec_le->setValidator( validator ); - if ( editmode == INFO_MODE ){ - ir_spb->setReadOnly(true); - er_spb->setReadOnly(true); - h_spb->setReadOnly(true); - } + if ( editmode == INFO_MODE ){ + name_le->setReadOnly(true); + ir_spb->setReadOnly(true); + er_spb->setReadOnly(true); + h_spb->setReadOnly(true); + } - vex_le->setReadOnly(true); - vec_le->setReadOnly(true); + vex_le->setReadOnly(true); + vec_le->setReadOnly(true); - //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName())); + //connect( name_le, SIGNAL(returnPressed()), this, SLOT(updateName())); } // ============================================================== clear void PipeDialog::clear() { - name_le->clear(); - vex_le->clear(); - vec_le->clear(); + name_le->clear(); + + vex_le->clear(); + modelUnregister(vex_le); + + vec_le->clear(); + modelUnregister(vec_le); + + modelUnregister(this); } // ============================================================== setValue void PipeDialog::setValue(HEXA_NS::Pipe* p) { - HEXA_NS::Vertex* base = p->getBase(); - HEXA_NS::Vector* direction = p->getDirection(); - double ir = p->getInternalRadius(); - double er = p->getRadius(); - double h = p->getHeight(); + HEXA_NS::Vertex* base = p->getBase(); + HEXA_NS::Vector* direction = p->getDirection(); + double ir = p->getInternalRadius(); + double er = p->getRadius(); + double h = p->getHeight(); - name_le->setText( p->getName() ); - vex_le->setText( base->getName() ); - vec_le->setText( direction->getName() ); - ir_spb->setValue(ir); - er_spb->setValue(er); - h_spb->setValue(h); + name_le->setText( p->getName() ); + vex_le->setText( base->getName() ); + vec_le->setText( direction->getName() ); + ir_spb->setValue(ir); + er_spb->setValue(er); + h_spb->setValue(h); - if ( _patternDataSelectionModel ){ - QModelIndex iPipe = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(p) ); - QModelIndex iBase = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(base) ); - QModelIndex iDirection = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(direction) ); + if ( getPatternDataSelectionModel() ){ + QModelIndex iPipe = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(p) ); + QModelIndex iBase = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(base) ); + QModelIndex iDirection = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(direction) ); - name_le->setProperty( "QModelIndex", QVariant::fromValue(iPipe) ); - vex_le->setProperty( "QModelIndex", QVariant::fromValue(iBase) ); - vec_le->setProperty( "QModelIndex", QVariant::fromValue(iDirection) ); - } - _value = p; + name_le->setProperty( "QModelIndex", QVariant::fromValue(iPipe) ); + vex_le->setProperty( "QModelIndex", QVariant::fromValue(iBase) ); + vec_le->setProperty( "QModelIndex", QVariant::fromValue(iDirection) ); + } + _value = p; } // ============================================================== getValue HEXA_NS::Pipe* PipeDialog::getValue() { - return _value; + return _value; } // ============================================================== apply bool PipeDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + QModelIndex iPipe; + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); + double ir = ir_spb->value(); + double er = er_spb->value(); + double h = h_spb->value(); - QModelIndex iPipe; - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); - double ir = ir_spb->value(); - double er = er_spb->value(); - double h = h_spb->value(); + if (ir >= er) { + SUIT_MessageBox::information( this, tr( "CANNOT ADD PIPE" ), tr( "External radius must be greather than Internal radius!" ) ); + return false; + } - if (ir >= er) { - SUIT_MessageBox::information( this, tr( "CANNOT ADD PIPE" ), tr( "External radius must be greather than Internal radius!" ) ); - return false; - } + if ( ivex.isValid() + && ivec.isValid() ){ + iPipe = getDocumentModel()->addPipe( ivex, ivec, ir, er, h ); + } - if ( ivex.isValid() - && ivec.isValid() ){ - iPipe = _documentModel->addPipe( ivex, ivec, ir, er, h ); - } + if ( !iPipe.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD PIPE" ) ); + return false; + } + _value = iPipe.model()->data(iPipe, HEXA_DATA_ROLE).value(); - if ( !iPipe.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD PIPE" ) ); - return false; - } - _value = iPipe.model()->data(iPipe, HEXA_DATA_ROLE).value(); + QString newName = name_le->text(); + if ( !newName.isEmpty() )/*{*/ + getDocumentModel()->setName( iPipe, newName ); - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iPipe, newName ); + //update the default name in the dialog box + if (_value != NULL) + updateDefaultName(name_le, _value->getType()); - // to select/highlight result - result = patternBuilderModel->mapFromSource(iPipe); + // to select/highlight result + result = patternBuilderModel->mapFromSource(iPipe); - return true; + return true; } @@ -2251,19 +2382,27 @@ bool PipeDialog::apply(QModelIndex& result) MakeGridDialog::MakeGridDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - setupUi( this ); - _initWidget(editmode); - rb0->click();// Default : cartesian grid - uniform_rb->click(); -// rb0->setFocusProxy( vex_le_rb0 ); -// rb1->setFocusProxy( center_le_rb1 ); -// rb2->setFocusProxy( vex_le_rb2 ); - // setFocusProxy( rb0 ); + setupUi( this ); + _initWidget(editmode); + rb0->click();// Default : cartesian grid + uniform_rb->click(); + // rb0->setFocusProxy( vex_le_rb0 ); + // rb1->setFocusProxy( center_le_rb1 ); + // rb2->setFocusProxy( vex_le_rb2 ); + // setFocusProxy( rb0 ); - _helpFileName = "creategrids.html#guicartgrid"; - connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + _helpFileName = "creategrids.html#guicartgrid"; + connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb0, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb0, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + + connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + + connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); } @@ -2276,58 +2415,58 @@ MakeGridDialog::~MakeGridDialog() void MakeGridDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - vex_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - vex_le_rb0->setValidator( validator ); - vec_le_rb0->setValidator( validator ); - vex_le_rb0->installEventFilter(this); - vec_le_rb0->installEventFilter(this); + vex_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + vex_le_rb0->setValidator( validator ); + vec_le_rb0->setValidator( validator ); + vex_le_rb0->installEventFilter(this); + vec_le_rb0->installEventFilter(this); - center_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - base_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - height_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - center_le_rb1->setValidator( validator ); - base_le_rb1->setValidator( validator ); - height_le_rb1->setValidator( validator ); - center_le_rb1->installEventFilter(this); - base_le_rb1->installEventFilter(this); - height_le_rb1->installEventFilter(this); + center_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + base_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + height_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + center_le_rb1->setValidator( validator ); + base_le_rb1->setValidator( validator ); + height_le_rb1->setValidator( validator ); + center_le_rb1->installEventFilter(this); + base_le_rb1->installEventFilter(this); + height_le_rb1->installEventFilter(this); - vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vex_le_rb2->setValidator( validator ); - vex_le_rb2->installEventFilter(this); + vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vex_le_rb2->setValidator( validator ); + vex_le_rb2->installEventFilter(this); - if ( editmode != INFO_MODE ){ - //Cylindrical - radius_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(radius_lw)); - radius_lw->setEditTriggers(QAbstractItemView::DoubleClicked); + if ( editmode != INFO_MODE ){ + //Cylindrical + radius_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(radius_lw)); + radius_lw->setEditTriggers(QAbstractItemView::DoubleClicked); - angle_lw->setItemDelegate(new HexaAngleDoubleSpinBoxDelegate(angle_lw)); - angle_lw->setEditTriggers(QAbstractItemView::DoubleClicked); + angle_lw->setItemDelegate(new HexaAngleDoubleSpinBoxDelegate(angle_lw)); + angle_lw->setEditTriggers(QAbstractItemView::DoubleClicked); - height_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(height_lw)); - height_lw->setEditTriggers(QAbstractItemView::DoubleClicked); + height_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(height_lw)); + height_lw->setEditTriggers(QAbstractItemView::DoubleClicked); - connect( add_radius_pb, SIGNAL(clicked()), this, SLOT(addRadiusItem()) ); - connect( del_radius_pb, SIGNAL(clicked()), this, SLOT(delRadiusItem()) ); - connect( add_angle_pb, SIGNAL(clicked()), this, SLOT(addAngleItem()) ); - connect( del_angle_pb, SIGNAL(clicked()), this, SLOT(delAngleItem()) ); - connect( add_height_pb, SIGNAL(clicked()), this, SLOT(addHeightItem()) ); - connect( del_height_pb, SIGNAL(clicked()), this, SLOT(delHeightItem()) ); - } + connect( add_radius_pb, SIGNAL(clicked()), this, SLOT(addRadiusItem()) ); + connect( del_radius_pb, SIGNAL(clicked()), this, SLOT(delRadiusItem()) ); + connect( add_angle_pb, SIGNAL(clicked()), this, SLOT(addAngleItem()) ); + connect( del_angle_pb, SIGNAL(clicked()), this, SLOT(delAngleItem()) ); + connect( add_height_pb, SIGNAL(clicked()), this, SLOT(addHeightItem()) ); + connect( del_height_pb, SIGNAL(clicked()), this, SLOT(delHeightItem()) ); + } - vex_le_rb0->setReadOnly(true); - vec_le_rb0->setReadOnly(true); - vex_le_rb2->setReadOnly(true); - center_le_rb1->setReadOnly(true); - base_le_rb1->setReadOnly(true); - height_le_rb1->setReadOnly(true); + vex_le_rb0->setReadOnly(true); + vec_le_rb0->setReadOnly(true); + vex_le_rb2->setReadOnly(true); + center_le_rb1->setReadOnly(true); + base_le_rb1->setReadOnly(true); + height_le_rb1->setReadOnly(true); } @@ -2335,239 +2474,245 @@ void MakeGridDialog::_initInputWidget( Mode editmode ) // ============================================================== clear void MakeGridDialog::clear() { - vex_le_rb0->clear(); - vec_le_rb0->clear(); - base_le_rb1->clear(); - center_le_rb1->clear(); - height_le_rb1->clear(); - random_param_w->clear(); - radius_lw->clear(); - angle_lw->clear(); - height_lw->clear(); - vex_le_rb2->clear(); + vex_le_rb0->clear(); + modelUnregister(vex_le_rb0); + + vec_le_rb0->clear(); + modelUnregister(vec_le_rb0); + + base_le_rb1->clear(); + modelUnregister(base_le_rb1); + + center_le_rb1->clear(); + modelUnregister(center_le_rb1); + + height_le_rb1->clear(); + modelUnregister(height_le_rb1); + + vex_le_rb2->clear(); + modelUnregister(vex_le_rb2); + + modelUnregister(this); } // ============================================================== updateHelpFileName void MakeGridDialog::updateHelpFileName() { - if ( sender() == rb0 ){ - _helpFileName = "creategrids.html#guicartgrid"; - } else if ( sender() == rb1 ){ - _helpFileName = "creategrids.html#guicylgrid"; - } else if ( sender() == rb2 ){ - _helpFileName = "creategrids.html#guisphergrid"; - } + if ( sender() == rb0 ){ + _helpFileName = "creategrids.html#guicartgrid"; + } else if ( sender() == rb1 ){ + _helpFileName = "creategrids.html#guicylgrid"; + } else if ( sender() == rb2 ){ + _helpFileName = "creategrids.html#guisphergrid"; + } } // ============================================================== updateButtonBox void MakeGridDialog::updateButtonBox() //CS_TODO? { - // int nbQuads = quads_lw->count(); - // int nbAngles = angles_lw->count(); - // - // if ( nbQuads>0 && nbAngles> 0 ){ - // _applyCloseButton->setEnabled(true); - // _applyButton->setEnabled(true); - // } else { - // _applyCloseButton->setEnabled(false); - // _applyButton->setEnabled(false); - // } - - // if ( rb0->isChecked() ){ //cartesian - // } else if ( rb1->isChecked() ){ //cylindrical - // nb_radius = radius_lw->item(r); - // nb_angle = angle_lw->item(r); - // nb_height = height_lw->item(r); - // } else if ( rb2->isChecked() ){ //spherical - // } + // int nbQuads = quads_lw->count(); + // int nbAngles = angles_lw->count(); + // + // if ( nbQuads>0 && nbAngles> 0 ){ + // _applyCloseButton->setEnabled(true); + // _applyButton->setEnabled(true); + // } else { + // _applyCloseButton->setEnabled(false); + // _applyButton->setEnabled(false); + // } + + // if ( rb0->isChecked() ){ //cartesian + // } else if ( rb1->isChecked() ){ //cylindrical + // nb_radius = radius_lw->item(r); + // nb_angle = angle_lw->item(r); + // nb_height = height_lw->item(r); + // } else if ( rb2->isChecked() ){ //spherical + // } } // ============================================================== addRadiusItem void MakeGridDialog::addRadiusItem() { - QListWidgetItem* previousItem = radius_lw->currentItem(); - QListWidgetItem* newItem = new QListWidgetItem(); + QListWidgetItem* previousItem = radius_lw->currentItem(); + QListWidgetItem* newItem = new QListWidgetItem(); - double defaultValue = 0.; - if ( previousItem ) - defaultValue = previousItem->data(Qt::EditRole).toDouble(); + double defaultValue = 1.; + if ( previousItem ) + defaultValue = previousItem->data(Qt::EditRole).toDouble(); - newItem->setData( Qt::EditRole, QVariant(defaultValue) ); - newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); - radius_lw->addItem(newItem); + newItem->setData( Qt::EditRole, QVariant(defaultValue) ); + newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); + radius_lw->addItem(newItem); - updateButtonBox(); + updateButtonBox(); } // ============================================================== delRadiusItem void MakeGridDialog::delRadiusItem() { - delete radius_lw->currentItem(); - updateButtonBox(); + delete radius_lw->currentItem(); + updateButtonBox(); } // ============================================================== addAngleItem void MakeGridDialog::addAngleItem() { - QListWidgetItem* previousItem = angle_lw->currentItem(); - QListWidgetItem* newItem = new QListWidgetItem(); + QListWidgetItem* previousItem = angle_lw->currentItem(); + QListWidgetItem* newItem = new QListWidgetItem(); - double defaultValue = 0.; - if ( previousItem ) - defaultValue = previousItem->data(Qt::EditRole).toDouble(); + double defaultValue = 180.; + if ( previousItem ) + defaultValue = previousItem->data(Qt::EditRole).toDouble(); - newItem->setData( Qt::EditRole, QVariant(defaultValue) ); - newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); - angle_lw->addItem(newItem); + newItem->setData( Qt::EditRole, QVariant(defaultValue) ); + newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); + angle_lw->addItem(newItem); - updateButtonBox(); + updateButtonBox(); } // ============================================================== delAngleItem void MakeGridDialog::delAngleItem() { - //std::cout << "delAngleItem()" << std::endl; - delete angle_lw->currentItem(); - updateButtonBox(); + //std::cout << "delAngleItem()" << std::endl; + delete angle_lw->currentItem(); + updateButtonBox(); } // ============================================================== addHeightItem void MakeGridDialog::addHeightItem() { - QListWidgetItem* previousItem = height_lw->currentItem(); - QListWidgetItem* newItem = new QListWidgetItem(); + QListWidgetItem* previousItem = height_lw->currentItem(); + QListWidgetItem* newItem = new QListWidgetItem(); - double defaultValue = 0.; - if ( previousItem ) - defaultValue = previousItem->data(Qt::EditRole).toDouble(); + double defaultValue = 1.; + if ( previousItem ) + defaultValue = previousItem->data(Qt::EditRole).toDouble(); - newItem->setData( Qt::EditRole, QVariant(defaultValue) ); - newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); - height_lw->addItem(newItem); + newItem->setData( Qt::EditRole, QVariant(defaultValue) ); + newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); + height_lw->addItem(newItem); - updateButtonBox(); + updateButtonBox(); } // ============================================================== delHeightItem void MakeGridDialog::delHeightItem() { - //std::cout << "delHeightItem()" << std::endl; - delete height_lw->currentItem(); - updateButtonBox(); + //std::cout << "delHeightItem()" << std::endl; + delete height_lw->currentItem(); + updateButtonBox(); } // ============================================================== apply bool MakeGridDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; - - QModelIndex iNewElts; - if ( rb0->isChecked() ){ //cartesian - QModelIndex ivex_rb0 = patternDataModel->mapToSource( _index[vex_le_rb0] ); - QModelIndex ivec_rb0 = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); - long nx = nx_spb_rb0->value(); - long ny = ny_spb_rb0->value(); - long nz = nz_spb_rb0->value(); - - if ( ivex_rb0.isValid() - && ivec_rb0.isValid() ){ - iNewElts = _documentModel->makeCartesian( ivex_rb0, ivec_rb0, nx, ny, nz ); - } - - } else if ( rb1->isChecked() ){ //cylindrical - QModelIndex icenter_rb1 = patternDataModel->mapToSource( _index[center_le_rb1] ); - QModelIndex ibase_rb1 = patternBuilderModel->mapToSource( _index[base_le_rb1] ); - QModelIndex iheight_rb1 = patternBuilderModel->mapToSource( _index[height_le_rb1] ); - - if ( icenter_rb1.isValid() - && ibase_rb1.isValid() - && iheight_rb1.isValid() ){ - - bool fill = fill_cb_rb1->isChecked(); - if ( uniform_rb->isChecked() ){ - double dr = dr_spb_rb1->value(); - double da = da_spb_rb1->value(); - double dl = dl_spb_rb1->value(); - double nr = nr_spb_rb1->value(); - double na = na_spb_rb1->value(); - double nl = nl_spb_rb1->value(); - - iNewElts = _documentModel->makeCylindrical( icenter_rb1, - ibase_rb1, iheight_rb1, - dr, da, dl, nr, na, nl, fill ); - } - if ( random_rb->isChecked() ){ - QListWidgetItem* item = NULL; -// QDoubleSpinBox* spb = NULL; - - QList radius; - QList angles; - QList heights; - - double somme = 0.; - for ( int r = 0; r < angle_lw->count(); ++r){ - item = angle_lw->item(r); - angles << item->data(Qt::EditRole).toDouble(); - somme += item->data(Qt::EditRole).toDouble(); - } - if (somme > 360.) - { - SUIT_MessageBox::information( 0, - tr("HEXA_INFO"), - tr("The sum of the picked angles has to be \nless or equal than %1 degrees.").arg(360)); - return false; - } - - for ( int r = 0; r < radius_lw->count(); ++r){ - item = radius_lw->item(r); - //std::cout << "radius : " << item->data(Qt::EditRole).toDouble()<< std::endl; - radius << item->data(Qt::EditRole).toDouble(); - } - - for ( int r = 0; r < height_lw->count(); ++r){ - item = height_lw->item(r); - heights << item->data(Qt::EditRole).toDouble(); - } - - iNewElts = _documentModel->makeCylindricals( - icenter_rb1, ibase_rb1, iheight_rb1, - radius, angles, heights, - fill ); //NEW HEXA3 - } - } - - } else if ( rb2->isChecked() ){ //spherical - QModelIndex ivex_rb2 = patternDataModel->mapToSource( _index[vex_le_rb2] ); - // QModelIndex ivecx_rb2 = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); - double radius = radius_spb_rb2->value(); - int nb = nb_spb_rb2->value(); - int k = k_spb_rb2->value(); - - if ( ivex_rb2.isValid() ){ - iNewElts = _documentModel->makeSpherical( ivex_rb2, radius, nb, k ); - } - } - - if ( !iNewElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE GRID" ) ); - return false; - } - - // to select/highlight result - result = patternBuilderModel->mapFromSource( iNewElts ); - - return true; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; + + QModelIndex iNewElts; + if ( rb0->isChecked() ){ //cartesian + QModelIndex ivex_rb0 = patternDataModel->mapToSource( _index[vex_le_rb0] ); + QModelIndex ivec_rb0 = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); + long nx = nx_spb_rb0->value(); + long ny = ny_spb_rb0->value(); + long nz = nz_spb_rb0->value(); + + if ( ivex_rb0.isValid() + && ivec_rb0.isValid() ){ + iNewElts = getDocumentModel()->makeCartesian( ivex_rb0, ivec_rb0, nx, ny, nz ); + } + + } else if ( rb1->isChecked() ){ //cylindrical + QModelIndex icenter_rb1 = patternDataModel->mapToSource( _index[center_le_rb1] ); + QModelIndex ibase_rb1 = patternBuilderModel->mapToSource( _index[base_le_rb1] ); + QModelIndex iheight_rb1 = patternBuilderModel->mapToSource( _index[height_le_rb1] ); + + if ( icenter_rb1.isValid() + && ibase_rb1.isValid() + && iheight_rb1.isValid() ){ + + bool fill = fill_cb_rb1->isChecked(); + if ( uniform_rb->isChecked() ){ + double dr = dr_spb_rb1->value(); + double da = da_spb_rb1->value(); + double dl = dl_spb_rb1->value(); + double nr = nr_spb_rb1->value(); + double na = na_spb_rb1->value(); + double nl = nl_spb_rb1->value(); + + iNewElts = getDocumentModel()->makeCylindrical( icenter_rb1, + ibase_rb1, iheight_rb1, + dr, da, dl, nr, na, nl, fill ); + } + if ( random_rb->isChecked() ){ + QListWidgetItem* item = NULL; + // QDoubleSpinBox* spb = NULL; + + QList radius; + QList angles; + QList heights; + + double somme = 0.; + for ( int r = 0; r < angle_lw->count(); ++r){ + item = angle_lw->item(r); + angles << item->data(Qt::EditRole).toDouble(); + somme += item->data(Qt::EditRole).toDouble(); + } + if (somme > 360.01) + { + SUIT_MessageBox::information( 0, + tr("HEXA_INFO"), + tr("The sum of the picked angles has to be \nless or equal than %1 degrees.").arg(360)); + return false; + } + + for ( int r = 0; r < radius_lw->count(); ++r){ + item = radius_lw->item(r); + //std::cout << "radius : " << item->data(Qt::EditRole).toDouble()<< std::endl; + radius << item->data(Qt::EditRole).toDouble(); + } + + for ( int r = 0; r < height_lw->count(); ++r){ + item = height_lw->item(r); + heights << item->data(Qt::EditRole).toDouble(); + } + + iNewElts = getDocumentModel()->makeCylindricals( + icenter_rb1, ibase_rb1, iheight_rb1, + radius, angles, heights, + fill ); //NEW HEXA3 + } + } + + } else if ( rb2->isChecked() ){ //spherical + QModelIndex ivex_rb2 = patternDataModel->mapToSource( _index[vex_le_rb2] ); + // QModelIndex ivecx_rb2 = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + double radius = radius_spb_rb2->value(); + int nb = nb_spb_rb2->value(); + int k = k_spb_rb2->value(); + + if ( ivex_rb2.isValid() ){ + iNewElts = getDocumentModel()->makeSpherical( ivex_rb2, radius, nb, k ); + } + } + + if ( !iNewElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE GRID" ) ); + return false; + } + + // to select/highlight result + result = patternBuilderModel->mapFromSource( iNewElts ); + + return true; } @@ -2577,10 +2722,10 @@ bool MakeGridDialog::apply(QModelIndex& result) MakeCylinderDialog::MakeCylinderDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_blocks_for_cyl_pipe.html#make-cylinder"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( cyl_le ); + _helpFileName = "gui_blocks_for_cyl_pipe.html#make-cylinder"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( cyl_le ); } // ============================================================== Destructeur @@ -2590,64 +2735,68 @@ MakeCylinderDialog::~MakeCylinderDialog() void MakeCylinderDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - cyl_le->setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); - vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - cyl_le->setValidator( validator ); - vec_le->setValidator( validator ); - cyl_le->installEventFilter(this); - vec_le->installEventFilter(this); + cyl_le->setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); + vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + cyl_le->setValidator( validator ); + vec_le->setValidator( validator ); + cyl_le->installEventFilter(this); + vec_le->installEventFilter(this); - cyl_le->setReadOnly(true); - vec_le->setReadOnly(true); + cyl_le->setReadOnly(true); + vec_le->setReadOnly(true); } // ============================================================== clear void MakeCylinderDialog::clear() { - cyl_le->clear(); - vec_le->clear(); + cyl_le->clear(); + modelUnregister(cyl_le); + + vec_le->clear(); + modelUnregister(vec_le); + + modelUnregister(this); } // ============================================================== apply bool MakeCylinderDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternBuilderSelectionModel ) return false; - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternBuilderModel ) return false; - QModelIndex iElts; - QModelIndex icyl = patternBuilderModel->mapToSource( _index[cyl_le] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); - double nr = nr_spb->value(); - double na = na_spb->value(); - double nl = nl_spb->value(); + QModelIndex iElts; + QModelIndex icyl = patternBuilderModel->mapToSource( _index[cyl_le] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); + double nr = nr_spb->value(); + double na = na_spb->value(); + double nl = nl_spb->value(); - if ( icyl.isValid() - && ivec.isValid() ){ - iElts = _documentModel->makeCylinder( icyl, ivec, nr, na, nl ); - } + if ( icyl.isValid() + && ivec.isValid() ){ + iElts = getDocumentModel()->makeCylinder( icyl, ivec, nr, na, nl ); + } - if ( !iElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE CYLINDER" ) ); - return false; - } + if ( !iElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE CYLINDER" ) ); + return false; + } - // to select/highlight result - result = patternBuilderModel->mapFromSource(iElts); + // to select/highlight result + result = patternBuilderModel->mapFromSource(iElts); - return true; + return true; } @@ -2658,10 +2807,10 @@ bool MakeCylinderDialog::apply(QModelIndex& result) MakePipeDialog::MakePipeDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_blocks_for_cyl_pipe.html#make-pipe"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( pipe_le ); + _helpFileName = "gui_blocks_for_cyl_pipe.html#make-pipe"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( pipe_le ); } // ============================================================== Destructeur @@ -2672,23 +2821,23 @@ MakePipeDialog::~MakePipeDialog() // ============================================================== _initInputWidget void MakePipeDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - pipe_le->setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); - vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + pipe_le->setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); + vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - pipe_le->setValidator( validator ); - vec_le->setValidator( validator ); + pipe_le->setValidator( validator ); + vec_le->setValidator( validator ); - pipe_le->installEventFilter(this); - vec_le->installEventFilter(this); + pipe_le->installEventFilter(this); + vec_le->installEventFilter(this); - pipe_le->setReadOnly(true); - vec_le->setReadOnly(true); + pipe_le->setReadOnly(true); + vec_le->setReadOnly(true); @@ -2697,43 +2846,47 @@ void MakePipeDialog::_initInputWidget( Mode editmode ) // ============================================================== clear void MakePipeDialog::clear() { - pipe_le->clear(); - vec_le->clear(); + pipe_le->clear(); + modelUnregister(pipe_le); + + vec_le->clear(); + modelUnregister(vec_le); + + modelUnregister(this); } // ============================================================== apply bool MakePipeDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternBuilderSelectionModel ) return false; - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternBuilderModel ) return false; - QModelIndex iElts; - QModelIndex ipipe = patternBuilderModel->mapToSource( _index[pipe_le] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); - double nr = nr_spb->value(); - double na = na_spb->value(); - double nl = nl_spb->value(); + QModelIndex iElts; + QModelIndex ipipe = patternBuilderModel->mapToSource( _index[pipe_le] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); + double nr = nr_spb->value(); + double na = na_spb->value(); + double nl = nl_spb->value(); - if ( ipipe.isValid() - && ivec.isValid() ){ - iElts = _documentModel->makePipe( ipipe, ivec, nr, na, nl ); - } - if ( !iElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE PIPE" ) ); - return false; - } + if ( ipipe.isValid() + && ivec.isValid() ){ + iElts = getDocumentModel()->makePipe( ipipe, ivec, nr, na, nl ); + } + if ( !iElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE PIPE" ) ); + return false; + } - // to select/highlight result - result = patternBuilderModel->mapFromSource(iElts); + // to select/highlight result + result = patternBuilderModel->mapFromSource(iElts); - return true; + return true; } //---------------------------------- MakeCylindersDialog ----------------------------- @@ -2743,10 +2896,10 @@ bool MakePipeDialog::apply(QModelIndex& result) MakeCylindersDialog::MakeCylindersDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_blocks_for_cyl_pipe.html#make-cylinders"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( cyl1_le ); + _helpFileName = "gui_blocks_for_cyl_pipe.html#make-cylinders"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( cyl1_le ); } // ============================================================== Destructeur @@ -2756,63 +2909,67 @@ MakeCylindersDialog::~MakeCylindersDialog() void MakeCylindersDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(CROSSELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(CROSSELEMENTS_TREE) ); + installEventFilter(this); - cyl1_le->setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); - cyl2_le->setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); + cyl1_le->setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); + cyl2_le->setProperty( "HexaWidgetType", QVariant::fromValue(CYLINDER_TREE) ); - cyl1_le->setValidator( validator ); - cyl2_le->setValidator( validator ); + cyl1_le->setValidator( validator ); + cyl2_le->setValidator( validator ); - cyl1_le->installEventFilter(this); - cyl2_le->installEventFilter(this); + cyl1_le->installEventFilter(this); + cyl2_le->installEventFilter(this); - cyl1_le->setReadOnly(true); - cyl2_le->setReadOnly(true); + cyl1_le->setReadOnly(true); + cyl2_le->setReadOnly(true); } // ============================================================== clear void MakeCylindersDialog::clear() { - cyl1_le->clear(); - cyl2_le->clear(); + cyl1_le->clear(); + modelUnregister(cyl1_le); + + cyl2_le->clear(); + modelUnregister(cyl2_le); + + modelUnregister(this); } // ============================================================== apply bool MakeCylindersDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternBuilderSelectionModel ) return false; - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternBuilderModel ) return false; - QModelIndex iCrossElts; - QModelIndex icyl1 = patternBuilderModel->mapToSource( _index[cyl1_le] ); - QModelIndex icyl2 = patternBuilderModel->mapToSource( _index[cyl2_le] ); + QModelIndex iCrossElts; + QModelIndex icyl1 = patternBuilderModel->mapToSource( _index[cyl1_le] ); + QModelIndex icyl2 = patternBuilderModel->mapToSource( _index[cyl2_le] ); - if ( icyl1.isValid() - && icyl2.isValid() ){ - iCrossElts = _documentModel->makeCylinders( icyl1, icyl2 ); - } + if ( icyl1.isValid() + && icyl2.isValid() ){ + iCrossElts = getDocumentModel()->makeCylinders( icyl1, icyl2 ); + } - if ( !iCrossElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE CYLINDERS" ) ); - return false; - } + if ( !iCrossElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE CYLINDERS" ) ); + return false; + } - // to select/highlight result - result = patternBuilderModel->mapFromSource(iCrossElts); + // to select/highlight result + result = patternBuilderModel->mapFromSource(iCrossElts); - return true; + return true; } @@ -2824,10 +2981,10 @@ bool MakeCylindersDialog::apply(QModelIndex& result) MakePipesDialog::MakePipesDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_blocks_for_cyl_pipe.html#make-pipes"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( pipe1_le ); + _helpFileName = "gui_blocks_for_cyl_pipe.html#make-pipes"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( pipe1_le ); } // ============================================================== Destructeur @@ -2838,58 +2995,62 @@ MakePipesDialog::~MakePipesDialog() // ============================================================== _initInputWidget void MakePipesDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - pipe1_le->setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); - pipe2_le->setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); + pipe1_le->setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); + pipe2_le->setProperty( "HexaWidgetType", QVariant::fromValue(PIPE_TREE) ); - pipe1_le->setValidator( validator ); - pipe2_le->setValidator( validator ); + pipe1_le->setValidator( validator ); + pipe2_le->setValidator( validator ); - pipe1_le->installEventFilter(this); - pipe2_le->installEventFilter(this); + pipe1_le->installEventFilter(this); + pipe2_le->installEventFilter(this); - pipe1_le->setReadOnly(true); - pipe2_le->setReadOnly(true); + pipe1_le->setReadOnly(true); + pipe2_le->setReadOnly(true); } // ============================================================== clear void MakePipesDialog::clear() { - pipe1_le->clear(); - pipe2_le->clear(); + pipe1_le->clear(); + modelUnregister(pipe1_le); + + pipe2_le->clear(); + modelUnregister(pipe2_le); + + modelUnregister(this); } // ============================================================== apply bool MakePipesDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternBuilderSelectionModel ) return false; - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternBuilderModel ) return false; - QModelIndex iCrossElts; - QModelIndex ipipe1 = patternBuilderModel->mapToSource( _index[pipe1_le] ); - QModelIndex ipipe2 = patternBuilderModel->mapToSource( _index[pipe2_le] ); + QModelIndex iCrossElts; + QModelIndex ipipe1 = patternBuilderModel->mapToSource( _index[pipe1_le] ); + QModelIndex ipipe2 = patternBuilderModel->mapToSource( _index[pipe2_le] ); - if ( ipipe1.isValid() - && ipipe2.isValid() ){ - iCrossElts = _documentModel->makePipes( ipipe1, ipipe2 ); - } - if ( !iCrossElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE PIPES" ) ); - return false; - } - result = patternBuilderModel->mapFromSource(iCrossElts); + if ( ipipe1.isValid() + && ipipe2.isValid() ){ + iCrossElts = getDocumentModel()->makePipes( ipipe1, ipipe2 ); + } + if ( !iCrossElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE PIPES" ) ); + return false; + } + result = patternBuilderModel->mapFromSource(iCrossElts); - return true; + return true; } @@ -2900,13 +3061,12 @@ bool MakePipesDialog::apply(QModelIndex& result) RemoveHexaDialog::RemoveHexaDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_remove.html"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( hexa_le ); + _helpFileName = "gui_remove.html"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( hexa_le ); } - // ============================================================== Destructeur RemoveHexaDialog::~RemoveHexaDialog() { @@ -2915,63 +3075,56 @@ RemoveHexaDialog::~RemoveHexaDialog() // ============================================================== _initInputWidget void RemoveHexaDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); - - hexa_le->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); - hexa_le->setValidator( validator ); - hexa_le->installEventFilter(this); - hexa_le->setReadOnly(true); - + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); + hexa_le->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); + hexa_le->setValidator( validator ); + hexa_le->installEventFilter(this); + hexa_le->setReadOnly(true); + autoFocusSwitch = false; } // ============================================================== clear void RemoveHexaDialog::clear() { - hexa_le->clear(); + hexa_le->clear(); + modelUnregister(hexa_le); + + modelUnregister(this); } // ============================================================== apply bool RemoveHexaDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return false; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - QModelIndex ihexa = patternDataModel->mapToSource( _index[hexa_le] ); + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return false; - bool removed = false; - if ( ihexa.isValid() ){ - if ( connected_cb->isChecked() ){ - removed = _documentModel->removeConnectedHexa( ihexa ); - } else { - removed = _documentModel->removeHexa( ihexa ); - } - } + QModelIndex ihexa = patternDataModel->mapToSource( _index[hexa_le] ); - if ( removed == false ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT REMOVE HEXA" ) ); - return false; - } + bool removed = false; + if ( ihexa.isValid() ){ + if ( connected_cb->isChecked() ){ + removed = getDocumentModel()->removeConnectedHexa( ihexa ); + } else { + removed = getDocumentModel()->removeHexa( ihexa ); + } + } + if ( removed == false ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT REMOVE HEXA" ) ); + return false; + } - //Update the line edit - QVariant invalid; - hexa_le->setProperty("QModelIndex", invalid ); + clear(); - QModelIndex invalidIndex; - _index[hexa_le] = invalidIndex; - - clear(); - - return true; + return true; } @@ -2982,13 +3135,13 @@ bool RemoveHexaDialog::apply(QModelIndex& result) PrismQuadDialog::PrismQuadDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_prism_join_quad.html#prism-quadrangles"; - setupUi( this ); - _initWidget(editmode); -// setFocusProxy( quads_lw ); -// connect( regular_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); -// connect( irregular_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - regular_rb->click(); + _helpFileName = "gui_prism_join_quad.html#prism-quadrangles"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( quads_lw ); + // connect( regular_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + // connect( irregular_rb, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + regular_rb->click(); } @@ -3003,72 +3156,77 @@ PrismQuadDialog::~PrismQuadDialog() */ QModelIndexList PrismQuadDialog::getAssocsVTK() { - QModelIndexList assocs; - QModelIndex iQuad; - QListWidgetItem* item = NULL; + QModelIndexList assocs; + QModelIndex iQuad; + QListWidgetItem* item = NULL; - //ListWidget content - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return assocs; - for ( int r = 0; r < quads_lw->count(); ++r ){ - item = quads_lw->item(r); - iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iQuad.isValid() ) - assocs << iQuad; - } - return assocs; + //ListWidget content + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return assocs; + for ( int r = 0; r < quads_lw->count(); ++r ){ + item = quads_lw->item(r); + iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iQuad.isValid() ) + assocs << iQuad; + } + return assocs; } // ============================================================== _initInputWidget void PrismQuadDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - vec_le->setValidator( validator ); + vec_le->setValidator( validator ); - vec_le->installEventFilter(this); - quads_lw->installEventFilter(this); + vec_le->installEventFilter(this); + quads_lw->installEventFilter(this); - if ( editmode != INFO_MODE ){ - QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); - delQuadShortcut->setContext( Qt::WidgetShortcut ); - connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(removeQuad()) ); - } + if ( editmode != INFO_MODE ){ + QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); + delQuadShortcut->setContext( Qt::WidgetShortcut ); + connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(removeQuad()) ); + } - vec_le->setReadOnly(true); + vec_le->setReadOnly(true); - connect( quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()) ); - height_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(height_lw)); - height_lw->setEditTriggers(QAbstractItemView::DoubleClicked); - connect( add_height_pb, SIGNAL(clicked()), this, SLOT(addHeightItem()) ); - connect( del_height_pb, SIGNAL(clicked()), this, SLOT(delHeightItem()) ); + connect( quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection ); + height_lw->setItemDelegate(new HexaPositiveDoubleSpinBoxDelegate(height_lw)); + height_lw->setEditTriggers(QAbstractItemView::DoubleClicked); + connect( add_height_pb, SIGNAL(clicked()), this, SLOT(addHeightItem()) ); + connect( del_height_pb, SIGNAL(clicked()), this, SLOT(delHeightItem()) ); } // ============================================================== clear void PrismQuadDialog::clear() { - vec_le->clear(); - quads_lw->clear(); + quads_lw->clear(); + modelUnregister(quads_lw); + + vec_le->clear(); + modelUnregister(vec_le); + + modelUnregister(this); } // ============================================================== removeQuad void PrismQuadDialog::removeQuad() { - QListWidgetItem *item = quads_lw->currentItem(); + QListWidgetItem *item = quads_lw->currentItem(); - if (item) { - int r = quads_lw->row(item); - quads_lw->takeItem(r); - delete item; - } + if (item) { + int r = quads_lw->row(item); + quads_lw->takeItem(r); + delete item; + } } @@ -3081,25 +3239,25 @@ void PrismQuadDialog::removeQuad() // ============================================================== addHeightItem void PrismQuadDialog::addHeightItem() { - QListWidgetItem* previousItem = height_lw->currentItem(); - QListWidgetItem* newItem = new QListWidgetItem(); + QListWidgetItem* previousItem = height_lw->currentItem(); + QListWidgetItem* newItem = new QListWidgetItem(); - double defaultValue = 0.; - if ( previousItem ) - defaultValue = previousItem->data(Qt::EditRole).toDouble(); + double defaultValue = 1.; + if ( previousItem ) + defaultValue = previousItem->data(Qt::EditRole).toDouble(); - newItem->setData( Qt::EditRole, QVariant(defaultValue) ); - newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); - height_lw->addItem(newItem); + newItem->setData( Qt::EditRole, QVariant(defaultValue) ); + newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); + height_lw->addItem(newItem); -// updateButtonBox(); + // updateButtonBox(); } // ============================================================== delHeightItem void PrismQuadDialog::delHeightItem() { - delete height_lw->currentItem(); -// updateButtonBox(); + delete height_lw->currentItem(); + // updateButtonBox(); } @@ -3107,61 +3265,58 @@ void PrismQuadDialog::delHeightItem() // ============================================================== apply bool PrismQuadDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; - - ///// - QModelIndexList iquads = getIndexList(quads_lw); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); - - QModelIndex iElts; - if ( ivec.isValid() ){ - if (regular_rb->isChecked()) - { - int nb = nb_spb->value(); - if ( iquads.count() == 1 ){ - iElts = _documentModel->prismQuad( iquads[0], ivec, nb ); - } else if ( iquads.count() > 1 ){ - iElts = _documentModel->prismQuads( iquads, ivec, nb ); - } - } - else //irregular_rb is checked - { - QVector heights; - QListWidgetItem* item = NULL; - unsigned int nbItems = height_lw->count(); - - for ( int r = 0; r < nbItems; ++r){ - item = height_lw->item(r); - heights << item->data(Qt::EditRole).toDouble(); - } - if (iquads.count() == 0 || heights.size() == 0) - { - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), - tr( "Parameters are invalid!" ) ); - return false; - } - iElts = _documentModel->prismQuads( iquads, ivec, heights.toStdVector()/*, nb*/ ); - } - } - - if ( !iElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT PRISM QUAD(S)" ) ); - return false; - } - - result = patternBuilderModel->mapFromSource(iElts); - - return true; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; + + ///// + QModelIndexList iquads = getIndexList(quads_lw); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le] ); + + QModelIndex iElts; + if ( ivec.isValid() ){ + if (regular_rb->isChecked()) + { + int nb = nb_spb->value(); + if ( iquads.count() == 1 ){ + iElts = getDocumentModel()->prismQuad( iquads[0], ivec, nb ); + } else if ( iquads.count() > 1 ){ + iElts = getDocumentModel()->prismQuads( iquads, ivec, nb ); + } + } + else //irregular_rb is checked + { + QVector heights; + QListWidgetItem* item = NULL; + unsigned int nbItems = height_lw->count(); + + for ( int r = 0; r < nbItems; ++r){ + item = height_lw->item(r); + heights << item->data(Qt::EditRole).toDouble(); + } + if (iquads.count() == 0 || heights.size() == 0) + { + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), + tr( "Parameters are invalid!" ) ); + return false; + } + iElts = getDocumentModel()->prismQuads( iquads, ivec, heights.toStdVector()/*, nb*/ ); + } + } + + if ( !iElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT PRISM QUAD(S)" ) ); + return false; + } + + result = patternBuilderModel->mapFromSource(iElts); + + return true; } //---------------------------------- JoinQuadDialog ----------------------------- @@ -3171,10 +3326,10 @@ bool PrismQuadDialog::apply(QModelIndex& result) JoinQuadDialog::JoinQuadDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_prism_join_quad.html#join-quadrangles"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( quads_lw ); + _helpFileName = "gui_prism_join_quad.html#join-quadrangles"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( quads_lw ); } @@ -3189,92 +3344,106 @@ JoinQuadDialog::~JoinQuadDialog() */ QModelIndexList JoinQuadDialog::getAssocsVTK() { - QModelIndexList assocs; - QModelIndex iQuad; - QListWidgetItem* item = NULL; + QModelIndexList assocs; + QModelIndex iQuad; + QListWidgetItem* item = NULL; + + if (getPatternDataSelectionModel() == NULL) return assocs; - //ListWidget content - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return assocs; - for ( int r = 0; r < quads_lw->count(); ++r ){ - item = quads_lw->item(r); -// iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); //unsafe - iQuad = _patternDataSelectionModel->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); - if ( iQuad.isValid() ) assocs << iQuad; - } - return assocs; + //ListWidget content + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return assocs; + for ( int r = 0; r < quads_lw->count(); ++r ){ + item = quads_lw->item(r); + // iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); //unsafe + iQuad = getPatternDataSelectionModel()->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); + if ( iQuad.isValid() ) assocs << iQuad; + } + return assocs; } // ============================================================== _initInputWidget void JoinQuadDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - vex0_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vex1_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vex2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vex3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - quad_dest_le->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + vex0_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vex1_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vex2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vex3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + quad_dest_le->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - vex0_le->setValidator( validator ); - vex1_le->setValidator( validator ); - vex2_le->setValidator( validator ); - vex3_le->setValidator( validator ); - quad_dest_le->setValidator( validator ); + vex0_le->setValidator( validator ); + vex1_le->setValidator( validator ); + vex2_le->setValidator( validator ); + vex3_le->setValidator( validator ); + quad_dest_le->setValidator( validator ); - vex0_le->installEventFilter(this); - vex1_le->installEventFilter(this); - vex2_le->installEventFilter(this); - vex3_le->installEventFilter(this); - quad_dest_le->installEventFilter(this); - quads_lw->installEventFilter(this); + vex0_le->installEventFilter(this); + vex1_le->installEventFilter(this); + vex2_le->installEventFilter(this); + vex3_le->installEventFilter(this); + quad_dest_le->installEventFilter(this); + quads_lw->installEventFilter(this); - if ( editmode != INFO_MODE ){ - QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); - delQuadShortcut->setContext( Qt::WidgetShortcut ); - connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(removeQuad()) ); - } + if ( editmode != INFO_MODE ){ + QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); + delQuadShortcut->setContext( Qt::WidgetShortcut ); + connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(removeQuad()) ); + } - vex0_le->setReadOnly(true); - vex1_le->setReadOnly(true); - vex2_le->setReadOnly(true); - vex3_le->setReadOnly(true); - quad_dest_le->setReadOnly(true); + vex0_le->setReadOnly(true); + vex1_le->setReadOnly(true); + vex2_le->setReadOnly(true); + vex3_le->setReadOnly(true); + quad_dest_le->setReadOnly(true); - _currentObj = quads_lw; + _currentObj = quads_lw; - connect( quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()) ); + connect( quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection ); } // ============================================================== clear void JoinQuadDialog::clear() { - quads_lw->clear(); - vex0_le->clear(); - vex2_le->clear(); + quads_lw->clear(); + modelUnregister(quads_lw); + + vex0_le->clear(); + modelUnregister(vex0_le); + + vex2_le->clear(); + modelUnregister(vex2_le); + + quad_dest_le->clear(); + modelUnregister(quad_dest_le); + + vex1_le->clear(); + modelUnregister(vex1_le); - quad_dest_le->clear(); - vex1_le->clear(); - vex3_le->clear(); + vex3_le->clear(); + modelUnregister(vex3_le); + + modelUnregister(this); } // ============================================================== removeQuad void JoinQuadDialog::removeQuad() { - QListWidgetItem *item = quads_lw->currentItem(); + QListWidgetItem *item = quads_lw->currentItem(); - if (item) { - int r = quads_lw->row(item); - quads_lw->takeItem(r); - delete item; - } + if (item) { + int r = quads_lw->row(item); + quads_lw->takeItem(r); + delete item; + } } @@ -3288,59 +3457,56 @@ void JoinQuadDialog::removeQuad() // ============================================================== apply bool JoinQuadDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; - - ///// - QModelIndexList iquads; - QModelIndex iquad; - QListWidgetItem* item = NULL; - for ( int r = 0; r < quads_lw->count(); ++r){ - item = quads_lw->item(r); - iquad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iquad.isValid() ) iquads << iquad; - } - QModelIndex iquaddest = patternDataModel->mapToSource( _index[quad_dest_le] ); - QModelIndex ivex0 = patternDataModel->mapToSource( _index[vex0_le] ); - QModelIndex ivex1 = patternDataModel->mapToSource( _index[vex1_le] ); - QModelIndex ivex2 = patternDataModel->mapToSource( _index[vex2_le] ); - QModelIndex ivex3 = patternDataModel->mapToSource( _index[vex3_le] ); - - QModelIndex iElts; - if ( iquaddest.isValid() - && ivex0.isValid() - && ivex1.isValid() - && ivex2.isValid() - && ivex3.isValid() ){ - int nb = nb_spb->value(); - if ( iquads.count() == 1 ){ - iElts = _documentModel->joinQuad( iquads[0], iquaddest, - ivex0, ivex1, ivex2, ivex3, - nb ); - } else if ( iquads.count() > 1 ){ - iElts = _documentModel->joinQuads( iquads, iquaddest, - ivex0, ivex1, ivex2, ivex3, - nb ); - } - } - - if ( !iElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT JOIN QUAD(S)" ) ); - return false; - } - - result = patternBuilderModel->mapFromSource(iElts); - - return true; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; + + ///// + QModelIndexList iquads; + QModelIndex iquad; + QListWidgetItem* item = NULL; + for ( int r = 0; r < quads_lw->count(); ++r){ + item = quads_lw->item(r); + iquad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iquad.isValid() ) iquads << iquad; + } + QModelIndex iquaddest = patternDataModel->mapToSource( _index[quad_dest_le] ); + QModelIndex ivex0 = patternDataModel->mapToSource( _index[vex0_le] ); + QModelIndex ivex1 = patternDataModel->mapToSource( _index[vex1_le] ); + QModelIndex ivex2 = patternDataModel->mapToSource( _index[vex2_le] ); + QModelIndex ivex3 = patternDataModel->mapToSource( _index[vex3_le] ); + + QModelIndex iElts; + if ( iquaddest.isValid() + && ivex0.isValid() + && ivex1.isValid() + && ivex2.isValid() + && ivex3.isValid() ){ + int nb = nb_spb->value(); + if ( iquads.count() == 1 ){ + iElts = getDocumentModel()->joinQuad( iquads[0], iquaddest, + ivex0, ivex1, ivex2, ivex3, + nb ); + } else if ( iquads.count() > 1 ){ + iElts = getDocumentModel()->joinQuads( iquads, iquaddest, + ivex0, ivex1, ivex2, ivex3, + nb ); + } + } + + if ( !iElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT JOIN QUAD(S)" ) ); + return false; + } + + result = patternBuilderModel->mapFromSource(iElts); + + return true; } @@ -3359,18 +3525,26 @@ bool JoinQuadDialog::apply(QModelIndex& result) MergeDialog::MergeDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - setupUi( this ); - _initWidget(editmode); -// rb0->setFocusProxy( v0_le_rb0 ); -// rb1->setFocusProxy( e0_le_rb1 ); -// rb2->setFocusProxy( q0_le_rb2 ); - // setFocusProxy( rb0 ); - rb0->click(); + setupUi( this ); + _initWidget(editmode); + // rb0->setFocusProxy( v0_le_rb0 ); + // rb1->setFocusProxy( e0_le_rb1 ); + // rb2->setFocusProxy( q0_le_rb2 ); + // setFocusProxy( rb0 ); + rb0->click(); + + _helpFileName = "gui_merge_elmts.html#merge-two-vertices"; + connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb0, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb0, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + + connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); - _helpFileName = "gui_merge_elmts.html#merge-2-vertices"; - connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb2, SIGNAL(cliked()), this, SLOT(clearVTKSelection()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); } // ============================================================== Destructeur @@ -3381,163 +3555,186 @@ MergeDialog::~MergeDialog() // ============================================================== _initInputWidget void MergeDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - v0_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v1_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v0_le_rb0->setValidator( validator ); - v1_le_rb0->setValidator( validator ); - v0_le_rb0->installEventFilter(this); - v1_le_rb0->installEventFilter(this); + v0_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v1_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v0_le_rb0->setValidator( validator ); + v1_le_rb0->setValidator( validator ); + v0_le_rb0->installEventFilter(this); + v1_le_rb0->installEventFilter(this); - v0_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v1_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - e0_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - e1_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + v0_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v1_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + e0_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + e1_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - v0_le_rb1->setValidator( validator ); - v1_le_rb1->setValidator( validator ); - e0_le_rb1->setValidator( validator ); - e1_le_rb1->setValidator( validator ); + v0_le_rb1->setValidator( validator ); + v1_le_rb1->setValidator( validator ); + e0_le_rb1->setValidator( validator ); + e1_le_rb1->setValidator( validator ); - v0_le_rb1->installEventFilter(this); - v1_le_rb1->installEventFilter(this); - e0_le_rb1->installEventFilter(this); - e1_le_rb1->installEventFilter(this); + v0_le_rb1->installEventFilter(this); + v1_le_rb1->installEventFilter(this); + e0_le_rb1->installEventFilter(this); + e1_le_rb1->installEventFilter(this); - v0_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v1_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v2_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - v3_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - q0_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - q1_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + v0_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v1_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v2_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + v3_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + q0_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + q1_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - v0_le_rb2->setValidator( validator ); - v1_le_rb2->setValidator( validator ); - v2_le_rb2->setValidator( validator ); - v3_le_rb2->setValidator( validator ); - q0_le_rb2->setValidator( validator ); - q1_le_rb2->setValidator( validator ); + v0_le_rb2->setValidator( validator ); + v1_le_rb2->setValidator( validator ); + v2_le_rb2->setValidator( validator ); + v3_le_rb2->setValidator( validator ); + q0_le_rb2->setValidator( validator ); + q1_le_rb2->setValidator( validator ); - v0_le_rb2->installEventFilter(this); - v1_le_rb2->installEventFilter(this); - v2_le_rb2->installEventFilter(this); - v3_le_rb2->installEventFilter(this); - q0_le_rb2->installEventFilter(this); - q1_le_rb2->installEventFilter(this); + v0_le_rb2->installEventFilter(this); + v1_le_rb2->installEventFilter(this); + v2_le_rb2->installEventFilter(this); + v3_le_rb2->installEventFilter(this); + q0_le_rb2->installEventFilter(this); + q1_le_rb2->installEventFilter(this); - v0_le_rb0->setReadOnly(true); - v1_le_rb0->setReadOnly(true); - - v0_le_rb1->setReadOnly(true); - v1_le_rb1->setReadOnly(true); - e0_le_rb1->setReadOnly(true); - e1_le_rb1->setReadOnly(true); - - v0_le_rb2->setReadOnly(true); - v1_le_rb2->setReadOnly(true); - v2_le_rb2->setReadOnly(true); - v3_le_rb2->setReadOnly(true); - q0_le_rb2->setReadOnly(true); - q1_le_rb2->setReadOnly(true); + v0_le_rb0->setReadOnly(true); + v1_le_rb0->setReadOnly(true); + v0_le_rb1->setReadOnly(true); + v1_le_rb1->setReadOnly(true); + e0_le_rb1->setReadOnly(true); + e1_le_rb1->setReadOnly(true); + v0_le_rb2->setReadOnly(true); + v1_le_rb2->setReadOnly(true); + v2_le_rb2->setReadOnly(true); + v3_le_rb2->setReadOnly(true); + q0_le_rb2->setReadOnly(true); + q1_le_rb2->setReadOnly(true); } // ============================================================== clear void MergeDialog::clear() { - v0_le_rb0->clear(); - v1_le_rb0->clear(); - v0_le_rb1->clear(); - v1_le_rb1->clear(); - v0_le_rb2->clear(); - v1_le_rb2->clear(); - v2_le_rb2->clear(); - v3_le_rb2->clear(); - e0_le_rb1->clear(); - e1_le_rb1->clear(); - q0_le_rb2->clear(); - q1_le_rb2->clear(); + v0_le_rb0->clear(); + modelUnregister(v0_le_rb0); + + v1_le_rb0->clear(); + modelUnregister(v1_le_rb0); + + e0_le_rb1->clear(); + modelUnregister(e0_le_rb1); + + e1_le_rb1->clear(); + modelUnregister(e1_le_rb1); + + v0_le_rb1->clear(); + modelUnregister(v0_le_rb1); + + v1_le_rb1->clear(); + modelUnregister(v1_le_rb1); + + q0_le_rb2->clear(); + modelUnregister(q0_le_rb2); + + q1_le_rb2->clear(); + modelUnregister(q1_le_rb2); + + v0_le_rb2->clear(); + modelUnregister(v0_le_rb2); + + v1_le_rb2->clear(); + modelUnregister(v1_le_rb2); + + v2_le_rb2->clear(); + modelUnregister(v2_le_rb2); + + v3_le_rb2->clear(); + modelUnregister(v3_le_rb2); + + modelUnregister(this); } // ============================================================== updateHelpFileName void MergeDialog::updateHelpFileName() { - if ( sender() == rb0 ){ - _helpFileName = "gui_merge_elmts.html#merge-2-vertices"; - } else if ( sender() == rb1 ){ - _helpFileName = "gui_merge_elmts.html#merge-2-edges"; - } else if ( sender() == rb2 ){ - _helpFileName = "gui_merge_elmts.html#merge-2-quadrangles"; - } + if ( sender() == rb0 ){ + _helpFileName = "gui_merge_elmts.html#merge-two-vertices"; + } else if ( sender() == rb1 ){ + _helpFileName = "gui_merge_elmts.html#merge-two-edges"; + } else if ( sender() == rb2 ){ + _helpFileName = "gui_merge_elmts.html#merge-two-quadrangles"; + } } // ============================================================== apply bool MergeDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - if ( !_patternDataSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return false; - - bool merged = false; - - if ( rb0->isChecked() ){ - QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb0] ); - QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb0] ); - - if ( iv0.isValid() - && iv1.isValid() ){ - merged = _documentModel->mergeVertices( iv0, iv1 ); - } - } else if ( rb1->isChecked() ){ - QModelIndex ie0 = patternDataModel->mapToSource( _index[e0_le_rb1] ); - QModelIndex ie1 = patternDataModel->mapToSource( _index[e1_le_rb1] ); - QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb1] ); - QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb1] ); - - if ( ie0.isValid() - && ie1.isValid() - && iv0.isValid() - && iv1.isValid() ){ - merged = _documentModel->mergeEdges( ie0, ie1, iv0, iv1); - } - } else if ( rb2->isChecked() ){ - - QModelIndex iq0 = patternDataModel->mapToSource( _index[q0_le_rb2] ); - QModelIndex iq1 = patternDataModel->mapToSource( _index[q1_le_rb2] ); - QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb2] ); - QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb2] ); - QModelIndex iv2 = patternDataModel->mapToSource( _index[v2_le_rb2] ); - QModelIndex iv3 = patternDataModel->mapToSource( _index[v3_le_rb2] ); - - if ( iq0.isValid() - && iq1.isValid() - && iv0.isValid() - && iv1.isValid() - && iv2.isValid() - && iv3.isValid() ){ - merged = _documentModel->mergeQuads( iq0, iq1, - iv0, iv1, iv2, iv3 ); - } - } - - if ( merged == false ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MERGE" ) ); - return false; - } - - return true; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + if (getDocumentModel() == NULL) return false; + SUIT_OverrideCursor wc; + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return false; + + bool merged = false; + + if ( rb0->isChecked() ){ + QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb0] ); + QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb0] ); + + if ( iv0.isValid() + && iv1.isValid() ){ + merged = getDocumentModel()->mergeVertices( iv0, iv1 ); + } + } else if ( rb1->isChecked() ){ + QModelIndex ie0 = patternDataModel->mapToSource( _index[e0_le_rb1] ); + QModelIndex ie1 = patternDataModel->mapToSource( _index[e1_le_rb1] ); + QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb1] ); + QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb1] ); + + if ( ie0.isValid() + && ie1.isValid() + && iv0.isValid() + && iv1.isValid() ){ + merged = getDocumentModel()->mergeEdges( ie0, ie1, iv0, iv1); + } + } else if ( rb2->isChecked() ){ + + QModelIndex iq0 = patternDataModel->mapToSource( _index[q0_le_rb2] ); + QModelIndex iq1 = patternDataModel->mapToSource( _index[q1_le_rb2] ); + QModelIndex iv0 = patternDataModel->mapToSource( _index[v0_le_rb2] ); + QModelIndex iv1 = patternDataModel->mapToSource( _index[v1_le_rb2] ); + QModelIndex iv2 = patternDataModel->mapToSource( _index[v2_le_rb2] ); + QModelIndex iv3 = patternDataModel->mapToSource( _index[v3_le_rb2] ); + + if ( iq0.isValid() + && iq1.isValid() + && iv0.isValid() + && iv1.isValid() + && iv2.isValid() + && iv3.isValid() ){ + merged = getDocumentModel()->mergeQuads( iq0, iq1, + iv0, iv1, iv2, iv3 ); + } + } + + if ( merged == false ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MERGE" ) ); + return false; + } + + return true; } @@ -3548,21 +3745,33 @@ bool MergeDialog::apply(QModelIndex& result) DisconnectDialog::DisconnectDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - setupUi( this ); - _initWidget(editmode); -// rb0->setFocusProxy( v_le_rb0 ); -// rb1->setFocusProxy( e_le_rb1 ); -// rb2->setFocusProxy( q_le_rb2 ); -// rb3->setFocusProxy( d_edges_lw); - rb0->click(); - // setFocusProxy( rb0 ); + setupUi( this ); + _initWidget(editmode); + // rb0->setFocusProxy( v_le_rb0 ); + // rb1->setFocusProxy( e_le_rb1 ); + // rb2->setFocusProxy( q_le_rb2 ); + // rb3->setFocusProxy( d_edges_lw); + rb0->click(); + // setFocusProxy( rb0 ); + + _helpFileName = "gui_disc_elmts.html#disconnect-a-vertex"; - _helpFileName = "gui_disc_elmts.html#disconnect-a-vertex"; + connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb0, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb0, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + + connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + + connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); + + connect( rb3, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb3, SIGNAL(clicked()), this, SLOT(clearVTKSelection()) ); + connect( rb3, SIGNAL(clicked()), this, SLOT(clearCurrentObjectFocus()) ); - connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb3, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); } // ============================================================== Destructeur @@ -3573,179 +3782,231 @@ DisconnectDialog::~DisconnectDialog() // ============================================================== _initInputWidget void DisconnectDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); - - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); - - //vertex - v_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - h_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); - v_le_rb0->setValidator( validator ); - h_le_rb0->setValidator( validator ); - v_le_rb0->installEventFilter(this); - h_le_rb0->installEventFilter(this); - - //edge - e_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - h_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); - e_le_rb1->setValidator( validator ); - h_le_rb1->setValidator( validator ); - e_le_rb1->installEventFilter(this); - h_le_rb1->installEventFilter(this); - - //quad - q_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - h_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); - q_le_rb2->setValidator( validator ); - h_le_rb2->setValidator( validator ); - q_le_rb2->installEventFilter(this); - h_le_rb2->installEventFilter(this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); + +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); + + //vertex + v_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + h_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); + v_le_rb0->setValidator( validator ); + h_le_rb0->setValidator( validator ); + v_le_rb0->installEventFilter(this); + h_le_rb0->installEventFilter(this); + + //edge + e_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + h_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); + e_le_rb1->setValidator( validator ); + h_le_rb1->setValidator( validator ); + e_le_rb1->installEventFilter(this); + h_le_rb1->installEventFilter(this); + + //quad + q_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + h_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); + q_le_rb2->setValidator( validator ); + h_le_rb2->setValidator( validator ); + q_le_rb2->installEventFilter(this); + h_le_rb2->installEventFilter(this); + + //edges + d_edges_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + hexas_lw->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); + d_edges_lw->installEventFilter(this); + hexas_lw->installEventFilter(this); + + QShortcut* delEdgeShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X/*Qt::Key_Alt*//*Qt::Key_Space*/), d_edges_lw); + QShortcut* delHexaShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X/*Qt::Key_Alt*//*Qt::Key_Space*/), hexas_lw); + delEdgeShortcut->setContext( Qt::WidgetShortcut ); + delHexaShortcut->setContext( Qt::WidgetShortcut ); + + v_le_rb0->setReadOnly(true); + h_le_rb0->setReadOnly(true); + + e_le_rb1->setReadOnly(true); + h_le_rb1->setReadOnly(true); + + q_le_rb2->setReadOnly(true); + h_le_rb2->setReadOnly(true); + + connect( d_edges_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection ); + connect( hexas_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection ); + connect( delEdgeShortcut, SIGNAL(activated()), this, SLOT(deleteEdgeItem()) ); + connect( delHexaShortcut, SIGNAL(activated()), this, SLOT(deleteHexaItem()) ); + autoFocusSwitch = false; + +} + +// =============================================== getAssocsVTK +/* + * Returns elements in the list + */ +QModelIndexList DisconnectDialog::getAssocsVTK() +{ + QModelIndexList iElts; + QModelIndex index; + QListWidgetItem* item = NULL; + + const PatternDataModel* patternDataModel = getPatternDataModel(); + if (patternDataModel == NULL) return iElts; + if (rb3->isChecked()) + { + //ListWidget content + if (HEXABLOCKGUI::currentDocGView->getSelectionMode() == EDGE_TREE) + { + for ( int r = 0; r < d_edges_lw->count(); ++r ) + { + item = d_edges_lw->item(r); + index = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( index.isValid() ) + iElts << index; + } + } + else if (HEXABLOCKGUI::currentDocGView->getSelectionMode() == HEXA_TREE) + { + for ( int r = 0; r < hexas_lw->count(); ++r ) + { + item = hexas_lw->item(r); + index = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( index.isValid() ) + iElts << index; + } + } + return iElts; + } + else + return iElts; +} - //edges - d_edges_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - hexas_lw->setProperty( "HexaWidgetType", QVariant::fromValue(HEXA_TREE) ); - d_edges_lw->installEventFilter(this); - hexas_lw->installEventFilter(this); +// ============================================================== clear +void DisconnectDialog::clear() +{ + v_le_rb0->clear(); + modelUnregister(v_le_rb0); - QShortcut* delEdgeShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X/*Qt::Key_Alt*//*Qt::Key_Space*/), d_edges_lw); - QShortcut* delHexaShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X/*Qt::Key_Alt*//*Qt::Key_Space*/), hexas_lw); - delEdgeShortcut->setContext( Qt::WidgetShortcut ); - delHexaShortcut->setContext( Qt::WidgetShortcut ); + h_le_rb0->clear(); + modelUnregister(h_le_rb0); - v_le_rb0->setReadOnly(true); - h_le_rb0->setReadOnly(true); + e_le_rb1->clear(); + modelUnregister(e_le_rb1); - e_le_rb1->setReadOnly(true); - h_le_rb1->setReadOnly(true); + h_le_rb1->clear(); + modelUnregister(h_le_rb1); - q_le_rb2->setReadOnly(true); - h_le_rb2->setReadOnly(true); + d_edges_lw->clear(); + modelUnregister(d_edges_lw); - connect( d_edges_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()) ); - connect( hexas_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()) ); - connect( delEdgeShortcut, SIGNAL(activated()), this, SLOT(deleteEdgeItem()) ); - connect( delHexaShortcut, SIGNAL(activated()), this, SLOT(deleteHexaItem()) ); + hexas_lw->clear(); + modelUnregister(hexas_lw); -} + q_le_rb2->clear(); + modelUnregister(q_le_rb2); + h_le_rb2->clear(); + modelUnregister(h_le_rb2); -// ============================================================== clear -void DisconnectDialog::clear() -{ - v_le_rb0->clear(); - e_le_rb1->clear(); - q_le_rb2->clear(); - h_le_rb0->clear(); - h_le_rb1->clear(); - h_le_rb2->clear(); - d_edges_lw->clear(); - hexas_lw->clear(); + modelUnregister(this); } // ============================================================== deleteEdgeItem void DisconnectDialog::deleteEdgeItem() { - delete d_edges_lw->currentItem(); + delete d_edges_lw->currentItem(); } // ============================================================== deleteHexaItem void DisconnectDialog::deleteHexaItem() { - delete hexas_lw->currentItem(); + delete hexas_lw->currentItem(); } - // ============================================================== updateHelpFileName void DisconnectDialog::updateHelpFileName() { - if ( sender() == rb0 ){ - _helpFileName = "gui_disc_elmts.html#disconnect-a-vertex"; - } else if ( sender() == rb1 ){ - _helpFileName = "gui_disc_elmts.html#disconnect-an-edge"; - } else if ( sender() == rb2 ){ - _helpFileName = "gui_disc_elmts.html#disconnect-a-quadrangle"; - } else if (sender() == rb3 ){ - _helpFileName = "gui_disc_elmts.html#disconnect-edges"; - } + if ( sender() == rb0 ){ + _helpFileName = "gui_disc_elmts.html#disconnect-a-vertex"; + } else if ( sender() == rb1 ){ + _helpFileName = "gui_disc_elmts.html#disconnect-an-edge"; + } else if ( sender() == rb2 ){ + _helpFileName = "gui_disc_elmts.html#disconnect-a-quadrangle"; + } else if (sender() == rb3 ){ + _helpFileName = "gui_disc_elmts.html#disconnect-edges"; + } } - // ============================================================== apply bool DisconnectDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + if (getDocumentModel() == NULL) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - QModelIndex iElts; + SUIT_OverrideCursor wc; + QModelIndex iElts; - if ( rb0->isChecked() ){ - QModelIndex ihexa = patternDataModel->mapToSource( _index[h_le_rb0] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[v_le_rb0] ); + if ( rb0->isChecked() ){ + QModelIndex ihexa = patternDataModel->mapToSource( _index[h_le_rb0] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[v_le_rb0] ); - if ( ihexa.isValid() - && ivex.isValid() ){ - iElts = _documentModel->disconnectVertex( ihexa, ivex ); - } - } else if ( rb1->isChecked() ){ - QModelIndex ihexa = patternDataModel->mapToSource( _index[h_le_rb1] ); - QModelIndex iedge = patternDataModel->mapToSource( _index[e_le_rb1] ); + if ( ihexa.isValid() + && ivex.isValid() ){ + iElts = getDocumentModel()->disconnectVertex( ihexa, ivex ); + } + } else if ( rb1->isChecked() ){ + QModelIndex ihexa = patternDataModel->mapToSource( _index[h_le_rb1] ); + QModelIndex iedge = patternDataModel->mapToSource( _index[e_le_rb1] ); - if ( ihexa.isValid() - && iedge.isValid() ){ - iElts = _documentModel->disconnectEdge( ihexa, iedge ); - } - } else if ( rb2->isChecked() ){ - QModelIndex ihexa = patternDataModel->mapToSource( _index[h_le_rb2] ); - QModelIndex iquad = patternDataModel->mapToSource( _index[q_le_rb2] ); + if ( ihexa.isValid() + && iedge.isValid() ){ + iElts = getDocumentModel()->disconnectEdge( ihexa, iedge ); + } + } else if ( rb2->isChecked() ){ + QModelIndex ihexa = patternDataModel->mapToSource( _index[h_le_rb2] ); + QModelIndex iquad = patternDataModel->mapToSource( _index[q_le_rb2] ); - if ( ihexa.isValid() - && iquad.isValid() ){ - iElts = _documentModel->disconnectQuad( ihexa, iquad ); - } - } else if ( rb3->isChecked() ){ // + if ( ihexa.isValid() + && iquad.isValid() ){ + iElts = getDocumentModel()->disconnectQuad( ihexa, iquad ); + } + } else if ( rb3->isChecked() ){ // - QModelIndex iedge, ihexa; - QModelIndexList iedges, ihexas; - QListWidgetItem* item = NULL; + QModelIndex iedge, ihexa; + QModelIndexList iedges, ihexas; + QListWidgetItem* item = NULL; - //Liste des edges - for (int r = 0; r < d_edges_lw->count(); ++r){ - item = d_edges_lw->item(r); - iedge = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iedge.isValid() ) - iedges << iedge; - } + //Liste des edges + for (int r = 0; r < d_edges_lw->count(); ++r){ + item = d_edges_lw->item(r); + iedge = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iedge.isValid() ) + iedges << iedge; + } - //Liste des hexas - for (int r = 0; r < hexas_lw->count(); ++r){ - item = hexas_lw->item(r); - ihexa = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( ihexa.isValid() ) - ihexas << ihexa; - } + //Liste des hexas + for (int r = 0; r < hexas_lw->count(); ++r){ + item = hexas_lw->item(r); + ihexa = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( ihexa.isValid() ) + ihexas << ihexa; + } - iElts = _documentModel->disconnectEdges( ihexas, iedges ); - } + iElts = getDocumentModel()->disconnectEdges( ihexas, iedges ); + } - if ( !iElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT DISCONNECT" ) ); - return false; - } + if ( !iElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT DISCONNECT" ) ); + return false; + } - result = patternBuilderModel->mapFromSource(iElts); + result = patternBuilderModel->mapFromSource(iElts); - return true; + return true; } @@ -3756,12 +4017,12 @@ bool DisconnectDialog::apply(QModelIndex& result) // ============================================================== Constructeur CutEdgeDialog::CutEdgeDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f) + HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_cut_hexa.html"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( e_le ); + _helpFileName = "gui_cut_hexa.html"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( e_le ); } // ============================================================== Destructeur @@ -3772,57 +4033,66 @@ CutEdgeDialog::~CutEdgeDialog() // ============================================================== _initInputWidget void CutEdgeDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - e_le->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - e_le->setValidator( validator ); - e_le->installEventFilter(this); + e_le->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + e_le->setValidator( validator ); + e_le->installEventFilter(this); - e_le->setReadOnly(true); + e_le->setReadOnly(true); } // ============================================================== clear void CutEdgeDialog::clear() { - e_le->clear(); + e_le->clear(); + modelUnregister(e_le); + + modelUnregister(this); } // ============================================================== apply bool CutEdgeDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + int nbCut = nb_cut_spb->value(); + QModelIndex iedge = patternDataModel->mapToSource( _index[e_le] ); - int nbCut = nb_cut_spb->value(); - QModelIndex iedge = patternDataModel->mapToSource( _index[e_le] ); + QModelIndex iElts; + if ( iedge.isValid() ){ + iElts = getDocumentModel()->cutEdge( iedge, nbCut ); + } - QModelIndex iElts; - if ( iedge.isValid() ){ - iElts = _documentModel->cutEdge( iedge, nbCut ); - } + if ( !iElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT CUT EDGE" ) ); + return false; + } - if ( !iElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT CUT EDGE" ) ); - return false; - } + result = patternBuilderModel->mapFromSource(iElts); - result = patternBuilderModel->mapFromSource(iElts); + //Update the line edit + QVariant invalid; + e_le->setProperty("QModelIndex", invalid ); - return true; + QModelIndex invalidIndex; + _index[e_le] = invalidIndex; + + clear(); + + return true; } // // ------------------------- MakeTransformationDialog ---------------------------------- @@ -3832,18 +4102,18 @@ bool CutEdgeDialog::apply(QModelIndex& result) MakeTransformationDialog::MakeTransformationDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - setupUi( this ); - _initWidget(editmode); -// rb0->setFocusProxy( elts_le_rb0 ); -// rb1->setFocusProxy( elts_le_rb1 ); -// rb2->setFocusProxy( elts_le_rb2 ); -// setFocusProxy( rb0 ); - rb0->click(); + setupUi( this ); + _initWidget(editmode); + // rb0->setFocusProxy( elts_le_rb0 ); + // rb1->setFocusProxy( elts_le_rb1 ); + // rb2->setFocusProxy( elts_le_rb2 ); + // setFocusProxy( rb0 ); + rb0->click(); - _helpFileName = "gui_make_elmts.html#make-elements-by-translation"; - connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + _helpFileName = "gui_make_elmts.html#make-elements-by-translation"; + connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); } // ============================================================== Destructeur @@ -3854,127 +4124,140 @@ MakeTransformationDialog::~MakeTransformationDialog() // ============================================================== _initInputWidget void MakeTransformationDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - vec_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vec_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vec_le_rb0->setValidator( validator ); - elts_le_rb0->setValidator( validator ); - vec_le_rb0->installEventFilter(this); - elts_le_rb0->installEventFilter(this); + vec_le_rb0->setValidator( validator ); + elts_le_rb0->setValidator( validator ); + vec_le_rb0->installEventFilter(this); + elts_le_rb0->installEventFilter(this); - vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - elts_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb1->setValidator( validator ); - elts_le_rb1->setValidator( validator ); - vex_le_rb1->installEventFilter(this); - elts_le_rb1->installEventFilter(this); + vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + elts_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb1->setValidator( validator ); + elts_le_rb1->setValidator( validator ); + vex_le_rb1->installEventFilter(this); + elts_le_rb1->installEventFilter(this); - vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - elts_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb2->setValidator( validator ); - vec_le_rb2->setValidator( validator ); - elts_le_rb2->setValidator( validator ); - vex_le_rb2->installEventFilter(this); - vec_le_rb2->installEventFilter(this); - elts_le_rb2->installEventFilter(this); + vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + elts_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb2->setValidator( validator ); + vec_le_rb2->setValidator( validator ); + elts_le_rb2->setValidator( validator ); + vex_le_rb2->installEventFilter(this); + vec_le_rb2->installEventFilter(this); + elts_le_rb2->installEventFilter(this); - vec_le_rb0->setReadOnly(true); - elts_le_rb0->setReadOnly(true); + vec_le_rb0->setReadOnly(true); + elts_le_rb0->setReadOnly(true); - vex_le_rb1->setReadOnly(true); - elts_le_rb1->setReadOnly(true); + vex_le_rb1->setReadOnly(true); + elts_le_rb1->setReadOnly(true); - vex_le_rb2->setReadOnly(true); - vec_le_rb2->setReadOnly(true); - elts_le_rb2->setReadOnly(true); + vex_le_rb2->setReadOnly(true); + vec_le_rb2->setReadOnly(true); + elts_le_rb2->setReadOnly(true); } // ============================================================== clear void MakeTransformationDialog::clear() { - vex_le_rb1->clear(); - vex_le_rb2->clear(); - vec_le_rb0->clear(); - vec_le_rb2->clear(); - elts_le_rb0->clear(); - elts_le_rb1->clear(); - elts_le_rb2->clear(); + elts_le_rb0->clear(); + modelUnregister(elts_le_rb0); + + vec_le_rb0->clear(); + modelUnregister(vec_le_rb0); + + elts_le_rb1->clear(); + modelUnregister(elts_le_rb1); + + vex_le_rb1->clear(); + modelUnregister(vex_le_rb1); + + elts_le_rb2->clear(); + modelUnregister(elts_le_rb2); + + vex_le_rb2->clear(); + modelUnregister(vex_le_rb2); + + vec_le_rb2->clear(); + modelUnregister(vec_le_rb2); + + modelUnregister(this); } // ============================================================== updateHelpFileName void MakeTransformationDialog::updateHelpFileName() { - if ( sender() == rb0 ){ - _helpFileName = "gui_make_elmts.html#make-elements-by-translation"; - } else if ( sender() == rb1 ){ - _helpFileName = "gui_make_elmts.html#make-elements-by-scaling"; - } else if ( sender() == rb2 ){ - _helpFileName = "gui_make_elmts.html#make-elements-by-rotation"; - } + if ( sender() == rb0 ){ + _helpFileName = "gui_make_elmts.html#make-elements-by-translation"; + } else if ( sender() == rb1 ){ + _helpFileName = "gui_make_elmts.html#make-elements-by-scaling"; + } else if ( sender() == rb2 ){ + _helpFileName = "gui_make_elmts.html#make-elements-by-rotation"; + } } // ============================================================== apply bool MakeTransformationDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if (getDocumentModel() == NULL) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - QModelIndex iNewElts; + QModelIndex iNewElts; - if ( rb0->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); + if ( rb0->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); - if ( ielts.isValid() - && ivec.isValid() ) - iNewElts = _documentModel->makeTranslation( ielts, ivec ); + if ( ielts.isValid() + && ivec.isValid() ) + iNewElts = getDocumentModel()->makeTranslation( ielts, ivec ); - } else if ( rb1->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); - double k = k_spb->value(); + } else if ( rb1->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); + double k = k_spb->value(); - if ( ielts.isValid() - && ivex.isValid() ) - iNewElts = _documentModel->makeScale( ielts, ivex, k ); + if ( ielts.isValid() + && ivex.isValid() ) + iNewElts = getDocumentModel()->makeScale( ielts, ivex, k ); - } else if ( rb2->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); - double angle = angle_spb->value(); + } else if ( rb2->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + double angle = angle_spb->value(); - if ( ielts.isValid() - && ivex.isValid() - && ivec.isValid() ) - iNewElts = _documentModel->makeRotation( ielts, ivex, ivec, angle ); - } + if ( ielts.isValid() + && ivex.isValid() + && ivec.isValid() ) + iNewElts = getDocumentModel()->makeRotation( ielts, ivex, ivec, angle ); + } - if ( !iNewElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE TRANSFORMATION" ) ); - return false; - } + if ( !iNewElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE TRANSFORMATION" ) ); + return false; + } - result = patternBuilderModel->mapFromSource(iNewElts); + result = patternBuilderModel->mapFromSource(iNewElts); - return true; + return true; } // // ------------------------- MakeSymmetryDialog ---------------------------------- @@ -3982,20 +4265,20 @@ bool MakeTransformationDialog::apply(QModelIndex& result) // ============================================================== Constructeur MakeSymmetryDialog::MakeSymmetryDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f) + HexaBaseDialog(parent, editmode, f) { - setupUi( this ); - _initWidget(editmode); -// rb0->setFocusProxy( elts_le_rb0 ); -// rb1->setFocusProxy( elts_le_rb1 ); -// rb2->setFocusProxy( elts_le_rb2 ); - rb0->click(); - // setFocusProxy( rb0 ); + setupUi( this ); + _initWidget(editmode); + // rb0->setFocusProxy( elts_le_rb0 ); + // rb1->setFocusProxy( elts_le_rb1 ); + // rb2->setFocusProxy( elts_le_rb2 ); + rb0->click(); + // setFocusProxy( rb0 ); - _helpFileName = "gui_make_symmetry.html#make-elements-by-point-symmetry"; - connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + _helpFileName = "gui_make_symmetry.html#make-elements-by-point-symmetry"; + connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); } // ============================================================== Destructeur @@ -4006,151 +4289,163 @@ MakeSymmetryDialog::~MakeSymmetryDialog() // ============================================================== _initInputWidget void MakeSymmetryDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); - - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); - - vex_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb0->setValidator( validator ); - elts_le_rb0->setValidator( validator ); - vex_le_rb0->installEventFilter(this); - elts_le_rb0->installEventFilter(this); - - vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - elts_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb1->setValidator( validator ); - vec_le_rb1->setValidator( validator ); - elts_le_rb1->setValidator( validator ); - vex_le_rb1->installEventFilter(this); - vec_le_rb1->installEventFilter(this); - elts_le_rb1->installEventFilter(this); - - - vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - elts_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb2->setValidator( validator ); - vec_le_rb2->setValidator( validator ); - elts_le_rb2->setValidator( validator ); - vex_le_rb2->installEventFilter(this); - vec_le_rb2->installEventFilter(this); - elts_le_rb2->installEventFilter(this); - - vex_le_rb0->setReadOnly(true); - elts_le_rb0->setReadOnly(true); - vex_le_rb1->setReadOnly(true); - vec_le_rb1->setReadOnly(true); - elts_le_rb1->setReadOnly(true); - vex_le_rb2->setReadOnly(true); - vec_le_rb2->setReadOnly(true); - elts_le_rb2->setReadOnly(true); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); + +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); + + vex_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb0->setValidator( validator ); + elts_le_rb0->setValidator( validator ); + vex_le_rb0->installEventFilter(this); + elts_le_rb0->installEventFilter(this); + + vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + elts_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb1->setValidator( validator ); + vec_le_rb1->setValidator( validator ); + elts_le_rb1->setValidator( validator ); + vex_le_rb1->installEventFilter(this); + vec_le_rb1->installEventFilter(this); + elts_le_rb1->installEventFilter(this); + + + vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + elts_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb2->setValidator( validator ); + vec_le_rb2->setValidator( validator ); + elts_le_rb2->setValidator( validator ); + vex_le_rb2->installEventFilter(this); + vec_le_rb2->installEventFilter(this); + elts_le_rb2->installEventFilter(this); + + vex_le_rb0->setReadOnly(true); + elts_le_rb0->setReadOnly(true); + vex_le_rb1->setReadOnly(true); + vec_le_rb1->setReadOnly(true); + elts_le_rb1->setReadOnly(true); + vex_le_rb2->setReadOnly(true); + vec_le_rb2->setReadOnly(true); + elts_le_rb2->setReadOnly(true); } // ============================================================== clear void MakeSymmetryDialog::clear() { - vex_le_rb0->clear(); - vex_le_rb1->clear(); - vex_le_rb2->clear(); + elts_le_rb0->clear(); + modelUnregister(elts_le_rb0); + + vex_le_rb0->clear(); + modelUnregister(vex_le_rb0); + + elts_le_rb1->clear(); + modelUnregister(elts_le_rb1); + + vex_le_rb1->clear(); + modelUnregister(vex_le_rb1); - vec_le_rb1->clear(); - vec_le_rb2->clear(); + vec_le_rb1->clear(); + modelUnregister(vec_le_rb1); - elts_le_rb0->clear(); - elts_le_rb1->clear(); - elts_le_rb2->clear(); + elts_le_rb2->clear(); + modelUnregister(elts_le_rb2); + + vex_le_rb2->clear(); + modelUnregister(vex_le_rb2); + + vec_le_rb2->clear(); + modelUnregister(vec_le_rb2); + + modelUnregister(this); } // ============================================================== updateHelpFileName void MakeSymmetryDialog::updateHelpFileName() { - if ( sender() == rb0 ){ - _helpFileName = "gui_make_symmetry.html#make-elements-by-point-symmetry"; - } else if ( sender() == rb1 ){ - _helpFileName = "gui_make_symmetry.html#make-elements-by-line-symmetry"; - } else if ( sender() == rb2 ){ - _helpFileName = "gui_make_symmetry.html#make-elements-by-plan-symmetry"; - } + if ( sender() == rb0 ){ + _helpFileName = "gui_make_symmetry.html#make-elements-by-point-symmetry"; + } else if ( sender() == rb1 ){ + _helpFileName = "gui_make_symmetry.html#make-elements-by-line-symmetry"; + } else if ( sender() == rb2 ){ + _helpFileName = "gui_make_symmetry.html#make-elements-by-plane-symmetry"; + } } // ============================================================== apply bool MakeSymmetryDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + if (getDocumentModel() == NULL) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - SUIT_OverrideCursor wc; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + QModelIndex iNewElts; - QModelIndex iNewElts; + if ( rb0->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb0] ); - if ( rb0->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb0] ); + if ( ielts.isValid() + && ivex.isValid() ) + iNewElts = getDocumentModel()->makeSymmetryPoint( ielts, ivex ); - if ( ielts.isValid() - && ivex.isValid() ) - iNewElts = _documentModel->makeSymmetryPoint( ielts, ivex ); + } else if ( rb1->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); - } else if ( rb1->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); + if ( ielts.isValid() + && ivex.isValid() + && ivec.isValid() ) + iNewElts = getDocumentModel()->makeSymmetryLine( ielts, ivex, ivec ); - if ( ielts.isValid() - && ivex.isValid() - && ivec.isValid() ) - iNewElts = _documentModel->makeSymmetryLine( ielts, ivex, ivec ); + } else if ( rb2->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); - } else if ( rb2->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + if ( ielts.isValid() + && ivex.isValid() + && ivec.isValid() ) + iNewElts = getDocumentModel()->makeSymmetryPlane( ielts, ivex, ivec ); + } - if ( ielts.isValid() - && ivex.isValid() - && ivec.isValid() ) - iNewElts = _documentModel->makeSymmetryPlane( ielts, ivex, ivec ); - } + if ( !iNewElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE TRANSFORMATION" ) ); + return false; + } - if ( !iNewElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE TRANSFORMATION" ) ); - return false; - } + result = patternBuilderModel->mapFromSource(iNewElts); - result = patternBuilderModel->mapFromSource(iNewElts); - - return true; + return true; } // // ------------------------- PerformTransformationDialog ---------------------------------- // ============================================================== Constructeur PerformTransformationDialog::PerformTransformationDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f) + HexaBaseDialog(parent, editmode, f) { - setupUi( this ); - _initWidget(editmode); -// rb0->setFocusProxy( elts_le_rb0 ); -// rb1->setFocusProxy( elts_le_rb1 ); -// rb2->setFocusProxy( elts_le_rb2 ); - // setFocusProxy( rb0 ); - rb0->click(); + setupUi( this ); + _initWidget(editmode); + // rb0->setFocusProxy( elts_le_rb0 ); + // rb1->setFocusProxy( elts_le_rb1 ); + // rb2->setFocusProxy( elts_le_rb2 ); + // setFocusProxy( rb0 ); + rb0->click(); - _helpFileName = "gui_modify_elmts.html#modify-elements-by-translation"; - connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + _helpFileName = "gui_modify_elmts.html#modify-elements-by-translation"; + connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); } // ============================================================== Destructeur @@ -4161,117 +4456,134 @@ PerformTransformationDialog::~PerformTransformationDialog() // ============================================================== _initInputWidget void PerformTransformationDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - vec_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vec_le_rb0->setValidator( validator ); - elts_le_rb0->setValidator( validator ); - vec_le_rb0->installEventFilter(this); - elts_le_rb0->installEventFilter(this); + vec_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vec_le_rb0->setValidator( validator ); + elts_le_rb0->setValidator( validator ); + vec_le_rb0->installEventFilter(this); + elts_le_rb0->installEventFilter(this); - vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - elts_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb1->setValidator( validator ); - elts_le_rb1->setValidator( validator ); - vex_le_rb1->installEventFilter(this); - elts_le_rb1->installEventFilter(this); + vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + elts_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb1->setValidator( validator ); + elts_le_rb1->setValidator( validator ); + vex_le_rb1->installEventFilter(this); + elts_le_rb1->installEventFilter(this); - vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - elts_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb2->setValidator( validator ); - vec_le_rb2->setValidator( validator ); - elts_le_rb2->setValidator( validator ); - vex_le_rb2->installEventFilter(this); - vec_le_rb2->installEventFilter(this); - elts_le_rb2->installEventFilter(this); + vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + elts_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb2->setValidator( validator ); + vec_le_rb2->setValidator( validator ); + elts_le_rb2->setValidator( validator ); + vex_le_rb2->installEventFilter(this); + vec_le_rb2->installEventFilter(this); + elts_le_rb2->installEventFilter(this); - vec_le_rb0->setReadOnly(true); - elts_le_rb0->setReadOnly(true); - vex_le_rb1->setReadOnly(true); - elts_le_rb1->setReadOnly(true); - vex_le_rb2->setReadOnly(true); - vec_le_rb2->setReadOnly(true); - elts_le_rb2->setReadOnly(true); + vec_le_rb0->setReadOnly(true); + elts_le_rb0->setReadOnly(true); + vex_le_rb1->setReadOnly(true); + elts_le_rb1->setReadOnly(true); + vex_le_rb2->setReadOnly(true); + vec_le_rb2->setReadOnly(true); + elts_le_rb2->setReadOnly(true); } // ============================================================== clear void PerformTransformationDialog::clear() { - vex_le_rb1->clear(); vex_le_rb2->clear(); - vec_le_rb0->clear(); vec_le_rb2->clear(); - elts_le_rb0->clear(); elts_le_rb1->clear(); elts_le_rb2->clear(); + vec_le_rb0->clear(); + modelUnregister(vec_le_rb0); + + elts_le_rb0->clear(); + modelUnregister(elts_le_rb0); + + vex_le_rb1->clear(); + modelUnregister(vex_le_rb1); + + elts_le_rb1->clear(); + modelUnregister(elts_le_rb1); + + vex_le_rb2->clear(); + modelUnregister(vex_le_rb2); + + vec_le_rb2->clear(); + modelUnregister(vec_le_rb2); + + elts_le_rb2->clear(); + modelUnregister(elts_le_rb2); + + modelUnregister(this); } // ============================================================== updateHelpFileName void PerformTransformationDialog::updateHelpFileName() { - if ( sender() == rb0 ){ - _helpFileName = "gui_modify_elmts.html#modify-elements-by-translation"; - } else if ( sender() == rb1 ){ - _helpFileName = "gui_modify_elmts.html#modify-elements-by-scaling"; - } else if ( sender() == rb2 ){ - _helpFileName = "gui_modify_elmts.html#modify-elements-by-rotation"; - } + if ( sender() == rb0 ){ + _helpFileName = "gui_modify_elmts.html#modify-elements-by-translation"; + } else if ( sender() == rb1 ){ + _helpFileName = "gui_modify_elmts.html#modify-elements-by-scaling"; + } else if ( sender() == rb2 ){ + _helpFileName = "gui_modify_elmts.html#modify-elements-by-rotation"; + } } // ============================================================== apply bool PerformTransformationDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if (getDocumentModel() == NULL) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - bool performed = false; + bool performed = false; - if ( rb0->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); + if ( rb0->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb0] ); - if ( ielts.isValid() - && ivec.isValid() ) - performed = _documentModel->performTranslation( ielts, ivec ); + if ( ielts.isValid() + && ivec.isValid() ) + performed = getDocumentModel()->performTranslation( ielts, ivec ); - } else if ( rb1->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); - double k = k_spb->value(); + } else if ( rb1->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); + double k = k_spb->value(); - if ( ielts.isValid() - && ivex.isValid() ) - performed = _documentModel->performScale( ielts, ivex, k ); + if ( ielts.isValid() + && ivex.isValid() ) + performed = getDocumentModel()->performScale( ielts, ivex, k ); - } else if ( rb2->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); - double angle = angle_spb->value(); + } else if ( rb2->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + double angle = angle_spb->value(); - if ( ielts.isValid() - && ivex.isValid() - && ivec.isValid() ) - performed = _documentModel->performRotation( ielts, ivex, ivec, angle ); - } + if ( ielts.isValid() + && ivex.isValid() + && ivec.isValid() ) + performed = getDocumentModel()->performRotation( ielts, ivex, ivec, angle ); + } - if ( performed == false){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT PERFORM TRANSFORMATION" ) ); - return false; - } + if ( performed == false){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT PERFORM TRANSFORMATION" ) ); + return false; + } - return true; + return true; } @@ -4282,18 +4594,18 @@ bool PerformTransformationDialog::apply(QModelIndex& result) PerformSymmetryDialog::PerformSymmetryDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f) { - setupUi( this ); - _initWidget( editmode ); -// rb0->setFocusProxy( elts_le_rb0 ); -// rb1->setFocusProxy( elts_le_rb1 ); -// rb2->setFocusProxy( elts_le_rb2 ); - // setFocusProxy( rb0 ); - rb0->click(); + setupUi( this ); + _initWidget( editmode ); + // rb0->setFocusProxy( elts_le_rb0 ); + // rb1->setFocusProxy( elts_le_rb1 ); + // rb2->setFocusProxy( elts_le_rb2 ); + // setFocusProxy( rb0 ); + rb0->click(); - _helpFileName = "gui_modify_symmetry.html#modify-elements-by-point-symmetry"; - connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); - connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + _helpFileName = "gui_modify_symmetry.html#modify-elements-by-point-symmetry"; + connect( rb0, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( rb2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); } // ============================================================== Destructeur @@ -4304,119 +4616,139 @@ PerformSymmetryDialog::~PerformSymmetryDialog() // ============================================================== _initInputWidget void PerformSymmetryDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); - - vex_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb0->setValidator( validator ); - elts_le_rb0->setValidator( validator ); - vex_le_rb0->installEventFilter(this); - elts_le_rb0->installEventFilter(this); - - vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - elts_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb1->setValidator( validator ); - vec_le_rb1->setValidator( validator ); - elts_le_rb1->setValidator( validator ); - vex_le_rb1->installEventFilter(this); - vec_le_rb1->installEventFilter(this); - elts_le_rb1->installEventFilter(this); - - - vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - vec_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - elts_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - vex_le_rb2->setValidator( validator ); - vec_le_rb2->setValidator( validator ); - elts_le_rb2->setValidator( validator ); - vex_le_rb2->installEventFilter(this); - vec_le_rb2->installEventFilter(this); - elts_le_rb2->installEventFilter(this); - - vex_le_rb0->setReadOnly(true); - elts_le_rb0->setReadOnly(true); - vex_le_rb1->setReadOnly(true); - vec_le_rb1->setReadOnly(true); - elts_le_rb1->setReadOnly(true); - vex_le_rb2->setReadOnly(true); - vec_le_rb2->setReadOnly(true); - elts_le_rb2->setReadOnly(true); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); + + vex_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + elts_le_rb0->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb0->setValidator( validator ); + elts_le_rb0->setValidator( validator ); + vex_le_rb0->installEventFilter(this); + elts_le_rb0->installEventFilter(this); + + vex_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + elts_le_rb1->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb1->setValidator( validator ); + vec_le_rb1->setValidator( validator ); + elts_le_rb1->setValidator( validator ); + vex_le_rb1->installEventFilter(this); + vec_le_rb1->installEventFilter(this); + elts_le_rb1->installEventFilter(this); + + + vex_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + vec_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + elts_le_rb2->setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + vex_le_rb2->setValidator( validator ); + vec_le_rb2->setValidator( validator ); + elts_le_rb2->setValidator( validator ); + vex_le_rb2->installEventFilter(this); + vec_le_rb2->installEventFilter(this); + elts_le_rb2->installEventFilter(this); + + vex_le_rb0->setReadOnly(true); + elts_le_rb0->setReadOnly(true); + vex_le_rb1->setReadOnly(true); + vec_le_rb1->setReadOnly(true); + elts_le_rb1->setReadOnly(true); + vex_le_rb2->setReadOnly(true); + vec_le_rb2->setReadOnly(true); + elts_le_rb2->setReadOnly(true); } // ============================================================== clear void PerformSymmetryDialog::clear() { - vex_le_rb0->clear(); vex_le_rb1->clear(); vex_le_rb2->clear(); - vec_le_rb1->clear(); vec_le_rb2->clear(); - elts_le_rb0->clear(); elts_le_rb1->clear(); elts_le_rb2->clear(); + vex_le_rb0->clear(); + modelUnregister(vex_le_rb0); + + elts_le_rb0->clear(); + modelUnregister(elts_le_rb0); + + elts_le_rb1->clear(); + modelUnregister(elts_le_rb1); + + vex_le_rb1->clear(); + modelUnregister(vex_le_rb1); + + vec_le_rb1->clear(); + modelUnregister(vec_le_rb1); + + elts_le_rb2->clear(); + modelUnregister(elts_le_rb2); + + vex_le_rb2->clear(); + modelUnregister(vex_le_rb2); + + vec_le_rb2->clear(); + modelUnregister(vec_le_rb2); + + modelUnregister(this); } // ============================================================== updateHelpFileName void PerformSymmetryDialog::updateHelpFileName() { - if ( sender() == rb0 ){ - _helpFileName = "gui_modify_symmetry.html#modify-elements-by-point-symmetry"; - } else if ( sender() == rb1 ){ - _helpFileName = "gui_modify_symmetry.html#modify-elements-by-line-symmetry"; - } else if ( sender() == rb2 ){ - _helpFileName = "gui_modify_symmetry.html#modify-elements-by-plan-symmetry"; - } + if ( sender() == rb0 ){ + _helpFileName = "gui_modify_symmetry.html#modify-elements-by-point-symmetry"; + } else if ( sender() == rb1 ){ + _helpFileName = "gui_modify_symmetry.html#modify-elements-by-line-symmetry"; + } else if ( sender() == rb2 ){ + _helpFileName = "gui_modify_symmetry.html#modify-elements-by-plane-symmetry"; + } } // ============================================================== apply bool PerformSymmetryDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - SUIT_OverrideCursor wc; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; + SUIT_OverrideCursor wc; + if (getDocumentModel() == NULL) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; - bool performed = false; + bool performed = false; - if ( rb0->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb0] ); + if ( rb0->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb0] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb0] ); - if ( ielts.isValid() - && ivex.isValid() ) - performed = _documentModel->performSymmetryPoint( ielts, ivex ); + if ( ielts.isValid() + && ivex.isValid() ) + performed = getDocumentModel()->performSymmetryPoint( ielts, ivex ); - } else if ( rb1->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); + } else if ( rb1->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb1] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb1] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb1] ); - if ( ielts.isValid() - && ivex.isValid() - && ivec.isValid() ) - performed = _documentModel->performSymmetryLine( ielts, ivex, ivec ); + if ( ielts.isValid() + && ivex.isValid() + && ivec.isValid() ) + performed = getDocumentModel()->performSymmetryLine( ielts, ivex, ivec ); - } else if ( rb2->isChecked() ){ - QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); - QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); - QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); + } else if ( rb2->isChecked() ){ + QModelIndex ielts = patternBuilderModel->mapToSource( _index[elts_le_rb2] ); + QModelIndex ivex = patternDataModel->mapToSource( _index[vex_le_rb2] ); + QModelIndex ivec = patternBuilderModel->mapToSource( _index[vec_le_rb2] ); - if ( ielts.isValid() - && ivex.isValid() - && ivec.isValid() ) - performed = _documentModel->performSymmetryPlane( ielts, ivex, ivec ); - } + if ( ielts.isValid() + && ivex.isValid() + && ivec.isValid() ) + performed = getDocumentModel()->performSymmetryPlane( ielts, ivex, ivec ); + } - if ( performed == false ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT PERFORM SYMMETRY" ) ); - return false; - } + if ( performed == false ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT PERFORM SYMMETRY" ) ); + return false; + } - return true; + return true; } @@ -4426,76 +4758,96 @@ bool PerformSymmetryDialog::apply(QModelIndex& result) // ============================================================== Constructeur EdgeAssocDialog::EdgeAssocDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog( parent, editmode, f ) + HexaBaseDialog( parent, editmode, f ) { - _helpFileName ="gui_asso_quad_to_geom.html#associate-to-edges-or-wires-of-the-geometry"; - setupUi( this ); - _initWidget(editmode); - _initViewManager(); -// setFocusProxy( edges_lw ); + _helpFileName ="gui_asso_quad_to_geom.html#one-edge"; + setupUi( this ); + _initWidget(editmode); + _initViewManager(); + // setFocusProxy( edges_lw ); - myLine.nullify(); + myLine = NULL; - _currentParameter = 0.; - single_rb->click(); + _currentParameter = 0.; + single_rb->click(); } // ============================================================== Destructeur EdgeAssocDialog::~EdgeAssocDialog() { - // disconnect( delEdgeShortcut, SIGNAL(activated()), this, SLOT(deleteEdgeItem()) ); - // disconnect( delLineShortcut, SIGNAL(activated()), this, SLOT(deleteLineItem()) ); - disconnect( HEXABLOCKGUI::selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(addLine()) ); - disconnect( pstart_spb, SIGNAL(valueChanged(double)), this, SLOT( pstartChanged(double)) ); - disconnect( pend_spb, SIGNAL(valueChanged(double)), this, SLOT( pendChanged(double)) ); + // disconnect( delEdgeShortcut, SIGNAL(activated()), this, SLOT(deleteEdgeItem()) ); + // disconnect( delLineShortcut, SIGNAL(activated()), this, SLOT(deleteLineItem()) ); + disconnect( HEXABLOCKGUI::selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(addLine()) ); + disconnect( pstart_spb, SIGNAL(valueChanged(double)), this, SLOT( pstartChanged(double)) ); + disconnect( pend_spb, SIGNAL(valueChanged(double)), this, SLOT( pendChanged(double)) ); } +// ============================================================== close +void EdgeAssocDialog::close() +{ + HEXABLOCKGUI::assocInProgress = false; + HexaBaseDialog::close(); +} // ============================================================== _initInputWidget void EdgeAssocDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); + + //model + first_vex_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + first_vex_le->installEventFilter(this); + first_vex_le->setValidator( validator ); - //model - first_vex_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - first_vex_le->installEventFilter(this); - first_vex_le->setValidator( validator ); + single_edge_le->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + single_edge_le->installEventFilter(this); - single_edge_le->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - single_edge_le->installEventFilter(this); + edges_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); + edges_lw->installEventFilter(this); - edges_lw->setProperty( "HexaWidgetType", QVariant::fromValue(EDGE_TREE) ); - edges_lw->installEventFilter(this); + //geom + lines_lw->setProperty("HexaWidgetType", QVariant::fromValue(GEOMEDGE_TREE) ); + lines_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + lines_lw->installEventFilter(this); - //geom - lines_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); - lines_lw->installEventFilter(this); + single_line_le->setProperty( "HexaWidgetType", QVariant::fromValue(GEOMEDGE_TREE) ); + single_line_le->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); + single_line_le->installEventFilter(this); - single_line_le->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_EDGE) ); - single_line_le->installEventFilter(this); + QShortcut* delEdgeShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X), edges_lw); + QShortcut* delLineShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X), lines_lw); + delLineShortcut->setContext( Qt::WidgetWithChildrenShortcut ); + delEdgeShortcut->setContext( Qt::WidgetWithChildrenShortcut ); - QShortcut* delEdgeShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X), edges_lw); - QShortcut* delLineShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X), lines_lw); - delLineShortcut->setContext( Qt::WidgetWithChildrenShortcut ); - delEdgeShortcut->setContext( Qt::WidgetWithChildrenShortcut ); + pend_spb->setValue(1.); - pend_spb->setValue(1.); + first_vex_le->setReadOnly(true); + single_edge_le->setReadOnly(true); + single_line_le->setReadOnly(true); - first_vex_le->setReadOnly(true); - single_edge_le->setReadOnly(true); - single_line_le->setReadOnly(true); + connect( delEdgeShortcut, SIGNAL(activated()), this, SLOT(deleteEdgeItem()) ); + connect( delLineShortcut, SIGNAL(activated()), this, SLOT(deleteLineItem()) ); + connect( pstart_spb, SIGNAL(valueChanged(double)), this, SLOT( pstartChanged(double)) ); + connect( pend_spb, SIGNAL(valueChanged(double)), this, SLOT( pendChanged(double)) ); + connect( edges_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection ); + connect( lines_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfGeom()), Qt::UniqueConnection ); + connect( single_rb, SIGNAL(clicked()), this, SLOT( refreshHighlight()), Qt::UniqueConnection ); + connect( multiple_rb, SIGNAL(clicked()), this, SLOT(refreshHighlight()), Qt::UniqueConnection ); + connect( single_rb, SIGNAL(clicked()), this, SLOT( updateHelpFileName() ) ); + connect( multiple_rb, SIGNAL(clicked()), this, SLOT( updateHelpFileName() ) ); +} - connect( delEdgeShortcut, SIGNAL(activated()), this, SLOT(deleteEdgeItem()) ); - connect( delLineShortcut, SIGNAL(activated()), this, SLOT(deleteLineItem()) ); - connect( pstart_spb, SIGNAL(valueChanged(double)), this, SLOT( pstartChanged(double)) ); - connect( pend_spb, SIGNAL(valueChanged(double)), this, SLOT( pendChanged(double)) ); - connect( edges_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()) ); - connect( lines_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfGeom()) ); - connect( single_rb, SIGNAL(clicked()), this, SLOT( highlightSelectedAssocs()) ); - connect( multiple_rb, SIGNAL(clicked()), this, SLOT(highlightSelectedAssocs()) ); +// ============================================================== updateHelpFileName +void EdgeAssocDialog::updateHelpFileName() +{ + if ( sender() == single_rb ){ + _helpFileName = "gui_asso_quad_to_geom.html#one-edge"; + } else if ( sender() == multiple_rb ){ + _helpFileName = "gui_asso_quad_to_geom.html#line"; + } } @@ -4505,33 +4857,32 @@ void EdgeAssocDialog::_initInputWidget( Mode editmode ) */ QModelIndexList EdgeAssocDialog::getAssocsVTK() { - QModelIndexList assocs; - QModelIndex iEdge; - QListWidgetItem* item = NULL; - - if (single_rb->isChecked()) - { - //LineEdit content - QVariant v = single_edge_le->property("QModelIndex"); - if ( !v.isValid() ) - return assocs; - assocs << v.value(); - return assocs; - } - else if (multiple_rb->isChecked()) - { - //ListWidget content - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return assocs; - for ( int r = 0; r < edges_lw->count(); ++r){ - item = edges_lw->item(r); - iEdge = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iEdge.isValid() ) - assocs << iEdge; - } - return assocs; - } - else return assocs; + QModelIndexList assocs; + QModelIndex iEdge; + QListWidgetItem* item = NULL; + + if (getPatternDataSelectionModel() == NULL) return assocs; + if (single_rb->isChecked()) + { + //LineEdit content + QVariant v = single_edge_le->property("QModelIndex"); + if ( !v.isValid() ) return assocs; + assocs << v.value(); + return assocs; + } + else if (multiple_rb->isChecked()) + { + //ListWidget content + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return assocs; + for ( int r = 0; r < edges_lw->count(); ++r){ + item = edges_lw->item(r); + iEdge = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iEdge.isValid() ) assocs << iEdge; + } + return assocs; + } + else return assocs; } // ============================================================== getAssocsGEOM @@ -4540,31 +4891,31 @@ QModelIndexList EdgeAssocDialog::getAssocsVTK() */ QMultiMap EdgeAssocDialog::getAssocsGEOM() { - QMultiMap assocs; - QListWidgetItem* item = NULL; - DocumentModel::GeomObj geomObj; - - if (single_rb->isChecked()) - { - //LineEdit content - QVariant v = single_line_le->property("GeomObj"); - if ( !v.isValid() ) return assocs; - geomObj = v.value(); - assocs.insert( geomObj.entry, geomObj.subid.toInt() ); - return assocs; - } - else if (multiple_rb->isChecked()) - { - //ListWidget content - unsigned int nbEdges = lines_lw->count(); - for ( int r = 0; r < nbEdges; ++r){ - item = lines_lw->item(r); - geomObj = item->data(LW_ASSOC_ROLE).value(); - assocs.insert( geomObj.entry, geomObj.subid.toInt() ); - } - return assocs; - } - else return assocs; + QMultiMap assocs; + QListWidgetItem* item = NULL; + DocumentModel::GeomObj geomObj; + + if (single_rb->isChecked()) + { + //LineEdit content + QVariant v = single_line_le->property("GeomObj"); + if ( !v.isValid() ) return assocs; + geomObj = v.value(); + assocs.insert( geomObj.shapeName, geomObj.subid.toInt() ); + return assocs; + } + else if (multiple_rb->isChecked()) + { + //ListWidget content + unsigned int nbEdges = lines_lw->count(); + for ( int r = 0; r < nbEdges; ++r){ + item = lines_lw->item(r); + geomObj = item->data(LW_ASSOC_ROLE).value(); + assocs.insert( geomObj.shapeName, geomObj.subid.toInt() ); + } + return assocs; + } + else return assocs; } // ============================================================== selectElementOfGeom @@ -4574,291 +4925,343 @@ QMultiMap EdgeAssocDialog::getAssocsGEOM() void EdgeAssocDialog::selectElementOfGeom() { - MESSAGE("HexaBaseDialog::selectElementOfGeom()"); - - QListWidget* currentListWidget = dynamic_cast( sender() ); - if ( !currentListWidget ) return; + QListWidget* currentListWidget = dynamic_cast( sender() ); + if ( !currentListWidget ) return; - _selectionMutex = true; + _selectionMutex = true; - QMultiMap geomElts; - DocumentModel::GeomObj geomObj; - QList sel = currentListWidget->selectedItems(); - foreach ( QListWidgetItem *item, sel ){ - geomObj = item->data(LW_ASSOC_ROLE).value(); - geomElts.insert( geomObj.entry, geomObj.subid.toInt() ); - } - _selectionMutex = false; + QMultiMap geomElts; + DocumentModel::GeomObj geomObj; + QList sel = currentListWidget->selectedItems(); + foreach ( QListWidgetItem *item, sel ){ + geomObj = item->data(LW_ASSOC_ROLE).value(); + geomElts.insert( geomObj.shapeName, geomObj.subid.toInt() ); + } + _selectionMutex = false; - //highlight geom selected elts - if (geomElts.size() > 0) _patternDataSelectionModel->_highlightGEOM(geomElts); + //highlight geom selected elts + if (geomElts.size() > 0 && getPatternDataSelectionModel() != NULL) + HEXABLOCKGUI::currentOccGView->highlight(geomElts); - MESSAGE("}"); } // ============================================================== clear void EdgeAssocDialog::clear() { - first_vex_le->clear(); - edges_lw->clear(); - lines_lw->clear(); - single_edge_le->setText(""); - single_line_le->setText(""); + first_vex_le->clear(); + modelUnregister(first_vex_le); + + edges_lw->clear(); + modelUnregister(edges_lw); + + lines_lw->clear(); + + single_edge_le->clear(); + modelUnregister(single_edge_le); + + single_line_le->clear(); + QVariant invalid; + single_line_le->setProperty("GeomObj", invalid); + + modelUnregister(this); + +// single_edge_le->setText(""); +// single_line_le->setText(""); } // ============================================================== deleteEdgeItem void EdgeAssocDialog::deleteEdgeItem() { - delete edges_lw->currentItem(); + delete edges_lw->currentItem(); } // ============================================================== deleteLineItem void EdgeAssocDialog::deleteLineItem() { - delete lines_lw->currentItem(); + delete lines_lw->currentItem(); } // ============================================================== setGeomEngine void EdgeAssocDialog::setGeomEngine( GEOM::GEOM_Gen_var geomEngine ) { - _geomEngine = geomEngine; + _geomEngine = geomEngine; } // ============================================================== onWindowActivated void EdgeAssocDialog::onWindowActivated(SUIT_ViewManager* vm) { - SUIT_ViewWindow* v = vm->getActiveView(); + QString vmType = vm->getType(); + if ( (vmType == SVTK_Viewer::Type()) || (vmType == VTKViewer_Viewer::Type()) ){ - QString vmType = vm->getType(); - if ( (vmType == SVTK_Viewer::Type()) || (vmType == VTKViewer_Viewer::Type()) ){ + if (single_rb->isChecked()) + single_edge_le->setFocus(); + else if (multiple_rb->isChecked() && focusWidget() != first_vex_le ) + edges_lw->setFocus(); + } + else if ( vmType == OCCViewer_Viewer::Type() ){ + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), TopAbs_EDGE); - if (single_rb->isChecked()) - single_edge_le->setFocus(); - else if (multiple_rb->isChecked()) - { - if (close_cb->isChecked()) - first_vex_le->setFocus(); - else - edges_lw->setFocus(); - } - } - else if ( vmType == OCCViewer_Viewer::Type() ){ - globalSelection(); // close local contexts, if any - localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE); - - if (single_rb->isChecked()) - single_line_le->setFocus(); - else if (multiple_rb->isChecked()) - lines_lw->setFocus(); - } + if (single_rb->isChecked()) + single_line_le->setFocus(); + else if (multiple_rb->isChecked() && focusWidget() != first_vex_le) + lines_lw->setFocus(); + } } // ============================================================== createOperation GEOM::GEOM_IOperations_ptr EdgeAssocDialog::createOperation() { - return _geomEngine->GetIBasicOperations(getStudyId()); + return _geomEngine->GetIBasicOperations(getStudyId()); } // ============================================================== execute bool EdgeAssocDialog::execute(ObjectList& objects) { - MESSAGE("execute(){"); - MESSAGE("* objects.size()" << objects.size() ); - - bool res = false; + bool res = false; - GEOM::GEOM_Object_var anObj; - QStringList aParameters; + GEOM::GEOM_Object_var anObj; + QStringList aParameters; - GEOM::GEOM_IBasicOperations_var anOper = GEOM::GEOM_IBasicOperations::_narrow( getOperation() ); - anObj = anOper->MakePointOnCurve( _currentLine.get(), _currentParameter ); - if ( !anObj->_is_nil() ) { - objects.push_back(anObj._retn()); - res = true; - } - MESSAGE("}execute()"); - return res; + GEOM::GEOM_IBasicOperations_var anOper = GEOM::GEOM_IBasicOperations::_narrow( getOperation() ); + anObj = anOper->MakePointOnCurve( _currentLine.get(), _currentParameter ); + if ( !anObj->_is_nil() ) { + objects.push_back(anObj._retn()); + res = true; + } + return res; } // ============================================================== pstartChanged void EdgeAssocDialog::pstartChanged( double val ) { - MESSAGE("pstartChanged("<item( 0 ); - if (!lineItem) return; - // MESSAGE("data : "<text().toStdString()); - _currentLine = lineItem->data(LW_GEOM_OBJ_ROLE).value(); - _currentParameter = pstart_spb->value(); - displayPreview(true); - MESSAGE("}pstartChanged()"); + QListWidgetItem* lineItem = lines_lw->item( 0 ); + if (!lineItem) return; + _currentLine = lineItem->data(LW_GEOM_OBJ_ROLE).value(); + _currentParameter = pstart_spb->value(); } // ============================================================== pendChanged void EdgeAssocDialog::pendChanged( double val ) { - MESSAGE("pendChanged("<_is_nil() ) return; - QListWidgetItem* lineItem = lines_lw->item( lines_lw->count()-1 ); - if (!lineItem) return; - // MESSAGE("data : "<text().toStdString()); - _currentLine = lineItem->data(LW_GEOM_OBJ_ROLE).value(); - _currentParameter = pend_spb->value(); - displayPreview(true); - MESSAGE("}pendChanged()"); + // if ( _lastLine->_is_nil() ) return; + QListWidgetItem* lineItem = lines_lw->item( lines_lw->count()-1 ); + if (!lineItem) return; + _currentLine = lineItem->data(LW_GEOM_OBJ_ROLE).value(); + _currentParameter = pend_spb->value(); +// displayPreview(true); } // ============================================================== onCurrentSelectionChanged void EdgeAssocDialog::onCurrentSelectionChanged() { - if ( !isVisible() ) - { - highlightSelectedAssocs(); - return; - } - - SUIT_ViewWindow* window = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - - bool isOCC = (window && window->getViewManager()->getType() == OCCViewer_Viewer::Type()); - if (!isOCC || !_documentModel) - { - highlightSelectedAssocs(); - return; - } - - GEOM::GeomObjPtr aSelectedObject = getSelected(TopAbs_EDGE); - DocumentModel::GeomObj * aLine = _documentModel->convertToGeomObj(aSelectedObject); - if ( aLine == NULL ) - { - highlightSelectedAssocs(); - return; - } - - if (single_rb->isChecked()) { - single_line_le->setText(aLine->name); - single_line_le->setProperty("GeomObj", QVariant::fromValue(*aLine)); - myLine = aSelectedObject; - setFocusToNextField(); - } - else if( multiple_rb->isChecked() ) { - QList twice = lines_lw->findItems( aLine->name, Qt::MatchExactly); - if ( twice.count() == 0 ){ - QListWidgetItem* item = new QListWidgetItem( aLine->name ); - item->setData( LW_ASSOC_ROLE, QVariant::fromValue(*aLine) ); - item->setData( LW_GEOM_OBJ_ROLE, QVariant::fromValue(aSelectedObject) ); - lines_lw->addItem(item); - } - } - highlightSelectedAssocs(); + if ( !isVisible()) + { + highlightSelectedAssocs(); + return; + } + + SUIT_ViewWindow* window = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); + + bool isOCC = (window && window->getViewManager()->getType() == OCCViewer_Viewer::Type()); + if (!isOCC || !getDocumentModel()) + { + highlightSelectedAssocs(); + return; + } + + GEOM::GeomObjPtr aSelectedObject = getSelected(TopAbs_EDGE); + DocumentModel::GeomObj* selectedLine = getDocumentModel()->convertToGeomObj(aSelectedObject); + if ( selectedLine == NULL ) + { + highlightSelectedAssocs(); + return; + } + myLine = selectedLine; + + //don't allow selection on a geometry not associated to the document + QString mainShapeEntry; + if ( aSelectedObject->IsMainShape() ){ + mainShapeEntry = aSelectedObject->GetStudyEntry(); + } else { + GEOM::GEOM_Object_var mainShape = aSelectedObject->GetMainShape(); + mainShapeEntry = mainShape->GetStudyEntry(); + } + if (getDocumentModel()->getGeomObjName(mainShapeEntry).isEmpty()) + { + //unknown geometry + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), HexaBaseDialog::tr( "UNKNOWN_GEOMETRY" ) ); + return; + } + + if (single_rb->isChecked()) { + single_line_le->setText(myLine->name); + single_line_le->setProperty("GeomObj", QVariant::fromValue(*myLine)); + setFocusToNextField(); + } + else if( multiple_rb->isChecked() ) { + QList twice = lines_lw->findItems( myLine->name, Qt::MatchExactly); + if ( twice.count() == 0 ){ + QListWidgetItem* item = new QListWidgetItem( myLine->name ); + item->setData( LW_ASSOC_ROLE, QVariant::fromValue(*myLine) ); + item->setData( LW_GEOM_OBJ_ROLE, QVariant::fromValue(aSelectedObject) ); + lines_lw->addItem(item); + } + } + highlightSelectedAssocs(); } // ============================================================== apply bool EdgeAssocDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - bool assocOk = false; - - highlightSelectedAssocs(); - if ( !_patternDataSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return false; - if (!_documentModel) return false; - - QModelIndex iEdge; - QModelIndexList iEdges; - QListWidgetItem* item = NULL; - QList assocs; - DocumentModel::GeomObj aLine; - DocumentModel::GeomObj *aLinePtr; - - if (single_rb->isChecked()){ //Single edge and/or line association - - GEOM::GeomObjPtr aSelectedObject = myLine; - aLinePtr = _documentModel->convertToGeomObj(aSelectedObject); - aLinePtr->start = pstart_spb->value(); - aLinePtr->end = pend_spb->value(); - iEdge = patternDataModel->mapToSource( _index[single_edge_le] ); - if (!iEdge.isValid()) return false; - _documentModel->addAssociation(iEdge, *aLinePtr); - assocOk = true; - } - else { //Multiple edge and/or line association - - // edges - iEdges = getIndexList(edges_lw); - - // lines - for (int r = 0; r < lines_lw->count(); ++r){ - item = lines_lw->item(r); - aLine = item->data(LW_ASSOC_ROLE).value(); - MESSAGE(" assocs => " << aLine.name.toStdString() ); - MESSAGE(" assocs => " << aLine.brep.toStdString() ); - assocs << aLine; - } - - if ( close_cb->isChecked() ){ //closed line - QModelIndex iFirstVertex = patternDataModel->mapToSource( _index[first_vex_le] ); - bool inv = inverse_cb->isChecked(); - assocOk = _documentModel->associateClosedLine( iFirstVertex, iEdges, assocs, pstart_spb->value(), inv ); - } else - //opened line - assocOk = _documentModel->associateOpenedLine( iEdges, assocs, pstart_spb->value(), pend_spb->value() ); - } - - if ( !assocOk ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE EDGE ASSOCIATION" ) ); - highlightSelectedAssocs(); - return false; - } - - highlightSelectedAssocs(); - return true; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + bool assocOk = false; + + highlightSelectedAssocs(); + + PatternDataModel* patternDataModel = getPatternDataModel(); + PatternGeomModel* pgm = getPatternGeomModel(); + PatternGeomSelectionModel* pgsm = getPatternGeomSelectionModel(); + + QModelIndex iEdge, iGeomEdge; + QModelIndexList iEdges; + QListWidgetItem* item = NULL; + QList assocs; + DocumentModel::GeomObj aLine; + HEXA_NS::SubShape* ssh; + HEXA_NS::EdgeShape* sh; + HEXA_NS::NewShapes shapes; + HEXA_NS::IntVector subIds; + QString id; + + if (single_rb->isChecked()){ //Single edge and/or line association + + iEdge = patternDataModel->mapToSource( _index[single_edge_le] ); + if ( !iEdge.isValid() || myLine == NULL) + { + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE EDGE ASSOCIATION" ) ); + highlightSelectedAssocs(); + return false; + } + id = myLine->shapeName+","+myLine->subid; + MESSAGE("=====> Association with geom id: " << id.toStdString()); + ssh = getDocumentModel()->getGeomPtr(id); + sh = dynamic_cast(ssh); + iGeomEdge = sh == NULL ? QModelIndex() : pgm->mapToSource(pgsm->indexBy(HEXA_DATA_ROLE, QVariant::fromValue(sh))); + if (!iGeomEdge.isValid()) + { + MESSAGE("iGeomEdge IS NOT VALID: ID = " << id.toStdString()); + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE EDGE ASSOCIATION" ) ); + highlightSelectedAssocs(); + return false; + } + assocOk = getDocumentModel()->addEdgeAssociation(iEdge, iGeomEdge, pstart_spb->value(), pend_spb->value()); + } + else { //Multiple edge and/or line association + + // edges + iEdges = getIndexList(edges_lw); + if (iEdges.count() == 0 || lines_lw->count() == 0) + { + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE EDGE ASSOCIATION" ) ); + highlightSelectedAssocs(); + return false; + } + + // lines + for (int r = 0; r < lines_lw->count(); ++r){ + item = lines_lw->item(r); + aLine = item->data(LW_ASSOC_ROLE).value(); + id = aLine.shapeName+","+aLine.subid; + ssh = getDocumentModel()->getGeomPtr(id); + sh = dynamic_cast(ssh); + if (sh == NULL) + { + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE EDGE ASSOCIATION" ) ); + highlightSelectedAssocs(); + return false; + } + shapes.push_back(sh->getParentShape()); + subIds.push_back(sh->getIdent()); + } + + if ( close_cb->isChecked() ){ //closed line + QModelIndex iFirstVertex = patternDataModel->mapToSource( _index[first_vex_le] ); + if ( !iFirstVertex.isValid() ) + { + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE EDGE ASSOCIATION" ) ); + highlightSelectedAssocs(); + return false; + } + bool inv = inverse_cb->isChecked(); + assocOk = getDocumentModel()->associateClosedLine( iFirstVertex, iEdges, shapes, subIds, pstart_spb->value(), inv ); + } else + //opened line + assocOk = getDocumentModel()->associateOpenedLine( iEdges, shapes, subIds, pstart_spb->value(), pend_spb->value() ); + } + + if ( !assocOk ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE EDGE ASSOCIATION" ) ); + highlightSelectedAssocs(); + return false; + } + + highlightSelectedAssocs(); + return true; } // ------------------------- QuadAssocDialog ---------------------------------- // ============================================================== Constructeur QuadAssocDialog::QuadAssocDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f) + HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_asso_quad_to_geom.html#associate-to-a-face-or-a-shell-of-the-geometry"; - setupUi( this ); - _initWidget(editmode); - _initViewManager(); -// setFocusProxy( quad_le ); + _helpFileName = "gui_asso_quad_to_geom.html#associate-to-a-face-or-a-shell-of-the-geometry"; + setupUi( this ); + _initWidget(editmode); + _initViewManager(); + // setFocusProxy( quad_le ); } // ============================================================== Destructeur QuadAssocDialog::~QuadAssocDialog() { - disconnect( _delFaceShortcut, SIGNAL(activated()), this, SLOT(deleteFaceItem()) ); - disconnect( HEXABLOCKGUI::selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(addFace()) ); - delete _delFaceShortcut; + disconnect( _delFaceShortcut, SIGNAL(activated()), this, SLOT(deleteFaceItem()) ); + disconnect( HEXABLOCKGUI::selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(addFace()) ); + delete _delFaceShortcut; +} + +// ============================================================== close +void QuadAssocDialog::close() +{ + HEXABLOCKGUI::assocInProgress = false; + HexaBaseDialog::close(); } // ============================================================== _initInputWidget void QuadAssocDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - quad_le->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - quad_le->installEventFilter(this); - quad_le->setValidator( validator ); + quad_le->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + quad_le->installEventFilter(this); + quad_le->setValidator( validator ); - faces_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_FACE) ); - faces_lw->installEventFilter(this); - _delFaceShortcut = new QShortcut( QKeySequence(Qt::Key_X/*Qt::Key_Delete*/), faces_lw ); - _delFaceShortcut->setContext( Qt::WidgetShortcut ); + faces_lw->setProperty( "HexaWidgetType", QVariant::fromValue(GEOMFACE_TREE) ); + faces_lw->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_FACE) ); + faces_lw->installEventFilter(this); + _delFaceShortcut = new QShortcut( QKeySequence(Qt::Key_X/*Qt::Key_Delete*/), faces_lw ); + _delFaceShortcut->setContext( Qt::WidgetShortcut ); - quad_le->setReadOnly(true); + quad_le->setReadOnly(true); - connect( _delFaceShortcut, SIGNAL(activated()), this, SLOT(deleteFaceItem()) ); - connect( faces_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfGeom()) ); + connect( _delFaceShortcut, SIGNAL(activated()), this, SLOT(deleteFaceItem()) ); + connect( faces_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfGeom()), Qt::UniqueConnection ); } // ============================================================== getAssocsVTK @@ -4867,15 +5270,15 @@ void QuadAssocDialog::_initInputWidget( Mode editmode ) */ QModelIndexList QuadAssocDialog::getAssocsVTK() { - QModelIndexList assocs; - QModelIndex iQuad; + QModelIndexList assocs; + QModelIndex iQuad; - //LineEdit content - QVariant v = quad_le->property("QModelIndex"); - if ( !v.isValid() ) - return assocs; - assocs << v.value(); - return assocs; + //LineEdit content + QVariant v = quad_le->property("QModelIndex"); + if ( !v.isValid() ) + return assocs; + assocs << v.value(); + return assocs; } // ============================================================== getAssocsGEOM @@ -4884,18 +5287,18 @@ QModelIndexList QuadAssocDialog::getAssocsVTK() */ QMultiMap QuadAssocDialog::getAssocsGEOM() { - QMultiMap assocs; - QListWidgetItem* item = NULL; - DocumentModel::GeomObj geomObj; + QMultiMap assocs; + QListWidgetItem* item = NULL; + DocumentModel::GeomObj geomObj; - //ListWidget content - unsigned int nbFaces = faces_lw->count(); - for ( int r = 0; r < nbFaces; ++r){ - item = faces_lw->item(r); - geomObj = item->data(LW_ASSOC_ROLE).value(); - assocs.insert( geomObj.entry, geomObj.subid.toInt() ); - } - return assocs; + //ListWidget content + unsigned int nbFaces = faces_lw->count(); + for ( int r = 0; r < nbFaces; ++r){ + item = faces_lw->item(r); + geomObj = item->data(LW_ASSOC_ROLE).value(); + assocs.insert( geomObj.shapeName, geomObj.subid.toInt() ); + } + return assocs; } // ============================================================== selectElementOfGeom @@ -4904,125 +5307,154 @@ QMultiMap QuadAssocDialog::getAssocsGEOM() void QuadAssocDialog::selectElementOfGeom() { - MESSAGE("HexaBaseDialog::selectElementOfGeom()"); + QListWidget* currentListWidget = dynamic_cast( sender() ); + if ( !currentListWidget ) return; - QListWidget* currentListWidget = dynamic_cast( sender() ); - if ( !currentListWidget ) return; + _selectionMutex = true; - _selectionMutex = true; + QMultiMap geomElts; + DocumentModel::GeomObj geomObj; + QList sel = currentListWidget->selectedItems(); + foreach ( QListWidgetItem *item, sel ){ + geomObj = item->data(LW_ASSOC_ROLE).value(); + geomElts.insert( geomObj.shapeName, geomObj.subid.toInt() ); + } + _selectionMutex = false; - QMultiMap geomElts; - DocumentModel::GeomObj geomObj; - QList sel = currentListWidget->selectedItems(); - foreach ( QListWidgetItem *item, sel ){ - geomObj = item->data(LW_ASSOC_ROLE).value(); - geomElts.insert( geomObj.entry, geomObj.subid.toInt() ); - } - _selectionMutex = false; + //highlight geom selected elts + if (geomElts.size() > 0 && getPatternDataSelectionModel() != NULL) + HEXABLOCKGUI::currentOccGView->highlight(geomElts); - //highlight geom selected elts - if (geomElts.size() > 0) _patternDataSelectionModel->_highlightGEOM(geomElts); - - MESSAGE("}"); } void QuadAssocDialog::clear() { - quad_le->clear(); - faces_lw->clear(); + quad_le->clear(); + modelUnregister(quad_le); + + faces_lw->clear(); + + modelUnregister(this); } // ============================================================== onCurrentSelectionChanged void QuadAssocDialog::onCurrentSelectionChanged() { - if ( !isVisible() ) - { - highlightSelectedAssocs(); - return; - } - - SUIT_ViewWindow* window = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); - - bool isOCC = (window && window->getViewManager()->getType() == OCCViewer_Viewer::Type()); - // bool isVTK = (window && window->getViewManager()->getType() == SVTK_Viewer::Type()); - if (!isOCC || !_documentModel) - { -// if (HEXABLOCKGUI::currentOccView != NULL) HEXABLOCKGUI::currentOccView->setFocus(); - highlightSelectedAssocs(); - return; - } - - GEOM::GeomObjPtr aSelectedObject = getSelected(TopAbs_FACE); - DocumentModel::GeomObj* aFace = _documentModel->convertToGeomObj(aSelectedObject); - if (aFace == NULL) - { - highlightSelectedAssocs(); - return; - } - - QList twice = faces_lw->findItems( aFace->name, Qt::MatchExactly); - if ( twice.count() == 0 ){ - QListWidgetItem* item = new QListWidgetItem( aFace->name ); - item->setData( LW_ASSOC_ROLE, QVariant::fromValue(*aFace) ); - faces_lw->addItem(item); - // faces_lw->setCurrentRow( faces_lw->count() - 1 ); - } - - highlightSelectedAssocs(); + + if ( !isVisible() ) + { + highlightSelectedAssocs(); + return; + } + + SUIT_ViewWindow* window = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); + + bool isOCC = (window && window->getViewManager()->getType() == OCCViewer_Viewer::Type()); + // bool isVTK = (window && window->getViewManager()->getType() == SVTK_Viewer::Type()); + if (!isOCC || !getDocumentModel()) + { + highlightSelectedAssocs(); + return; + } + + GEOM::GeomObjPtr aSelectedObject = getSelected(TopAbs_FACE); + DocumentModel::GeomObj* aFace = getDocumentModel()->convertToGeomObj(aSelectedObject); + if (aFace == NULL) + { + highlightSelectedAssocs(); + return; + } + + //don't allow selection on a geometry not associated to the document + QString mainShapeEntry; + if ( aSelectedObject->IsMainShape() ){ + mainShapeEntry = aSelectedObject->GetStudyEntry(); + } else { + GEOM::GEOM_Object_var mainShape = aSelectedObject->GetMainShape(); + mainShapeEntry = mainShape->GetStudyEntry(); + } + if (getDocumentModel()->getGeomObjName(mainShapeEntry).isEmpty()) + { + //unknown geometry + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), HexaBaseDialog::tr( "UNKNOWN_GEOMETRY" ) ); + return; + } + + QList twice = faces_lw->findItems( aFace->name, Qt::MatchExactly); + if ( twice.count() == 0 ){ + QListWidgetItem* item = new QListWidgetItem( aFace->name ); + item->setData( LW_ASSOC_ROLE, QVariant::fromValue(*aFace) ); + faces_lw->addItem(item); + // faces_lw->setCurrentRow( faces_lw->count() - 1 ); + } + + highlightSelectedAssocs(); } // ============================================================== onWindowActivated void QuadAssocDialog::onWindowActivated(SUIT_ViewManager* vm) { - SUIT_ViewWindow* v = vm->getActiveView(); - - QString vmType = vm->getType(); - if ( (vmType == SVTK_Viewer::Type()) || (vmType == VTKViewer_Viewer::Type()) ) - quad_le->setFocus(); - else if ( vmType == OCCViewer_Viewer::Type() ){ - globalSelection(); // close local contexts, if any - localSelection(GEOM::GEOM_Object::_nil(), TopAbs_FACE); - faces_lw->setFocus(); - } + QString vmType = vm->getType(); + if ( (vmType == SVTK_Viewer::Type()) || (vmType == VTKViewer_Viewer::Type()) ) + quad_le->setFocus(); + else if ( vmType == OCCViewer_Viewer::Type() ){ + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any +// localSelection(GEOM::GEOM_Object::_nil(), TopAbs_FACE); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), TopAbs_FACE); + faces_lw->setFocus(); + } } // ============================================================== deleteFaceItem void QuadAssocDialog::deleteFaceItem() { - delete faces_lw->currentItem(); + delete faces_lw->currentItem(); } // ============================================================== apply bool QuadAssocDialog::apply(QModelIndex& result) { - highlightSelectedAssocs(); - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + highlightSelectedAssocs(); + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + PatternDataModel* patternDataModel = getPatternDataModel(); + PatternGeomModel* pgm = getPatternGeomModel(); + PatternGeomSelectionModel* pgsm = getPatternGeomSelectionModel(); - SUIT_OverrideCursor wc; - //if ( !_documentModel ) return; - if ( !_patternDataSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return false; - // quad - QModelIndex iQuad = patternDataModel->mapToSource( _index[quad_le] ); + QModelIndex iQuad, iGeomFace; + HEXA_NS::SubShape* ssh; + HEXA_NS::FaceShape* sh; + QString id; - // faces - QListWidgetItem* item = NULL; - DocumentModel::GeomObj aFace; - for ( int r = 0; r < faces_lw->count(); ++r ){ - item = faces_lw->item(r); - aFace = item->data(LW_ASSOC_ROLE).value(); - _documentModel->addAssociation( iQuad, aFace ); - } + // quad + iQuad = patternDataModel->mapToSource( _index[quad_le] ); - result = patternDataModel->mapFromSource(iQuad); + // faces + QListWidgetItem* item = NULL; + DocumentModel::GeomObj aFace; + for ( int r = 0; r < faces_lw->count(); ++r ){ + item = faces_lw->item(r); + aFace = item->data(LW_ASSOC_ROLE).value(); + id = aFace.shapeName+","+aFace.subid; + ssh = getDocumentModel()->getGeomPtr(id); + sh = dynamic_cast(ssh); + iGeomFace = sh == NULL ? QModelIndex() : pgm->mapToSource(pgsm->indexBy(HEXA_DATA_ROLE, QVariant::fromValue(sh))); + if (!getDocumentModel()->addQuadAssociation(iQuad, iGeomFace)) + { + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE QUAD ASSOCIATION" ) ); + highlightSelectedAssocs(); + return false; + } + } - highlightSelectedAssocs(); - return true; + result = patternDataModel->mapFromSource(iQuad); + + highlightSelectedAssocs(); + return true; } @@ -5032,21 +5464,21 @@ bool QuadAssocDialog::apply(QModelIndex& result) // ============================================================== Constructeur GroupDialog::GroupDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f), - _value(NULL) + HexaBaseDialog(parent, editmode, f), + _value(NULL) { - _helpFileName = "gui_groups.html#add-group"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( name_le/*eltBase_lw */); + _helpFileName = "gui_groups.html#add-group"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( name_le/*eltBase_lw */); - if ( editmode == NEW_MODE ){ - setWindowTitle( tr("Group Construction") ); - } else if ( editmode == UPDATE_MODE ){ - setWindowTitle( tr("Group Modification") ); - } else if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Group Information") ); - } + if ( editmode == NEW_MODE ){ + setWindowTitle( tr("Group Construction") ); + } else if ( editmode == UPDATE_MODE ){ + setWindowTitle( tr("Group Modification") ); + } else if ( editmode == INFO_MODE ){ + setWindowTitle( tr("Group Information") ); + } } // ============================================================== Destructeur @@ -5060,214 +5492,232 @@ GroupDialog::~GroupDialog() */ QModelIndexList GroupDialog::getAssocsVTK() { - QModelIndexList assocs; - QModelIndex iItem; - QListWidgetItem* item = NULL; - //ListWidget content - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return assocs; - for ( int r = 0; r < eltBase_lw->count(); ++r){ - item = eltBase_lw->item(r); - iItem = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iItem.isValid() ) assocs << iItem; - } - return assocs; + QModelIndexList assocs; + QModelIndex iItem; + QListWidgetItem* item = NULL; + if (getPatternDataSelectionModel() == NULL) return assocs; + //ListWidget content + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return assocs; + for ( int r = 0; r < eltBase_lw->count(); ++r){ + item = eltBase_lw->item(r); + iItem = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iItem.isValid() ) assocs << iItem; + } + return assocs; } // ============================================================== _initInputWidget void GroupDialog::_initInputWidget( Mode editmode ) { - setProperty( "HexaWidgetType", QVariant::fromValue(GROUP_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(GROUP_TREE) ); + installEventFilter(this); + +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(GROUP_TREE) ); + name_le->installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(GROUP_TREE) ); - name_le->installEventFilter(this); + // kind checkbox + strKind[ HEXA_NS::HexaCell ] = "HexaCell"; + strKind[ HEXA_NS::QuadCell ] = "QuadCell"; + strKind[ HEXA_NS::EdgeCell ] = "EdgeCell"; + strKind[ HEXA_NS::HexaNode ] = "HexaNode"; + strKind[ HEXA_NS::QuadNode ] = "QuadNode"; + strKind[ HEXA_NS::EdgeNode ] = "EdgeNode"; + strKind[ HEXA_NS::VertexNode ] = "VertexNode"; + kind_cb->clear(); + QMap::ConstIterator iKind; + for( iKind = strKind.constBegin(); iKind != strKind.constEnd(); ++iKind ) + kind_cb->addItem( iKind.value(), QVariant(iKind.key()) ); - // kind checkbox - strKind[ HEXA_NS::HexaCell ] = "HexaCell"; - strKind[ HEXA_NS::QuadCell ] = "QuadCell"; - strKind[ HEXA_NS::EdgeCell ] = "EdgeCell"; - strKind[ HEXA_NS::HexaNode ] = "HexaNode"; - strKind[ HEXA_NS::QuadNode ] = "QuadNode"; - strKind[ HEXA_NS::EdgeNode ] = "EdgeNode"; - strKind[ HEXA_NS::VertexNode ] = "VertexNode"; - kind_cb->clear(); - QMap::ConstIterator iKind; - for( iKind = strKind.constBegin(); iKind != strKind.constEnd(); ++iKind ) - kind_cb->addItem( iKind.value(), QVariant(iKind.key()) ); + onKindChanged( kind_cb->currentIndex() ); + eltBase_lw->installEventFilter(this); - onKindChanged( kind_cb->currentIndex() ); - eltBase_lw->installEventFilter(this); + if ( editmode != INFO_MODE ){ + QShortcut* delEltShortcut = new QShortcut( QKeySequence(Qt::Key_X), eltBase_lw ); + delEltShortcut->setContext( Qt::WidgetShortcut ); + connect(delEltShortcut, SIGNAL(activated()), this, SLOT(removeEltBase())); + connect(kind_cb, SIGNAL(activated(int)), this, SLOT(onKindChanged(int)) ); + } - if ( editmode != INFO_MODE ){ - QShortcut* delEltShortcut = new QShortcut( QKeySequence(Qt::Key_X), eltBase_lw ); - delEltShortcut->setContext( Qt::WidgetShortcut ); - connect(delEltShortcut, SIGNAL(activated()), this, SLOT(removeEltBase())); - connect(kind_cb, SIGNAL(activated(int)), this, SLOT(onKindChanged(int)) ); - } + if ( editmode == INFO_MODE) + { + name_le->setReadOnly(true); + kind_cb->setEnabled(false); + } - connect(eltBase_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel())); + connect(eltBase_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection); } // ============================================================== clear void GroupDialog::clear() { - name_le->clear(); - eltBase_lw->clear(); + name_le->clear(); + + eltBase_lw->clear(); + modelUnregister(eltBase_lw); + + modelUnregister(this); } // ============================================================== onKindChanged void GroupDialog::onKindChanged(int index) { - // onKind - MESSAGE("GroupDialog::onKindChanged(" << index << ") "); - switch ( kind_cb->itemData(index).toInt() ){ - case HEXA_NS::HexaCell: - case HEXA_NS::HexaNode: - eltBase_lw->setProperty("HexaWidgetType", QVariant::fromValue(HEXA_TREE)); - break; + // onKind + switch ( kind_cb->itemData(index).toInt() ){ + case HEXA_NS::HexaCell: + case HEXA_NS::HexaNode: + eltBase_lw->setProperty("HexaWidgetType", QVariant::fromValue(HEXA_TREE)); + break; - case HEXA_NS::QuadCell: - case HEXA_NS::QuadNode: - eltBase_lw->setProperty("HexaWidgetType", QVariant::fromValue(QUAD_TREE)); - break; + case HEXA_NS::QuadCell: + case HEXA_NS::QuadNode: + eltBase_lw->setProperty("HexaWidgetType", QVariant::fromValue(QUAD_TREE)); + break; - case HEXA_NS::EdgeCell: - case HEXA_NS::EdgeNode: eltBase_lw->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); - break; + case HEXA_NS::EdgeCell: + case HEXA_NS::EdgeNode: eltBase_lw->setProperty("HexaWidgetType", QVariant::fromValue(EDGE_TREE)); + break; - case HEXA_NS::VertexNode: - eltBase_lw->setProperty("HexaWidgetType", QVariant::fromValue(VERTEX_TREE)); - break; + case HEXA_NS::VertexNode: + eltBase_lw->setProperty("HexaWidgetType", QVariant::fromValue(VERTEX_TREE)); + break; - default:Q_ASSERT(false); - } - eltBase_lw->clear(); - eltBase_lw->setFocus(); + default:Q_ASSERT(false); + } + eltBase_lw->clear(); + eltBase_lw->setFocus(); } // ============================================================== setValue void GroupDialog::setValue(HEXA_NS::Group* g) { - //0) name - name_le->setText( g->getName() ); + //0) name + name_le->setText( g->getName() ); - //1) kind - kind_cb->clear(); - kind_cb->addItem ( strKind[g->getKind()], QVariant( g->getKind() ) ); - // onKindChanged( kind_cb->currentIndex() ); + //1) kind + kind_cb->clear(); + kind_cb->addItem ( strKind[g->getKind()], QVariant( g->getKind() ) ); + // onKindChanged( kind_cb->currentIndex() ); - //2) elts - HEXA_NS::EltBase* eltBase = NULL; - QListWidgetItem* item = NULL; - QModelIndex iEltBase; - QList eltBaseItems; - QVariant v; + //2) elts + HEXA_NS::EltBase* eltBase = NULL; + QListWidgetItem* item = NULL; + QModelIndex iEltBase; + QList eltBaseItems; + QVariant v; - if ( !_patternDataSelectionModel ) return; - if ( !_groupsSelectionModel ) return; + if ( !getPatternDataSelectionModel() ) return; + if ( !getGroupsSelectionModel() ) return; - QModelIndex iGroup = _groupsSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(g) ); - name_le->setProperty( "QModelIndex", QVariant::fromValue(iGroup) ); + QModelIndex iGroup = getGroupsSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(g) ); + name_le->setProperty( "QModelIndex", QVariant::fromValue(iGroup) ); - for ( int nr = 0; nr < g->countElement(); ++nr ){ - eltBase = g->getElement( nr ); - switch ( g->getKind() ){ - case HEXA_NS::HexaCell: case HEXA_NS::HexaNode: v = QVariant::fromValue( (HEXA_NS::Hexa *)eltBase ); break; - case HEXA_NS::QuadCell: case HEXA_NS::QuadNode: v = QVariant::fromValue( (HEXA_NS::Quad *)eltBase ); break; - case HEXA_NS::EdgeCell: case HEXA_NS::EdgeNode: v = QVariant::fromValue( (HEXA_NS::Edge *)eltBase ); break; - case HEXA_NS::VertexNode: v = QVariant::fromValue( (HEXA_NS::Vertex *)eltBase ); break; - } - iEltBase = _patternDataSelectionModel->indexBy( HEXA_DATA_ROLE, v); - if ( iEltBase.isValid() ){ - item = new QListWidgetItem( eltBase->getName() ); - item->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(iEltBase) ); - eltBase_lw->addItem( item ); - } - } + for ( int nr = 0; nr < g->countElement(); ++nr ){ + eltBase = g->getElement( nr ); + switch ( g->getKind() ){ + case HEXA_NS::HexaCell: case HEXA_NS::HexaNode: v = QVariant::fromValue( (HEXA_NS::Hexa *)eltBase ); break; + case HEXA_NS::QuadCell: case HEXA_NS::QuadNode: v = QVariant::fromValue( (HEXA_NS::Quad *)eltBase ); break; + case HEXA_NS::EdgeCell: case HEXA_NS::EdgeNode: v = QVariant::fromValue( (HEXA_NS::Edge *)eltBase ); break; + case HEXA_NS::VertexNode: v = QVariant::fromValue( (HEXA_NS::Vertex *)eltBase ); break; + } + iEltBase = getPatternDataSelectionModel()->indexBy( HEXA_DATA_ROLE, v); + if ( iEltBase.isValid() ){ + item = new QListWidgetItem( eltBase->getName() ); + item->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(iEltBase) ); + item->setData(LW_DATA_ROLE, iEltBase.data(HEXA_DATA_ROLE)); + eltBase_lw->addItem( item ); + } + } - _value = g; + _value = g; } // ============================================================== getValue HEXA_NS::Group* GroupDialog::getValue() { - return _value; + return _value; } // ============================================================== removeEltBase void GroupDialog::removeEltBase() { - QListWidgetItem *item = eltBase_lw->currentItem(); + QListWidgetItem *item = eltBase_lw->currentItem(); - if (item) { - int r = eltBase_lw->row(item); - eltBase_lw->takeItem(r); - delete item; - } + if (item) { + int r = eltBase_lw->row(item); + eltBase_lw->takeItem(r); + delete item; + } } // ============================================================== apply bool GroupDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - - if ( !_documentModel ) return false; - if ( !_patternDataSelectionModel ) return false; - if ( !_groupsSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const GroupsModel* groupsModel = dynamic_cast( _groupsSelectionModel->model() ); - - QString grpName = name_le->text(); - DocumentModel::Group grpKind = static_cast( kind_cb->itemData( kind_cb->currentIndex() ).toInt()); - QModelIndex iGrp; - if ( _value == NULL ){ // create group - iGrp = _documentModel->addGroup( grpName, grpKind ); - } else { - QModelIndexList iGrps = _documentModel->match( - _documentModel->index(0, 0), - HEXA_DATA_ROLE, - QVariant::fromValue( _value ), - 1, - Qt::MatchRecursive ); - if ( !iGrps.isEmpty() ) - iGrp = iGrps[0]; - } - - // kind_cb-> - if ( !iGrp.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD GROUP" ) ); - return false; - } - - //fill it and select it - QModelIndex iEltBase; - QListWidgetItem* item = NULL; - bool eltAdded = false; - _documentModel->clearGroupElement(iGrp); - for ( int r = 0; r < eltBase_lw->count(); ++r){ - item = eltBase_lw->item(r); - iEltBase = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iEltBase.isValid() ) - eltAdded = _documentModel->addGroupElement( iGrp, iEltBase ); - // if ( eltAdded == false ){ - // //SUIT_MessageBox::information( this, tr( "HEXA_INFO" ), tr( "ELEMENT NOT ADDED : %1" ).arg( iEltBase.data().toString() )); - // } - } - - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iGrp, newName ); - - result = groupsModel->mapFromSource(iGrp); - - return true; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const GroupsModel* groupsModel = getGroupsModel(); + if (patternDataModel == NULL || groupsModel == NULL) return false; + + QString grpName = name_le->text(); + DocumentModel::Group grpKind = static_cast( kind_cb->itemData( kind_cb->currentIndex() ).toInt()); + QModelIndex iGrp; + if ( _value == NULL ){ // create group + iGrp = getDocumentModel()->addGroup( grpName, grpKind ); + } else { + QModelIndexList iGrps = getDocumentModel()->match( + getDocumentModel()->index(0, 0), + HEXA_DATA_ROLE, + QVariant::fromValue( _value ), + 1, + Qt::MatchRecursive ); + if ( !iGrps.isEmpty() ) + iGrp = iGrps[0]; + } + + // kind_cb-> + if ( !iGrp.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD GROUP" ) ); + return false; + } + + //fill it and select it + QModelIndex iEltBase; + QListWidgetItem* item = NULL; + bool eltAdded = false; + getDocumentModel()->clearGroupElement(iGrp); + for ( int r = 0; r < eltBase_lw->count(); ++r){ + item = eltBase_lw->item(r); + iEltBase = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iEltBase.isValid() ) + eltAdded = getDocumentModel()->addGroupElement( iGrp, iEltBase ); + // if ( eltAdded == false ){ + // //SUIT_MessageBox::information( this, tr( "HEXA_INFO" ), tr( "ELEMENT NOT ADDED : %1" ).arg( iEltBase.data().toString() )); + // } + } + + QString newName = name_le->text(); + if ( !newName.isEmpty() )/*{*/ + getDocumentModel()->setName( iGrp, newName ); + + HEXA_NS::Group* hGroup = getDocumentModel()->data(iGrp, HEXA_DATA_ROLE).value(); + if (hGroup != NULL) + { + char buffer [16]; + name_le->setText(hGroup->getNextName(buffer)); +// updateDefaultName(name_le, hGroup->getType()); //to be tested to debug default name + } + + result = groupsModel->mapFromSource(iGrp); + + return true; } @@ -5280,14 +5730,17 @@ LawDialog::LawDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ) : HexaBaseDialog(parent, editmode, f), _value(NULL) { - _helpFileName = "gui_discret_law.html#add-law"; - setupUi( this ); - _initWidget(editmode); - if ( editmode == NEW_MODE ){ - setWindowTitle( tr("Law Construction") ); - } else if ( editmode == UPDATE_MODE ){ - setWindowTitle( tr("Law Modification") ); - } + _helpFileName = "gui_discret_law.html#add-law"; + setupUi( this ); + _initWidget(editmode); + if ( editmode == NEW_MODE ){ + setWindowTitle( tr("Law Construction") ); + } else if ( editmode == UPDATE_MODE ){ + setWindowTitle( tr("Law Modification") ); + } + else if ( editmode == INFO_MODE){ + setWindowTitle( tr("Law Information") ); + } } // ============================================================== Destructeur @@ -5298,106 +5751,122 @@ LawDialog::~LawDialog() // ============================================================== _initInputWidget void LawDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + +// setProperty( "HexaWidgetType", QVariant::fromValue(LAW_TREE) ); + installEventFilter(this); - setProperty( "HexaWidgetType", QVariant::fromValue(LAW_TREE) ); - installEventFilter(this); +// name_le->setProperty( "HexaWidgetType", QVariant::fromValue(LAW_TREE) ); + name_le->installEventFilter(this); - name_le->setProperty( "HexaWidgetType", QVariant::fromValue(LAW_TREE) ); - name_le->installEventFilter(this); + // kind checkbox + strKind[ HEXA_NS::Uniform ] = "Uniform"; + strKind[ HEXA_NS::Arithmetic ] = "Arithmetic"; + strKind[ HEXA_NS::Geometric ] = "Geometric"; - // kind checkbox - strKind[ HEXA_NS::Uniform ] = "Uniform"; - strKind[ HEXA_NS::Arithmetic ] = "Arithmetic"; - strKind[ HEXA_NS::Geometric ] = "Geometric"; + kind_cb->clear(); + QMap::ConstIterator iKind; + for( iKind = strKind.constBegin(); iKind != strKind.constEnd(); ++iKind ) + kind_cb->addItem( iKind.value(), QVariant(iKind.key()) ); - kind_cb->clear(); - QMap::ConstIterator iKind; - for( iKind = strKind.constBegin(); iKind != strKind.constEnd(); ++iKind ) - kind_cb->addItem( iKind.value(), QVariant(iKind.key()) ); + if (editmode == INFO_MODE) + { + name_le->setReadOnly(true); + nb_nodes_spb->setReadOnly(true); + coeff_spb->setReadOnly(true); + kind_cb->setEnabled(false); + } } // ============================================================== clear void LawDialog::clear() { - name_le->clear(); + name_le->clear(); + + modelUnregister(this); } // ============================================================== setValue void LawDialog::setValue(HEXA_NS::Law* l) { - // 0) name - name_le->setText( l->getName() ); + // 0) name + name_le->setText( l->getName() ); - nb_nodes_spb->setValue( l->getNodes() ); - coeff_spb->setValue( l->getCoefficient() ); + nb_nodes_spb->setValue( l->getNodes() ); + coeff_spb->setValue( l->getCoefficient() ); - HEXA_NS::KindLaw k = l->getKind(); - kind_cb->setCurrentIndex( kind_cb->findData(k) ); + HEXA_NS::KindLaw k = l->getKind(); + kind_cb->setCurrentIndex( kind_cb->findData(k) ); - _value = l; + _value = l; } // ============================================================== getValue HEXA_NS::Law* LawDialog::getValue() { - return _value; + return _value; } - // ============================================================== apply bool LawDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_meshSelectionModel ) return false; + const MeshModel* meshModel = getMeshModel(); + if (meshModel == NULL) return false; - const MeshModel* meshModel = dynamic_cast( _meshSelectionModel->model() ); + QString lawName = name_le->text(); + int nbnodes = nb_nodes_spb->value(); + double coeff = coeff_spb->value(); + DocumentModel::KindLaw lawKind = static_cast( kind_cb->itemData( kind_cb->currentIndex() ).toInt()); - QString lawName = name_le->text(); - int nbnodes = nb_nodes_spb->value(); - double coeff = coeff_spb->value(); - DocumentModel::KindLaw lawKind = static_cast( kind_cb->itemData( kind_cb->currentIndex() ).toInt()); + QModelIndex iLaw; + if ( _value == NULL ){ // create Law + iLaw = getDocumentModel()->addLaw( lawName, nbnodes ); + } else { + QModelIndexList iLaws = getDocumentModel()->match( + getDocumentModel()->index(0, 0), + HEXA_DATA_ROLE, + QVariant::fromValue( _value ), + 1, + Qt::MatchRecursive ); + if ( !iLaws.isEmpty() ) + iLaw = iLaws[0]; + } + if ( !iLaw.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD LAW" ) ); + return false; + } + //fill it and select it + bool setOk = getDocumentModel()->setLaw( iLaw, nbnodes, coeff, lawKind ); + if ( !setOk ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD LAW" ) ); + return false; + } - QModelIndex iLaw; - if ( _value == NULL ){ // create Law - iLaw = _documentModel->addLaw( lawName, nbnodes ); - } else { - QModelIndexList iLaws = _documentModel->match( - _documentModel->index(0, 0), - HEXA_DATA_ROLE, - QVariant::fromValue( _value ), - 1, - Qt::MatchRecursive ); - if ( !iLaws.isEmpty() ) - iLaw = iLaws[0]; - } + QString newName = name_le->text(); + if ( !newName.isEmpty() )/*{*/ + getDocumentModel()->setName( iLaw, newName ); - if ( !iLaw.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD LAW" ) ); - return false; - } - //fill it and select it - bool setOk = _documentModel->setLaw( iLaw, nbnodes, coeff, lawKind ); - if ( !setOk ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT ADD LAW" ) ); - return false; - } + HEXA_NS::Law* hLaw = getDocumentModel()->data(iLaw, HEXA_DATA_ROLE).value(); + if (hLaw != NULL) + { + char buffer [16]; + name_le->setText(hLaw->getNextName(buffer)); +// updateDefaultName(name_le, hLaw->getType()); //to be tested to debug default name - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iLaw, newName ); + } - result = meshModel->mapFromSource(iLaw); + result = meshModel->mapFromSource(iLaw); - return true; + return true; } @@ -5411,23 +5880,23 @@ PropagationDialog::PropagationDialog( QWidget* parent, Mode editmode, Qt::Window : HexaBaseDialog(parent, editmode, f), _value(NULL) { - _helpFileName = "gui_propag.html"; - setupUi( this ); - _initWidget(editmode); - // setFocusProxy( law_le ); -// setFocusProxy( propagations_lw ); + _helpFileName = "gui_propag.html"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( law_le ); + // setFocusProxy( propagations_lw ); - if ( editmode == INFO_MODE ){ - setWindowTitle( tr("Propagation Information") ); - if (groupBox_2) - delete groupBox_2; - } else if ( editmode == UPDATE_MODE ){ - setWindowTitle( tr("Propagation Modification") ); - if (groupBox_2) - delete groupBox_2; - } else if ( editmode == NEW_MODE ){ - setWindowTitle( tr("Propagation(s) Setting") ); - } + if ( editmode == INFO_MODE ){ + setWindowTitle( tr("Propagation Information") ); + if (groupBox_2) + delete groupBox_2; + } else if ( editmode == UPDATE_MODE ){ + setWindowTitle( tr("Propagation Modification") ); + if (groupBox_2) + delete groupBox_2; + } else if ( editmode == NEW_MODE ){ + setWindowTitle( tr("Propagation(s) Setting") ); + } } @@ -5440,65 +5909,74 @@ PropagationDialog::~PropagationDialog() // ============================================================== _initInputWidget void PropagationDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); + +// setProperty( "HexaWidgetType", QVariant::fromValue(PROPAGATION_TREE) ); + installEventFilter(this); - setProperty( "HexaWidgetType", QVariant::fromValue(PROPAGATION_TREE) ); - installEventFilter(this); + law_le->setProperty( "HexaWidgetType", QVariant::fromValue(LAW_TREE) ); + law_le->installEventFilter(this); + law_le->setValidator( validator ); - law_le->setProperty( "HexaWidgetType", QVariant::fromValue(LAW_TREE) ); - law_le->installEventFilter(this); - law_le->setValidator( validator ); + propagations_lw->setProperty( "HexaWidgetType", QVariant::fromValue(PROPAGATION_TREE) ); + propagations_lw->installEventFilter(this); - propagations_lw->setProperty( "HexaWidgetType", QVariant::fromValue(PROPAGATION_TREE) ); - propagations_lw->installEventFilter(this); + QShortcut* delPropagationShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X/*Qt::Key_Alt*//*Qt::Key_Space*/), propagations_lw); + delPropagationShortcut->setContext( Qt::WidgetShortcut ); - QShortcut* delPropagationShortcut = new QShortcut(QKeySequence(/*Qt::Key_Delete*/Qt::Key_X/*Qt::Key_Alt*//*Qt::Key_Space*/), propagations_lw); - delPropagationShortcut->setContext( Qt::WidgetShortcut ); + law_le->setReadOnly(true); - law_le->setReadOnly(true); + if ( editmode == INFO_MODE) + way_cb->setEnabled(false); - connect( delPropagationShortcut, SIGNAL(activated()), this, SLOT(deletePropagationItem()) ); - connect( propagations_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()) ); + connect( delPropagationShortcut, SIGNAL(activated()), this, SLOT(deletePropagationItem()) ); + connect( propagations_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection ); } // ============================================================== clear void PropagationDialog::clear() { - propagations_lw->clear(); - law_le->clear(); + propagations_lw->clear(); + modelUnregister(propagations_lw); + + law_le->clear(); + modelUnregister(law_le); + + modelUnregister(this); } // ============================================================== deletePropagationItem void PropagationDialog::deletePropagationItem() { - delete propagations_lw->currentItem(); + delete propagations_lw->currentItem(); } // ============================================================== setValue void PropagationDialog::setValue(HEXA_NS::Propagation* p) { - HEXA_NS::Law* l = p->getLaw(); - bool way = p->getWay(); + if (getMeshSelectionModel() == NULL) return; + HEXA_NS::Law* l = p->getLaw(); + bool way = p->getWay(); - // propagation - QModelIndex ip = _meshSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(p) ); - setProperty( "QModelIndex", QVariant::fromValue(ip) ); + // propagation + QModelIndex ip = getMeshSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(p) ); + setProperty( "QModelIndex", QVariant::fromValue(ip) ); - // law on propagation - if ( l != NULL ){ - law_le->setText( l->getName() ); - QModelIndex il = _meshSelectionModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(l) ); - law_le->setProperty( "QModelIndex", QVariant::fromValue(il) ); - } + // law on propagation + if ( l != NULL ){ + law_le->setText( l->getName() ); + QModelIndex il = getMeshSelectionModel()->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(l) ); + law_le->setProperty( "QModelIndex", QVariant::fromValue(il) ); + } - // way of propagation - way_cb->setChecked(way); + // way of propagation + way_cb->setChecked(way); - _value = p; + _value = p; } // ============================================================== selectElementOfModel @@ -5508,81 +5986,76 @@ void PropagationDialog::setValue(HEXA_NS::Propagation* p) void PropagationDialog::selectElementOfModel() { - MESSAGE("HexaBaseDialog::selectElementOfModel()"); - if (!_meshSelectionModel) return; + if (!getMeshSelectionModel()) return; - QListWidget* currentListWidget = dynamic_cast( sender() ); - if ( !currentListWidget ) return; + QListWidget* currentListWidget = dynamic_cast( sender() ); + if ( !currentListWidget ) return; - _selectionMutex = true; + _selectionMutex = true; - QList sel = currentListWidget->selectedItems(); - QModelIndex index; - _meshSelectionModel->clearSelection(); - foreach ( QListWidgetItem *item, sel ){ - index = item->data(LW_QMODELINDEX_ROLE).value(); - if ( index.isValid() ) - { - MESSAGE( "* selecting the element : " << index.data().toString().toStdString() ); - _meshSelectionModel->select( index, QItemSelectionModel::Select ); - } - } - _selectionMutex = false; + QList sel = currentListWidget->selectedItems(); + QModelIndex index; + getMeshSelectionModel()->clearSelection(); + foreach ( QListWidgetItem *item, sel ){ + index = item->data(LW_QMODELINDEX_ROLE).value(); + if ( index.isValid() ) + { + getMeshSelectionModel()->select( index, QItemSelectionModel::Select ); + } + } + _selectionMutex = false; - MESSAGE("}"); } // ============================================================== getValue HEXA_NS::Propagation* PropagationDialog::getValue() { - return _value; + return _value; } // ============================================================== apply bool PropagationDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - bool isOk = false; - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_meshSelectionModel ) return false; + bool isOk = false; + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const MeshModel* meshModel = getMeshModel(); + if (meshModel == NULL) return false; - const MeshModel* meshModel = dynamic_cast( _meshSelectionModel->model() ); - bool way = way_cb->isChecked(); - QListWidgetItem* item = NULL; + bool way = way_cb->isChecked(); + QListWidgetItem* item = NULL; - QModelIndex iPropagation; - QModelIndex iLaw = meshModel->mapToSource( law_le->property("QModelIndex").value() ); - if (!iLaw.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT SET PROPAGATION" ) ); - return false; - } - MESSAGE("iLaw.isValid() => " << iLaw.isValid() ); + QModelIndex iPropagation; + QModelIndex iLaw = meshModel->mapToSource( law_le->property("QModelIndex").value() ); + if (!iLaw.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT SET PROPAGATION" ) ); + return false; + } - for (int r = 0; r < propagations_lw->count(); ++r){ - item = propagations_lw->item(r); - iPropagation = meshModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( !iPropagation.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT SET PROPAGATION" ) ); - return false; - } - MESSAGE("iPropagation.isValid() => " << iPropagation.isValid() ); + for (int r = 0; r < propagations_lw->count(); ++r){ + item = propagations_lw->item(r); + iPropagation = meshModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( !iPropagation.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT SET PROPAGATION" ) ); + return false; + } - //fill it and select it - isOk = _documentModel->setPropagation( iPropagation, iLaw, way ); - if ( !isOk ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT SET PROPAGATION" ) ); - return false; - } + //fill it and select it + isOk = getDocumentModel()->setPropagation( iPropagation, iLaw, way ); + if ( !isOk ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT SET PROPAGATION" ) ); + return false; + } - result = meshModel->mapFromSource(iPropagation); - } + result = meshModel->mapFromSource(iPropagation); + } - return true; + return true; } @@ -5591,41 +6064,41 @@ bool PropagationDialog::apply(QModelIndex& result) // ============================================================== Constructeur ComputeMeshDialog::ComputeMeshDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f) + HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_mesh.html"; - setWindowTitle( tr("Compute mesh") ); - QVBoxLayout* layout = new QVBoxLayout; - setLayout(layout); + _helpFileName = "gui_mesh.html"; + setWindowTitle( tr("Compute mesh") ); + QVBoxLayout* layout = new QVBoxLayout; + setLayout(layout); - QHBoxLayout* up = new QHBoxLayout; - QHBoxLayout* down = new QHBoxLayout; + QHBoxLayout* up = new QHBoxLayout; + QHBoxLayout* down = new QHBoxLayout; - layout->addLayout(up); - layout->addLayout(down); + layout->addLayout(up); + layout->addLayout(down); - QVBoxLayout* vlg = new QVBoxLayout; - QVBoxLayout* vld = new QVBoxLayout; + QVBoxLayout* vlg = new QVBoxLayout; + QVBoxLayout* vld = new QVBoxLayout; - up->addLayout(vlg); - up->addLayout(vld); + up->addLayout(vlg); + up->addLayout(vld); - vlg->addWidget(new QLabel("Name")); - vlg->addWidget(new QLabel("Dimension")); - vlg->addWidget(new QLabel("Container")); + vlg->addWidget(new QLabel("Name")); + vlg->addWidget(new QLabel("Dimension")); + vlg->addWidget(new QLabel("Container")); - _name = new QLineEdit("Mesh"); - _dim = new QSpinBox(); - _fact = new QLineEdit("FactoryServer"); + _name = new QLineEdit("Mesh"); + _dim = new QSpinBox(); + _fact = new QLineEdit("FactoryServer"); - vld->addWidget(_name); - vld->addWidget(_dim); - vld->addWidget(_fact); + vld->addWidget(_name); + vld->addWidget(_dim); + vld->addWidget(_fact); - _dim->setRange(1, 3); - _dim->setValue(3); + _dim->setRange(1, 3); + _dim->setValue(3); - _initWidget(editmode); + _initWidget(editmode); } @@ -5643,40 +6116,42 @@ void ComputeMeshDialog::_initInputWidget( Mode editmode ) // ============================================================== setDocumentModel void ComputeMeshDialog::setDocumentModel(DocumentModel* m) { - HexaBaseDialog::setDocumentModel(m); - _name->setText(_documentModel->getName()); +// HexaBaseDialog::setDocumentModel(m); + if (m == NULL) return; + _name->setText(m->getName()); } // ============================================================== clear void ComputeMeshDialog::clear() { + modelUnregister(this); } // ============================================================== apply bool ComputeMeshDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; - QString command = QString("import hexablock ; %1 = hexablock.mesh(\"%2\", \"%1\", %3, \"%4\")") - .arg( _name->text() ) - .arg( _documentModel->documentEntry() ) - .arg( _dim->value() ) - .arg( _fact->text() ); - //std::cout << "command: " << command.toStdString() << std::endl; + SUIT_OverrideCursor wc; + if (getDocumentModel() == NULL) return false; + QString command = QString("import hexablock ; %1 = hexablock.mesh(\"%2\", \"%1\", %3, \"%4\")") + .arg( _name->text() ) + .arg( getDocumentModel()->getName() ) + .arg( _dim->value() ) + .arg( _fact->text() ); + //std::cout << "command: " << command.toStdString() << std::endl; - SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication() ); - PyConsole_Console* pyConsole = app->pythonConsole(); + SalomeApp_Application* app = dynamic_cast( SUIT_Session::session()->activeApplication() ); + PyConsole_Console* pyConsole = app->pythonConsole(); - if ( pyConsole ) - pyConsole->exec( command ); - else - return false; + if ( pyConsole ) + pyConsole->exec( command ); + else + return false; - // clear(); - return true; + // clear(); + return true; } // void ComputeMeshDialog::accept() { @@ -5685,7 +6160,7 @@ bool ComputeMeshDialog::apply(QModelIndex& result) // // QString command = QString("import hexablock ; %1 = hexablock.mesh(\"%1\", \"%2\", %3, \"%4\")") // .arg( _name->text() ) -// .arg( _documentModel->documentEntry() ) +// .arg( getDocumentModel()->documentEntry() ) // .arg( _dim->value() ) // .arg( _fact->text() ); // std::cout << "command: " << command.toStdString() << std::endl; @@ -5708,12 +6183,12 @@ bool ComputeMeshDialog::apply(QModelIndex& result) // ============================================================== Constructeur ReplaceHexaDialog::ReplaceHexaDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f) + HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_replace_hexa.html"; - setupUi( this ); - _initWidget(editmode); -// setFocusProxy( quads_lw ); + _helpFileName = "gui_replace_hexa.html"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( quads_lw ); } // ============================================================== Destructeur @@ -5727,162 +6202,186 @@ ReplaceHexaDialog::~ReplaceHexaDialog() */ QModelIndexList ReplaceHexaDialog::getAssocsVTK() { - QModelIndexList assocs; - QModelIndex iQuad; - QListWidgetItem* item = NULL; + QModelIndexList assocs; + QModelIndex iQuad; + QListWidgetItem* item = NULL; - //ListWidget content - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return assocs; - for ( int r = 0; r < quads_lw->count(); ++r ){ - item = quads_lw->item(r); -// iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); //unsafe - iQuad = _patternDataSelectionModel->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); - if ( iQuad.isValid() ) assocs << iQuad; - } - return assocs; + //ListWidget content + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return assocs; + for ( int r = 0; r < quads_lw->count(); ++r ){ + item = quads_lw->item(r); + // iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); //unsafe + iQuad = getPatternDataSelectionModel()->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); + if ( iQuad.isValid() ) assocs << iQuad; + } + return assocs; } // ============================================================== _initInputWidget void ReplaceHexaDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - c1_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - c2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - c3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + c1_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + c2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + c3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - p1_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - p2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - p3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + p1_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + p2_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + p3_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - name_le->installEventFilter(this); - c1_le->installEventFilter(this); - c2_le->installEventFilter(this); - c3_le->installEventFilter(this); +// name_le->installEventFilter(this); + c1_le->installEventFilter(this); + c2_le->installEventFilter(this); + c3_le->installEventFilter(this); - p1_le->installEventFilter(this); - p2_le->installEventFilter(this); - p3_le->installEventFilter(this); + p1_le->installEventFilter(this); + p2_le->installEventFilter(this); + p3_le->installEventFilter(this); - quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - quads_lw->installEventFilter(this); + quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + quads_lw->installEventFilter(this); - if ( editmode == NEW_MODE ){ - QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); - delQuadShortcut->setContext( Qt::WidgetShortcut ); + if ( editmode == NEW_MODE ){ + QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); + delQuadShortcut->setContext( Qt::WidgetShortcut ); - connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(deleteQuadItem()) ); - connect( quads_lw, SIGNAL(currentRowChanged(int)), this, SLOT(updateButtonBox(int)) ); - } + connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(deleteQuadItem()) ); + connect( quads_lw, SIGNAL(currentRowChanged(int)), this, SLOT(updateButtonBox(int)) ); + } - c1_le->setReadOnly(true); - c2_le->setReadOnly(true); - c3_le->setReadOnly(true); + c1_le->setReadOnly(true); + c2_le->setReadOnly(true); + c3_le->setReadOnly(true); - p1_le->setReadOnly(true); - p2_le->setReadOnly(true); - p3_le->setReadOnly(true); + p1_le->setReadOnly(true); + p2_le->setReadOnly(true); + p3_le->setReadOnly(true); - connect(quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel())); + connect(quads_lw, SIGNAL(itemSelectionChanged()), + this, SLOT(selectElementOfModel()), Qt::UniqueConnection); } // ============================================================== clear void ReplaceHexaDialog::clear() { +// name_le->clear(); + + quads_lw->clear(); + modelUnregister(quads_lw); + + p1_le->clear(); + modelUnregister(p1_le); + + p2_le->clear(); + modelUnregister(p2_le); + + p3_le->clear(); + modelUnregister(p3_le); + + c1_le->clear(); + modelUnregister(c1_le); + + c2_le->clear(); + modelUnregister(c2_le); + + c3_le->clear(); + modelUnregister(c3_le); + + modelUnregister(this); } // ============================================================== updateButtonBox void ReplaceHexaDialog::updateButtonBox() { - int nbQuad = quads_lw->count(); + int nbQuad = quads_lw->count(); - if ( nbQuad > 0 ){ - //_applyCloseButton->setEnabled(true); - _applyButton->setEnabled(true); - } else { - //_applyCloseButton->setEnabled(false); - _applyButton->setEnabled(false); - } + if ( nbQuad > 0 ){ + //_applyCloseButton->setEnabled(true); + _applyButton->setEnabled(true); + } else { + //_applyCloseButton->setEnabled(false); + _applyButton->setEnabled(false); + } } // ============================================================== deleteQuadItem void ReplaceHexaDialog::deleteQuadItem() { - delete quads_lw->currentItem(); - updateButtonBox(); + delete quads_lw->currentItem(); + updateButtonBox(); } // ============================================================== apply bool ReplaceHexaDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; - - QModelIndex ielts; //result - - QListWidgetItem* item = NULL; - QModelIndexList iquads; - QModelIndex iquad; - for ( int r = 0; r < quads_lw->count(); ++r){ - item = quads_lw->item(r); - iquad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - //std::cout << "iquad => " << iquad.data().toString().toStdString() << std::endl; - if ( iquad.isValid() ) - iquads << iquad; - } - - QModelIndex ic1 = patternDataModel->mapToSource( _index[c1_le] ); - QModelIndex ic2 = patternDataModel->mapToSource( _index[c2_le] ); - QModelIndex ic3 = patternDataModel->mapToSource( _index[c3_le] ); - - QModelIndex ip1 = patternDataModel->mapToSource( _index[p1_le] ); - QModelIndex ip2 = patternDataModel->mapToSource( _index[p2_le] ); - QModelIndex ip3 = patternDataModel->mapToSource( _index[p3_le] ); - - // std::cout << "nbHexa => " << nbHexa << std::endl; - - if ( ic1.isValid() && ic2.isValid() && ic3.isValid() - && ip1.isValid() && ip2.isValid() && ip3.isValid() ){ - ielts = _documentModel->replace( iquads, - ip1, ic1, - ip2, ic2, - ip3, ic3 ); - } + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; + + QModelIndex ielts; //result + + QListWidgetItem* item = NULL; + QModelIndexList iquads; + QModelIndex iquad; + for ( int r = 0; r < quads_lw->count(); ++r){ + item = quads_lw->item(r); + iquad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + //std::cout << "iquad => " << iquad.data().toString().toStdString() << std::endl; + if ( iquad.isValid() ) + iquads << iquad; + } + + QModelIndex ic1 = patternDataModel->mapToSource( _index[c1_le] ); + QModelIndex ic2 = patternDataModel->mapToSource( _index[c2_le] ); + QModelIndex ic3 = patternDataModel->mapToSource( _index[c3_le] ); + + QModelIndex ip1 = patternDataModel->mapToSource( _index[p1_le] ); + QModelIndex ip2 = patternDataModel->mapToSource( _index[p2_le] ); + QModelIndex ip3 = patternDataModel->mapToSource( _index[p3_le] ); + + // std::cout << "nbHexa => " << nbHexa << std::endl; + + if ( ic1.isValid() && ic2.isValid() && ic3.isValid() + && ip1.isValid() && ip2.isValid() && ip3.isValid() ){ + ielts = getDocumentModel()->replace( iquads, + ip1, ic1, + ip2, ic2, + ip3, ic3 ); + } + + if ( !ielts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT REPLACE HEXA" ) ); + return false; + } + _value = ielts.model()->data(ielts, HEXA_DATA_ROLE).value(); - if ( !ielts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT REPLACE HEXA" ) ); - return false; - } - _value = ielts.model()->data(ielts, HEXA_DATA_ROLE).value(); - - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( ielts, newName ); +// QString newName = name_le->text(); +// if ( !newName.isEmpty() )/*{*/ +// getDocumentModel()->setName( ielts, newName ); +// +// updateDefaultName(name_le, ielts); - result = patternBuilderModel->mapFromSource(ielts); + result = patternBuilderModel->mapFromSource(ielts); - //update the list (indexes) - for ( int r = 0; r < quads_lw->count(); ++r ){ - item = quads_lw->item(r); - iquad = _patternDataSelectionModel->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); - item->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(iquad) ); - } + //update the list (indexes) + for ( int r = 0; r < quads_lw->count(); ++r ){ + item = quads_lw->item(r); + iquad = getPatternDataSelectionModel()->indexBy(HEXA_DATA_ROLE, item->data(LW_DATA_ROLE)); + item->setData( LW_QMODELINDEX_ROLE, QVariant::fromValue(iquad) ); + item->setData(LW_DATA_ROLE, iquad.data(HEXA_DATA_ROLE)); + } - return true; + return true; } @@ -5893,12 +6392,12 @@ bool ReplaceHexaDialog::apply(QModelIndex& result) // ============================================================== Constructeur QuadRevolutionDialog::QuadRevolutionDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f) + HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_quad_revolution.html"; - setupUi( this ); - _initWidget(editmode); -// setFocusProxy( quads_lw ); + _helpFileName = "gui_quad_revolution.html"; + setupUi( this ); + _initWidget(editmode); + // setFocusProxy( quads_lw ); } // ============================================================== getAssocsVTK @@ -5907,20 +6406,21 @@ QuadRevolutionDialog::QuadRevolutionDialog( QWidget* parent, Mode editmode, Qt:: */ QModelIndexList QuadRevolutionDialog::getAssocsVTK() { - QModelIndexList assocs; - QModelIndex iQuad; - QListWidgetItem* item = NULL; + QModelIndexList assocs; + QModelIndex iQuad; + QListWidgetItem* item = NULL; + if (getPatternDataSelectionModel() == NULL) return assocs; - //ListWidget content - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternDataModel ) return assocs; - for ( int r = 0; r < quads_lw->count(); ++r ){ - item = quads_lw->item(r); - iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iQuad.isValid() ) - assocs << iQuad; - } - return assocs; + //ListWidget content + const PatternDataModel* patternDataModel = getPatternDataModel(); + if ( !patternDataModel ) return assocs; + for ( int r = 0; r < quads_lw->count(); ++r ){ + item = quads_lw->item(r); + iQuad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iQuad.isValid() ) + assocs << iQuad; + } + return assocs; } // ============================================================== Destructeur @@ -5931,149 +6431,163 @@ QuadRevolutionDialog::~QuadRevolutionDialog() // ============================================================== _initInputWidget void QuadRevolutionDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - center_pt_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - axis_vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); + center_pt_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + axis_vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + quads_lw->setProperty( "HexaWidgetType", QVariant::fromValue(QUAD_TREE) ); - center_pt_le->setValidator( validator ); - axis_vec_le->setValidator( validator ); - // quads_lw->setValidator( validator ); + center_pt_le->setValidator( validator ); + axis_vec_le->setValidator( validator ); + // quads_lw->setValidator( validator ); - name_le->installEventFilter(this); - center_pt_le->installEventFilter(this); - axis_vec_le->installEventFilter(this); - quads_lw->installEventFilter(this); +// name_le->installEventFilter(this); + center_pt_le->installEventFilter(this); + axis_vec_le->installEventFilter(this); + quads_lw->installEventFilter(this); - if ( editmode == NEW_MODE ){ - angles_lw->setItemDelegate( new HexaAngleDoubleSpinBoxDelegate(angles_lw) ); - angles_lw->setEditTriggers( QAbstractItemView::DoubleClicked ); + if ( editmode == NEW_MODE ){ + angles_lw->setItemDelegate( new HexaAngleDoubleSpinBoxDelegate(angles_lw) ); + angles_lw->setEditTriggers( QAbstractItemView::DoubleClicked ); - QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); - delQuadShortcut->setContext( Qt::WidgetShortcut ); - connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(delQuadItem()) ); - connect( add_angle_pb, SIGNAL(clicked()), this, SLOT(addAngleItem())); - connect( del_angle_pb, SIGNAL(clicked()), this, SLOT(delAngleItem())); - // connect(clear_pb, SIGNAL(clicked()), this, SLOT(clearQuads())); - } + QShortcut* delQuadShortcut = new QShortcut( QKeySequence(Qt::Key_X), quads_lw ); + delQuadShortcut->setContext( Qt::WidgetShortcut ); + connect( delQuadShortcut, SIGNAL(activated()), this, SLOT(delQuadItem()) ); + connect( add_angle_pb, SIGNAL(clicked()), this, SLOT(addAngleItem())); + connect( del_angle_pb, SIGNAL(clicked()), this, SLOT(delAngleItem())); + // connect(clear_pb, SIGNAL(clicked()), this, SLOT(clearQuads())); + } - center_pt_le->setReadOnly(true); - axis_vec_le->setReadOnly(true); + center_pt_le->setReadOnly(true); + axis_vec_le->setReadOnly(true); - connect(quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel())); + connect(quads_lw, SIGNAL(itemSelectionChanged()), this, SLOT(selectElementOfModel()), Qt::UniqueConnection); } // ============================================================== clear void QuadRevolutionDialog::clear() { +// name_le->clear(); + + quads_lw->clear(); + modelUnregister(quads_lw); + + center_pt_le->clear(); + modelUnregister(center_pt_le); + + axis_vec_le->clear(); + modelUnregister(axis_vec_le); + + angles_lw->clear(); + modelUnregister(angles_lw); + + modelUnregister(this); } // ============================================================== updateButtonBox void QuadRevolutionDialog::updateButtonBox() //CS_TODO? : check center, axis { - int nbQuads = quads_lw->count(); - int nbAngles = angles_lw->count(); + int nbQuads = quads_lw->count(); + int nbAngles = angles_lw->count(); - if ( nbQuads>0 && nbAngles> 0 ){ - //_applyCloseButton->setEnabled(true); - _applyButton->setEnabled(true); - } else { - //_applyCloseButton->setEnabled(false); - _applyButton->setEnabled(false); - } + if ( nbQuads>0 && nbAngles> 0 ){ + //_applyCloseButton->setEnabled(true); + _applyButton->setEnabled(true); + } else { + //_applyCloseButton->setEnabled(false); + _applyButton->setEnabled(false); + } } // ============================================================== addAngleItem void QuadRevolutionDialog::addAngleItem() //CS_TODO { - QListWidgetItem* previousItem = angles_lw->currentItem(); - QListWidgetItem* newItem = new QListWidgetItem(); + QListWidgetItem* previousItem = angles_lw->currentItem(); + QListWidgetItem* newItem = new QListWidgetItem(); - double defaultValue = 0.; - if ( previousItem ) - defaultValue = previousItem->data(Qt::EditRole).toDouble(); + double defaultValue = 180.; + if ( previousItem ) + defaultValue = previousItem->data(Qt::EditRole).toDouble(); - newItem->setData( Qt::EditRole, QVariant(defaultValue) ); - newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); - angles_lw->addItem(newItem); + newItem->setData( Qt::EditRole, QVariant(defaultValue) ); + newItem->setFlags( newItem->flags () | Qt::ItemIsEditable); + angles_lw->addItem(newItem); - updateButtonBox(); + updateButtonBox(); } // ============================================================== delAngleItem void QuadRevolutionDialog::delAngleItem() { - delete angles_lw->currentItem(); - updateButtonBox(); + delete angles_lw->currentItem(); + updateButtonBox(); } // ============================================================== delQuadItem void QuadRevolutionDialog::delQuadItem() { - delete quads_lw->currentItem(); - updateButtonBox(); + delete quads_lw->currentItem(); + updateButtonBox(); } // ============================================================== apply bool QuadRevolutionDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_patternDataSelectionModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - if ( !patternDataModel ) return false; - if ( !patternBuilderModel ) return false; - - QModelIndex ielts; //result - QListWidgetItem* item = NULL; - - QModelIndexList istartquads; - QModelIndex iquad; - for ( int r = 0; r < quads_lw->count(); ++r){ - item = quads_lw->item(r); - iquad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); - if ( iquad.isValid() ) - istartquads << iquad; - } - - QModelIndex icenter_pt = patternDataModel->mapToSource( _index[center_pt_le] ); - QModelIndex iaxis_vec = patternBuilderModel->mapToSource( _index[axis_vec_le] ); + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; + + QModelIndex ielts; //result + QListWidgetItem* item = NULL; + + QModelIndexList istartquads; + QModelIndex iquad; + for ( int r = 0; r < quads_lw->count(); ++r){ + item = quads_lw->item(r); + iquad = patternDataModel->mapToSource( item->data(LW_QMODELINDEX_ROLE).value() ); + if ( iquad.isValid() ) + istartquads << iquad; + } + + QModelIndex icenter_pt = patternDataModel->mapToSource( _index[center_pt_le] ); + QModelIndex iaxis_vec = patternBuilderModel->mapToSource( _index[axis_vec_le] ); + + QList angles; + for ( int r = 0; r < angles_lw->count(); ++r){ + item = angles_lw->item(r); + angles << item->data(Qt::EditRole).toDouble(); + } + + if ( icenter_pt.isValid() && iaxis_vec.isValid() ){ + ielts = getDocumentModel()->revolutionQuads( istartquads, icenter_pt, iaxis_vec, angles ); + } + + if ( !ielts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE QUAD REVOLUTION" ) ); + return false; + } + _value = ielts.model()->data(ielts, HEXA_DATA_ROLE).value(); - QList angles; - for ( int r = 0; r < angles_lw->count(); ++r){ - item = angles_lw->item(r); - angles << item->data(Qt::EditRole).toDouble(); - } - - if ( icenter_pt.isValid() && iaxis_vec.isValid() ){ - ielts = _documentModel->revolutionQuads( istartquads, icenter_pt, iaxis_vec, angles ); - } - - if ( !ielts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE QUAD REVOLUTION" ) ); - return false; - } - _value = ielts.model()->data(ielts, HEXA_DATA_ROLE).value(); - - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( ielts, newName ); +// QString newName = name_le->text(); +// if ( !newName.isEmpty() )/*{*/ +// getDocumentModel()->setName( ielts, newName ); +// +// updateDefaultName(name_le, ielts); - result = patternBuilderModel->mapFromSource(ielts); + result = patternBuilderModel->mapFromSource(ielts); - return true; + return true; } @@ -6083,11 +6597,11 @@ bool QuadRevolutionDialog::apply(QModelIndex& result) // ============================================================== Constructeur MakeHemiSphereDialog::MakeHemiSphereDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): - HexaBaseDialog(parent, editmode, f) + HexaBaseDialog(parent, editmode, f) { - _helpFileName = "gui_hemisphere.html"; - setupUi( this ); - _initWidget(editmode); + _helpFileName = "gui_hemisphere.html"; + setupUi( this ); + _initWidget(editmode); } // ============================================================== Destructeur @@ -6098,213 +6612,280 @@ MakeHemiSphereDialog::~MakeHemiSphereDialog() // ============================================================== _initInputWidget void MakeHemiSphereDialog::_initInputWidget( Mode editmode ) { - QRegExp rx(""); - QValidator *validator = new QRegExpValidator(rx, this); + QRegExp rx(""); + QValidator *validator = new QRegExpValidator(rx, this); - setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); - installEventFilter(this); +// setProperty( "HexaWidgetType", QVariant::fromValue(ELEMENTS_TREE) ); + installEventFilter(this); - sphere_center_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - cross_pt_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); - hole_axis_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - cross_vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - radial_vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + sphere_center_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + cross_pt_le->setProperty( "HexaWidgetType", QVariant::fromValue(VERTEX_TREE) ); + hole_axis_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + cross_vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); + radial_vec_le->setProperty( "HexaWidgetType", QVariant::fromValue(VECTOR_TREE) ); - sphere_center_le->setValidator( validator ); - cross_pt_le->setValidator( validator ); - hole_axis_le->setValidator( validator ); - cross_vec_le->setValidator( validator ); - radial_vec_le->setValidator( validator ); + sphere_center_le->setValidator( validator ); + cross_pt_le->setValidator( validator ); + hole_axis_le->setValidator( validator ); + cross_vec_le->setValidator( validator ); + radial_vec_le->setValidator( validator ); - name_le->installEventFilter(this); - sphere_center_le->installEventFilter(this); - cross_pt_le->installEventFilter(this); - hole_axis_le->installEventFilter(this); - cross_vec_le->installEventFilter(this); - radial_vec_le->installEventFilter(this); +// name_le->installEventFilter(this); + sphere_center_le->installEventFilter(this); + cross_pt_le->installEventFilter(this); + hole_axis_le->installEventFilter(this); + cross_vec_le->installEventFilter(this); + radial_vec_le->installEventFilter(this); - sphere_center_le->setReadOnly(true); - cross_pt_le->setReadOnly(true); - hole_axis_le->setReadOnly(true); - cross_vec_le->setReadOnly(true); - radial_vec_le->setReadOnly(true); + sphere_center_le->setReadOnly(true); + cross_pt_le->setReadOnly(true); + hole_axis_le->setReadOnly(true); + cross_vec_le->setReadOnly(true); + radial_vec_le->setReadOnly(true); } // ============================================================== clear void MakeHemiSphereDialog::clear() { + sphere_center_le->clear(); + modelUnregister(sphere_center_le); + + hole_axis_le->clear(); + modelUnregister(hole_axis_le); + + cross_pt_le->clear(); + modelUnregister(cross_pt_le); + + cross_vec_le->clear(); + modelUnregister(cross_vec_le); + + radial_vec_le->clear(); + modelUnregister(radial_vec_le); + + modelUnregister(this); } // ============================================================== apply bool MakeHemiSphereDialog::apply(QModelIndex& result) { - if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); - _currentObj = NULL; - - SUIT_OverrideCursor wc; - if ( !_documentModel ) return false; - if ( !_patternBuilderSelectionModel ) return false; - if ( !_patternDataSelectionModel ) return false; - const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); - const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); - if ( !patternBuilderModel ) return false; - if ( !patternDataModel ) return false; - - QModelIndex iElts; - QModelIndex icenter = patternDataModel->mapToSource( _index[sphere_center_le] ); - QModelIndex iplorig = patternDataModel->mapToSource( _index[cross_pt_le] ); - QModelIndex ivecx = patternBuilderModel->mapToSource( _index[radial_vec_le] ); - QModelIndex ivecz = patternBuilderModel->mapToSource( _index[hole_axis_le] ); - - double radext = sphere_radext_spb->value(); - double radhole = hole_rad_spb->value(); - - int nrad = ngrid_rad_spb->value(); - int nang = ngrid_ang_spb->value(); - int nhaut = ngrid_height_spb->value(); - - - if ( icenter.isValid() && ivecx.isValid() && ivecz.isValid() && iplorig.isValid() ){ - if ( sphere_rind_cb->isChecked() ){ // rind - double radint = sphere_radint_spb->value(); - if ( radial_partial_cb->isChecked() ){ - double angle = radial_angle_spb->value(); - iElts = _documentModel->makePartRind( icenter, ivecx, ivecz, - radext, radint, radhole, - iplorig, angle, - nrad, nang, nhaut ); - } else { - iElts = _documentModel->makeRind( icenter, - ivecx, ivecz, - radext, radint, radhole, - iplorig, - nrad, nang, nhaut ); - } - } else { // sphere - if ( radial_partial_cb->isChecked() ){ - double angle = radial_angle_spb->value(); - iElts = _documentModel->makePartSphere( icenter, ivecx, ivecz, - radext, radhole, - iplorig, angle, - nrad, nang, nhaut ); - } else { - iElts = _documentModel->makeSphere( icenter, - ivecx, ivecz, - radext, radhole, - iplorig, - nrad, nang, nhaut ); - } - } - } - - - if ( !iElts.isValid() ){ - SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE RIND" ) ); - return false; - } - _value = iElts.model()->data(iElts, HEXA_DATA_ROLE).value(); - - QString newName = name_le->text(); - if ( !newName.isEmpty() )/*{*/ - _documentModel->setName( iElts, newName ); - - result = patternBuilderModel->mapFromSource(iElts); - - return true; -} -// ============================================================== - - -// MakeRindDialog::MakeRindDialog( QWidget* parent, Mode editmode, Qt::WindowFlags f ): -// HexaBaseDialog(parent, editmode, f) -// { -// // _helpFileName() -// setupUi( this ); -// setWindowTitle( tr("MAKE RIND") ); -// -// if ( editmode == NEW_MODE ){ -// _initButtonBox( editmode ); -// -// //selection management -// _vertexLineEdits << center_le << plorig_le; -// _vectorLineEdits << vx_le << vz_le; -// -// center_le->installEventFilter(this); -// plorig_le->installEventFilter(this); -// vx_le->installEventFilter(this); -// vz_le->installEventFilter(this); -// } -// } -// -// -// MakeRindDialog::~MakeRindDialog() -// { -// } -// -// -// -// bool MakeRindDialog::apply(QModelIndex& result) -// { -// if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); -// _currentObj = NULL; -// -// SUIT_OverrideCursor wc; -// if ( !_documentModel ) return false; -// if ( !_patternBuilderSelectionModel ) return false; -// if ( !_patternDataSelectionModel ) return false; -// const PatternBuilderModel* patternBuilderModel = dynamic_cast( _patternBuilderSelectionModel->model() ); -// const PatternDataModel* patternDataModel = dynamic_cast( _patternDataSelectionModel->model() ); -// if ( !patternBuilderModel ) return false; -// if ( !patternDataModel ) return false; -// -// QModelIndex iElts; -// QModelIndex icenter = patternDataModel->mapToSource( _index[center_le] ); -// QModelIndex iplorig = patternDataModel->mapToSource( _index[plorig_le] ); -// QModelIndex ivecx = patternBuilderModel->mapToSource( _index[vx_le] ); -// QModelIndex ivecz = patternBuilderModel->mapToSource( _index[vz_le] ); -// -// double radext = radext_spb->value(); -// double radint = radint_spb->value(); -// double radhole = radhole_spb->value(); -// -// int nrad = nrad_spb->value(); -// int nang = nang_spb->value(); -// int nhaut = nhaut_spb->value(); -// -// if ( icenter.isValid() && ivecx.isValid() && ivecz.isValid() && iplorig.isValid() ){ -// if ( partial_cb->isChecked() ){ -// double angle = angle_spb->value(); // Part Rind only -// iElts = _documentModel->makePartRind( icenter, ivecx, ivecz, -// radext, radint, radhole, -// iplorig, angle, -// nrad, nang, nhaut ); -// } else { -// iElts = _documentModel->makeRind( icenter, -// ivecx, ivecz, -// radext, radint, radhole, -// iplorig, -// nrad, nang, nhaut ); -// } -// } -// -// if ( !iElts.isValid() ){ -// SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE RIND" ) ); -// return false; -// } -// + if (_currentObj != NULL) _highlightWidget(_currentObj, Qt::white); + _currentObj = NULL; + + SUIT_OverrideCursor wc; + if ( !getDocumentModel() ) return false; + const PatternDataModel* patternDataModel = getPatternDataModel(); + const PatternBuilderModel* patternBuilderModel = getPatternBuilderModel(); + if ( !patternDataModel || !patternBuilderModel) return false; + + QModelIndex iElts; + QModelIndex icenter = patternDataModel->mapToSource( _index[sphere_center_le] ); + QModelIndex iplorig = patternDataModel->mapToSource( _index[cross_pt_le] ); + QModelIndex ivecx = patternBuilderModel->mapToSource( _index[radial_vec_le] ); + QModelIndex ivecz = patternBuilderModel->mapToSource( _index[hole_axis_le] ); + + double radext = sphere_radext_spb->value(); + double radhole = hole_rad_spb->value(); + + int nrad = ngrid_rad_spb->value(); + int nang = ngrid_ang_spb->value(); + int nhaut = ngrid_height_spb->value(); + + + if ( icenter.isValid() && ivecx.isValid() && ivecz.isValid() && iplorig.isValid() ){ + if ( sphere_rind_cb->isChecked() ){ // rind + double radint = sphere_radint_spb->value(); + if ( radial_partial_cb->isChecked() ){ + double angle = radial_angle_spb->value(); + iElts = getDocumentModel()->makePartRind( icenter, ivecx, ivecz, + radext, radint, radhole, + iplorig, angle, + nrad, nang, nhaut ); + } else { + iElts = getDocumentModel()->makeRind( icenter, + ivecx, ivecz, + radext, radint, radhole, + iplorig, + nrad, nang, nhaut ); + } + } else { // sphere + if ( radial_partial_cb->isChecked() ){ + double angle = radial_angle_spb->value(); + iElts = getDocumentModel()->makePartSphere( icenter, ivecx, ivecz, + radext, radhole, + iplorig, angle, + nrad, nang, nhaut ); + } else { + iElts = getDocumentModel()->makeSphere( icenter, + ivecx, ivecz, + radext, radhole, + iplorig, + nrad, nang, nhaut ); + } + } + } + + + if ( !iElts.isValid() ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), tr( "CANNOT MAKE RIND" ) ); + return false; + } + _value = iElts.model()->data(iElts, HEXA_DATA_ROLE).value(); + // QString newName = name_le->text(); -// if (!newName.isEmpty()) _documentModel->setName( iElts, newName ); +// if ( !newName.isEmpty() )/*{*/ +// getDocumentModel()->setName( iElts, newName ); // -// return true; -// } +// updateDefaultName(name_le, iElts); + + result = patternBuilderModel->mapFromSource(iElts); + + return true; +} + +// ------------------------- ModelInfoDialog ---------------------------------- -// QVariant v = lineEdit->property("index"); -// if ( v.isValid() ){ -// MESSAGE("* get index ... " ); -// QModelIndex i = v.value(); -// _selectionMutex = true; -// _patternDataSelectionModel->select( i, QItemSelectionModel::Clear ); -// _patternDataSelectionModel->select( i, QItemSelectionModel::Select ); -// _selectionMutex = false; -// } +ModelInfoDialog::ModelInfoDialog(QWidget* parent, Qt::WindowFlags wf): + HexaBaseDialog(parent, INFO_MODE, wf) +{ + setupUi( this ); + setWindowTitle(HEXABLOCKGUI::tr("MODEL_INFO")); +} + +void ModelInfoDialog::updateInfo() +{ + DocumentModel* docModel = getDocumentModel(); + if (docModel == NULL) return; + + //Model name + model_name_le->setText(docModel->getName()); + + //Nb of elements in the model + total_vertices_le->setText(QString::number(docModel->getNbrElt(HEXA_NS::EL_VERTEX))); + total_edges_le->setText(QString::number(docModel->getNbrElt(HEXA_NS::EL_EDGE))); + total_quads_le->setText(QString::number(docModel->getNbrElt(HEXA_NS::EL_QUAD))); + total_hexas_le->setText(QString::number(docModel->getNbrElt(HEXA_NS::EL_HEXA))); + + ///Nb of used elements in the model + used_vertices_le->setText(QString::number(docModel->getNbrUsedElt(HEXA_NS::EL_VERTEX))); + used_edges_le->setText(QString::number(docModel->getNbrUsedElt(HEXA_NS::EL_EDGE))); + used_quads_le->setText(QString::number(docModel->getNbrUsedElt(HEXA_NS::EL_QUAD))); + used_hexas_le->setText(QString::number(docModel->getNbrUsedElt(HEXA_NS::EL_HEXA))); + + //Nb of unused elements in the model + unused_vertices_le->setText(QString::number(docModel->getNbrUnusedElt(HEXA_NS::EL_VERTEX))); + unused_edges_le->setText(QString::number(docModel->getNbrUnusedElt(HEXA_NS::EL_EDGE))); + unused_quads_le->setText(QString::number(docModel->getNbrUnusedElt(HEXA_NS::EL_QUAD))); + unused_hexas_le->setText(QString::number(docModel->getNbrUnusedElt(HEXA_NS::EL_HEXA))); +} + +void ModelInfoDialog::showEvent( QShowEvent * event ) +{ + updateInfo(); + QDialog::showEvent ( event ); +} + + +// ============================================================== hideEvent +void ModelInfoDialog::hideEvent ( QHideEvent * event ) +{ + QDialog::hideEvent( event ); +} + + +// ------------------------- AddShapeDialog ---------------------------------- + +AddShapeDialog::AddShapeDialog(QWidget* parent, Mode editmode, Qt::WindowFlags wf): + HexaBaseDialog(parent, editmode, wf) +{ + _helpFileName = ""; + setupUi( this ); + _initWidget(editmode); + setWindowTitle(HEXABLOCKGUI::tr("ADD_SHAPE")); + + currentGeomObj.nullify(); +} + +// ============================================================== Destructeur +AddShapeDialog::~AddShapeDialog() +{ + disconnect( HEXABLOCKGUI::selectionMgr(), SIGNAL(currentSelectionChanged()), + this, SLOT(onCurrentSelectionChanged()) ); +} + +// ============================================================== close +void AddShapeDialog::close() +{ + HEXABLOCKGUI::assocInProgress = false; + HexaBaseDialog::close(); +} + +// ============================================================== _initInputWidget +void AddShapeDialog::_initInputWidget( Mode editmode ) +{ + shape_le->setProperty( "HexaWidgetType", QVariant::fromValue(GEOMSHAPE_TREE) ); + shape_le->setProperty( "GeomWidgetType", QVariant::fromValue(TopAbs_SHAPE) ); + shape_le->installEventFilter(this); + shape_le->setReadOnly(true); +} + +void AddShapeDialog::clear() +{ + shape_le->clear(); + shape_le->setProperty("GeomObj", QVariant()); + currentGeomObj.nullify(); + + modelUnregister(this); +} + +// ============================================================== onCurrentSelectionChanged +void AddShapeDialog::onCurrentSelectionChanged() +{ + if ( !isVisible() ) return; + + SUIT_ViewWindow* window = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); + + bool isOCC = (window && window->getViewManager()->getType() == OCCViewer_Viewer::Type()); + if (!isOCC || getDocumentModel() == NULL) return; + + currentGeomObj = getSelected(TopAbs_SHAPE); + shape_le->setText(GEOMBase::GetName( currentGeomObj.get() )); + + DocumentModel::GeomObj* geomObj = getDocumentModel()->convertToGeomObj(currentGeomObj); + if (geomObj != NULL) + shape_le->setProperty("GeomObj", QVariant::fromValue(*geomObj)); +} + +// ============================================================== onWindowActivated +void AddShapeDialog::onWindowActivated(SUIT_ViewManager* vm) +{ + QString vmType = vm->getType(); + if ( vmType == OCCViewer_Viewer::Type() ){ + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), TopAbs_SHAPE); + shape_le->setFocus(); + } +} + + +// ============================================================== apply +bool AddShapeDialog::apply(QModelIndex& result) +{ + TopoDS_Shape aShape; + bool assocOK = false; + + if ( currentGeomObj && GEOMBase::GetShape(currentGeomObj.get(), aShape) && !aShape.IsNull() ) + { + QString shapeName = GEOMBase::GetName( currentGeomObj.get() ); + assocOK = getDocumentModel()->addShape(aShape, shapeName); + } + + if ( !assocOK ){ + SUIT_MessageBox::critical( this, tr( "ERR_ERROR" ), HEXABLOCKGUI::tr("ADD_SHAPE_FAILED") ); + return false; + } + + getDocumentModel()->clearGeometry(); + getDocumentModel()->fillGeometry(); + return true; +} diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.hxx index 9ecc174..62ab968 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.hxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentPanel.hxx @@ -73,6 +73,8 @@ #include "ui_MakeRind_QTD.h" #include "ui_ReplaceHexa_QTD.h" #include "ui_MakeHemiSphere_QTD.h" +#include "ui_ModelInfo_QTD.h" +#include "ui_AddShapeDialog_QTD.h" #include "MyGEOMBase_Helper.hxx" @@ -87,10 +89,13 @@ #include "HEXABLOCKGUI_DocumentSelectionModel.hxx" #include "HEXABLOCKGUI_DocumentModel.hxx" +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" // #include "HEXABLOCKGUI_SalomeTools.hxx" +#include "HEXABLOCKGUI.hxx" #include "klinkitemselectionmodel.hxx" + Q_DECLARE_METATYPE(QModelIndex); Q_DECLARE_METATYPE(HEXABLOCK::GUI::DocumentModel::GeomObj); Q_DECLARE_METATYPE(GEOM::GeomObjPtr); @@ -101,1018 +106,1091 @@ namespace HEXABLOCK { namespace GUI { - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT HexaBaseDialog : public QDialog, - public MyGEOMBase_Helper + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT HexaBaseDialog : public QDialog, public MyGEOMBase_Helper { - Q_OBJECT - - public: - enum Mode { - NEW_MODE, - INFO_MODE, - UPDATE_MODE - }; + Q_OBJECT - enum ViewType { - VTK, - OCC, - NONE - }; + public: + enum Mode { + NEW_MODE, + INFO_MODE, + UPDATE_MODE + }; - // define input widget type => usefull for selection - typedef HexaTreeRole HexaWidgetType; - typedef TopAbs_ShapeEnum/*int */GeomWidgetType; //CS_TODO + // define input widget type => usefull for selection + typedef HexaTreeRole HexaWidgetType; + typedef TopAbs_ShapeEnum/*int */GeomWidgetType; //CS_TODO -// TopAbs_ShapeEnum aType = TopAbs_EDGE; + // TopAbs_ShapeEnum aType = TopAbs_EDGE; - // listwidget - enum { - LW_QMODELINDEX_ROLE = Qt::UserRole + 1, + // listwidget + enum { + LW_QMODELINDEX_ROLE = Qt::UserRole + 1, LW_ASSOC_ROLE, LW_GEOM_OBJ_ROLE, LW_DATA_ROLE - }; - - HexaBaseDialog( QWidget * parent = 0, Mode editmode = NEW_MODE, Qt::WindowFlags f = 0 ); - virtual ~HexaBaseDialog(){}; - - // clear all input widget - virtual void clear(){}; - ViewType getObjectViewType(QObject* obj); + }; + + HexaBaseDialog( QWidget * parent = 0, Mode editmode = NEW_MODE, Qt::WindowFlags f = 0 ); + virtual ~HexaBaseDialog(){}; + + // clear all input widget + virtual void clear(){}; + + void connectDocumentGraphicView(VtkDocumentGraphicView* docGView = NULL); + void disconnectDocumentGraphicView(VtkDocumentGraphicView* docGView = NULL); + + SVTK_ViewWindow* getCurrentVtkView() const { + return HEXABLOCKGUI::currentDocGView->getViewWindow(); + } + + //get model + DocumentModel* getDocumentModel() const { + return HEXABLOCKGUI::currentDocGView->getDocumentModel(); + } + + PatternDataModel* getPatternDataModel() const { + return HEXABLOCKGUI::currentDocGView->getPatternDataModel(); + } + + PatternGeomModel* getPatternGeomModel() const { + return HEXABLOCKGUI::currentDocGView->getPatternGeomModel(); + } + + PatternBuilderModel* getPatternBuilderModel() const { + return HEXABLOCKGUI::currentDocGView->getPatternBuilderModel(); + } + + GroupsModel* getGroupsModel() const { + return HEXABLOCKGUI::currentDocGView->getGroupsModel(); + } + + MeshModel* getMeshModel() const { + return HEXABLOCKGUI::currentDocGView->getMeshModel(); + } - // model - virtual void setDocumentModel( DocumentModel* m ){ _documentModel = m;} + //get selection patterns from the current graphic view + PatternDataSelectionModel* getPatternDataSelectionModel() const { + return HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel(); + } - // selection - virtual void setPatternDataSelectionModel( PatternDataSelectionModel* s ) - { _patternDataSelectionModel = s;} + PatternBuilderSelectionModel* getPatternBuilderSelectionModel() const { + return HEXABLOCKGUI::currentDocGView->getPatternBuilderSelectionModel(); + } - virtual void setPatternBuilderSelectionModel( PatternBuilderSelectionModel* s ) - { _patternBuilderSelectionModel = s; } + PatternGeomSelectionModel* getPatternGeomSelectionModel() const { + return HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel(); + } - virtual void setGroupsSelectionModel( GroupsSelectionModel* s ) - { _groupsSelectionModel = s; } + GroupsSelectionModel* getGroupsSelectionModel() const { + return HEXABLOCKGUI::currentDocGView->getGroupsSelectionModel(); + } - virtual void setMeshSelectionModel( MeshSelectionModel* s ) - { _meshSelectionModel = s; } + MeshSelectionModel* getMeshSelectionModel() const { + return HEXABLOCKGUI::currentDocGView->getMeshSelectionModel(); + } - void resetSizeAndShow(QDockWidget* parent); - void lockSizeToSizeHint(); - void unlockSizeModification(); - virtual QModelIndexList getAssocsVTK() - { - QModelIndexList assocs; - return assocs; - } - virtual QMultiMap getAssocsGEOM() - { - QMultiMap assocs; - return assocs; - } - void clearVTKSelection(); - void clearOCCSelection(); + HEXABLOCKGUI::ViewType getObjectViewType(QObject* obj); + void modelUnregister(QWidget* widget); //unlink the widget from the model + void resetSizeAndShow(QDockWidget* parent); + void lockSizeToSizeHint(); + void unlockSizeModification(); + virtual QModelIndexList getAssocsVTK() + { + QModelIndexList assocs; + return assocs; + } + virtual QMultiMap getAssocsGEOM() + { + QMultiMap assocs; + return assocs; + } + virtual void setCurrentGeomObj(DocumentModel::GeomObj* geomObj) {} - bool debugEdgeAssoc; //Temporary + bool debugEdgeAssoc; //Temporary + bool autoFocusSwitch; - public slots: - //virtual void accept(); - virtual bool apply(); - virtual void close(); - virtual void onHelpRequested(); + public slots: + //virtual void accept(); + virtual bool apply(); + virtual void close(); + virtual void onHelpRequested(); + void highlightSelectedAssocs(); + void refreshHighlight(); + virtual void onWindowActivated(SUIT_ViewManager*){}; + void clearVTKSelection(); + void clearOCCSelection(); + void clearCurrentObjectFocus(); - protected: - virtual bool eventFilter(QObject *obj, QEvent *event); - virtual void hideEvent ( QHideEvent * event ); - virtual void showEvent ( QShowEvent * event ); - virtual bool apply(QModelIndex& result) = 0; + protected: + virtual bool eventFilter(QObject *obj, QEvent *event); + virtual void hideEvent ( QHideEvent * event ); + virtual void showEvent ( QShowEvent * event ); + virtual bool apply(QModelIndex& result) = 0; - virtual void _initInputWidget( Mode editmode )=0; //must be implemented on inherited dialog box - virtual QGroupBox* _initButtonBox( Mode editmode ); - void _initWidget( Mode editmode ); // call _initInputWidget() & _initButtonBox() - QModelIndexList getIndexList(QListWidget* itemsList); + //Gives a default name to an element according to the last created + void updateDefaultName(QLineEdit* name_field, HEXA_NS::EnumElt type); + DocumentModel::GeomObj* getGeomObj(const QModelIndex& index); - void _initViewManager(); + virtual void _initInputWidget( Mode editmode )=0; //must be implemented on inherited dialog box + virtual QGroupBox* _initButtonBox( Mode editmode ); + void _initWidget( Mode editmode ); // call _initInputWidget() & _initButtonBox() + QModelIndexList getIndexList(QListWidget* itemsList); - void _allowSelection(); - void _disallowSelection(); - QItemSelectionModel* _allowSelection( HexaWidgetType wtype ); + void _initViewManager(); - bool _allowVTKSelection( QObject* obj ); - bool _allowOCCSelection( QObject* obj ); - void setOCCSelectionMode(TopAbs_ShapeEnum mode); - QItemSelectionModel* _getSelector( QObject* obj ); + void _allowSelection(); + void _disallowSelection(); + QItemSelectionModel* _allowSelection( HexaWidgetType wtype ); + bool _allowVTKSelection( QObject* obj ); + bool _allowOCCSelection( QObject* obj ); + QItemSelectionModel* _getSelector( QObject* obj ); - bool _onSelectionChanged( const QItemSelection& sel, QLineEdit* le ); - bool _onSelectionChanged( const QItemSelection& sel, QListWidget* lw ); - void _selectAndHighlight( const QModelIndex& i ); + bool _onSelectionChanged( const QItemSelection& sel, QLineEdit* le ); + bool _onSelectionChanged( const QItemSelection& sel, QListWidget* lw ); - void _highlightWidget(QObject* obj, Qt::GlobalColor clr); + void _selectAndHighlight( const QModelIndex& i ); - void setFocusToNextField(); + void _highlightWidget(QObject* obj, Qt::GlobalColor clr); - Mode _editMode; + void setFocusToNextField(); - DocumentModel* _documentModel; + void _updateCurrentObject(QObject*); - // user selection - PatternDataSelectionModel* _patternDataSelectionModel; - PatternBuilderSelectionModel* _patternBuilderSelectionModel; - GroupsSelectionModel* _groupsSelectionModel; - MeshSelectionModel* _meshSelectionModel; + Mode _editMode; - QMap _index; - QObject* _currentObj; + QMap _index; + QObject* _currentObj; - int _expectedSelection; - bool _selectionMutex; + int _expectedSelection; + bool _selectionMutex; - LightApp_SelectionMgr* _mgr; - SUIT_ViewManager* _vtkVm; - SUIT_ViewManager* _occVm; + QMap _strHexaWidgetType; - QMap _strHexaWidgetType; + //QPushButton* _applyCloseButton; + QPushButton* _applyButton; - //QPushButton* _applyCloseButton; - QPushButton* _applyButton; + QString _helpFileName; - QString _helpFileName; + private: + bool _isLineOrListWidget(QObject*); - private: - bool _isLineOrListWidget(QObject*); - void _updateCurrentObject(QObject*); - TopAbs_ShapeEnum currentOCCSelectionMode; - void refreshConnects(); - - - protected slots: - virtual void onSelectionChanged( const QItemSelection& sel, const QItemSelection& unsel ); //from qt model/view selectionManager - virtual void onCurrentSelectionChanged();//from salome selectionManager - virtual void onWindowActivated(SUIT_ViewManager*){}; - virtual void updateButtonBox(); - void updateName(); - virtual void selectElementOfModel(); - void highlightSelectedAssocs(); + protected slots: + virtual void onSelectionChanged( const QItemSelection& sel, const QItemSelection& unsel ); //from qt model/view selectionManager + virtual void onCurrentSelectionChanged();//from salome selectionManager + virtual void updateButtonBox(); + void updateName(); + virtual void selectElementOfModel(); }; class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT VertexDialog : public HexaBaseDialog, - public Ui::VertexDialog + public Ui::VertexDialog { Q_OBJECT - public: - VertexDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~VertexDialog(); + public: + VertexDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~VertexDialog(); - void clear(); + void clear(); - void setValue(HEXA_NS::Vertex* v); - HEXA_NS::Vertex* getValue(); + void setValue(HEXA_NS::Vertex* v); + HEXA_NS::Vertex* getValue(); - void setIndex(const QModelIndex& i); + void setIndex(const QModelIndex& i); - public slots: - virtual bool apply(QModelIndex& result); -// void updateName(); + public slots: + virtual bool apply(QModelIndex& result); + // void updateName(); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - private: - HEXA_NS::Vertex *_value; - QModelIndex _ivalue; + private: + HEXA_NS::Vertex *_value; + QModelIndex _ivalue; }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT EdgeDialog : public HexaBaseDialog, - public Ui::EdgeDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT EdgeDialog : public HexaBaseDialog, + public Ui::EdgeDialog + { Q_OBJECT - public: - EdgeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~EdgeDialog(); + public: + EdgeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~EdgeDialog(); - void clear(); + void clear(); - void setValue(HEXA_NS::Edge* e); - HEXA_NS::Edge* getValue(); + void setValue(HEXA_NS::Edge* e); + HEXA_NS::Edge* getValue(); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - public slots: - virtual bool apply(QModelIndex& result); -// void updateName(); + public slots: + virtual bool apply(QModelIndex& result); + // void updateName(); - private: - HEXA_NS::Edge *_value; - QModelIndex _ivalue; + private: + HEXA_NS::Edge *_value; + QModelIndex _ivalue; }; class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT QuadDialog : public HexaBaseDialog, - public Ui::QuadDialog + public Ui::QuadDialog { Q_OBJECT - public: - QuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~QuadDialog(); + public: + QuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~QuadDialog(); - void clear(); + void clear(); - void setValue(HEXA_NS::Quad* v); - HEXA_NS::Quad* getValue(); + void setValue(HEXA_NS::Quad* v); + HEXA_NS::Quad* getValue(); - public slots: - virtual bool apply(QModelIndex& result); -// void updateName(); + public slots: + virtual bool apply(QModelIndex& result); + // void updateName(); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - private: - HEXA_NS::Quad *_value; - QModelIndex _ivalue; + private: + HEXA_NS::Quad *_value; + QModelIndex _ivalue; }; class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT HexaDialog : public HexaBaseDialog, - public Ui::HexaDialog + public Ui::HexaDialog { Q_OBJECT - public: - HexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~HexaDialog(); + public: + HexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~HexaDialog(); - void clear(); - virtual QModelIndexList getAssocsVTK(); + void clear(); + virtual QModelIndexList getAssocsVTK(); - void setValue(HEXA_NS::Hexa* v); - HEXA_NS::Hexa* getValue(); + void setValue(HEXA_NS::Hexa* v); + HEXA_NS::Hexa* getValue(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void deleteQuadItem(); - void deleteVertexItem(); - void updateButtonBox(); + protected slots: + void deleteQuadItem(); + void deleteVertexItem(); + void updateButtonBox(); - private: - void _setValueQuads( HEXA_NS::Hexa* h ); - void _setValueVertices( HEXA_NS::Hexa* h ); + private: + void _setValueQuads( HEXA_NS::Hexa* h ); + void _setValueVertices( HEXA_NS::Hexa* h ); - HEXA_NS::Hexa *_value; - QModelIndex _ivalue; + HEXA_NS::Hexa *_value; + QModelIndex _ivalue; }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT VectorDialog : public HexaBaseDialog, - public Ui::VectorDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT VectorDialog : public HexaBaseDialog, + public Ui::VectorDialog + { Q_OBJECT - public: - VectorDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~VectorDialog(); + public: + VectorDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~VectorDialog(); - void clear(); + void clear(); - void setValue(HEXA_NS::Vector* v); - HEXA_NS::Vector* getValue(); + void setValue(HEXA_NS::Vector* v); + HEXA_NS::Vector* getValue(); - public slots: - virtual bool apply(QModelIndex& result); -// void updateName(); + public slots: + virtual bool apply(QModelIndex& result); + // void updateName(); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - private: - HEXA_NS::Vector *_value; - QModelIndex _ivalue; - }; + private: + HEXA_NS::Vector *_value; + QModelIndex _ivalue; + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT CylinderDialog : public HexaBaseDialog, - public Ui::CylinderDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT CylinderDialog : public HexaBaseDialog, + public Ui::CylinderDialog + { Q_OBJECT - public: - CylinderDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~CylinderDialog(); + public: + CylinderDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~CylinderDialog(); - void clear(); + void clear(); - void setValue( HEXA_NS::Cylinder* v ); - HEXA_NS::Cylinder* getValue(); + void setValue( HEXA_NS::Cylinder* v ); + HEXA_NS::Cylinder* getValue(); - public slots: - virtual bool apply(QModelIndex& result); -// void updateName(); + public slots: + virtual bool apply(QModelIndex& result); + // void updateName(); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - private: - HEXA_NS::Cylinder *_value; - QModelIndex _ivalue; + private: + HEXA_NS::Cylinder *_value; + QModelIndex _ivalue; }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PipeDialog : public HexaBaseDialog, - public Ui::PipeDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PipeDialog : public HexaBaseDialog, + public Ui::PipeDialog + { Q_OBJECT - public: - PipeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~PipeDialog(); + public: + PipeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~PipeDialog(); - void clear(); + void clear(); - void setValue( HEXA_NS::Pipe* p ); - HEXA_NS::Pipe* getValue(); + void setValue( HEXA_NS::Pipe* p ); + HEXA_NS::Pipe* getValue(); - public slots: - virtual bool apply(QModelIndex& result); -// void updateName(); + public slots: + virtual bool apply(QModelIndex& result); + // void updateName(); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - private: - HEXA_NS::Pipe *_value; - QModelIndex _ivalue; + private: + HEXA_NS::Pipe *_value; + QModelIndex _ivalue; }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeGridDialog : public HexaBaseDialog, - public Ui::MakeGridDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeGridDialog : public HexaBaseDialog, + public Ui::MakeGridDialog + { Q_OBJECT - public: - MakeGridDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MakeGridDialog(); + public: + MakeGridDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MakeGridDialog(); - void clear(); - - public slots: - virtual bool apply(QModelIndex& result); + void clear(); - protected: - void _initInputWidget( Mode editmode ); + public slots: + virtual bool apply(QModelIndex& result); - protected slots: - void addRadiusItem(); - void delRadiusItem(); - void addAngleItem(); - void delAngleItem(); - void addHeightItem(); - void delHeightItem(); - void updateButtonBox(); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void updateHelpFileName(); + protected slots: + void addRadiusItem(); + void delRadiusItem(); + void addAngleItem(); + void delAngleItem(); + void addHeightItem(); + void delHeightItem(); + void updateButtonBox(); + void updateHelpFileName(); - }; + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeCylinderDialog : public HexaBaseDialog, - public Ui::MakeCylinderDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeCylinderDialog : public HexaBaseDialog, + public Ui::MakeCylinderDialog + { Q_OBJECT - public: - MakeCylinderDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MakeCylinderDialog(); + public: + MakeCylinderDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MakeCylinderDialog(); - void clear(); + void clear(); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - public slots: - virtual bool apply(QModelIndex& result); - }; + public slots: + virtual bool apply(QModelIndex& result); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakePipeDialog : public HexaBaseDialog, - public Ui::MakePipeDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakePipeDialog : public HexaBaseDialog, + public Ui::MakePipeDialog + { Q_OBJECT - public: - MakePipeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MakePipeDialog(); + public: + MakePipeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MakePipeDialog(); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); - }; + protected: + void _initInputWidget( Mode editmode ); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeCylindersDialog : public HexaBaseDialog, - public Ui::MakeCylindersDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeCylindersDialog : public HexaBaseDialog, + public Ui::MakeCylindersDialog + { Q_OBJECT - public: - MakeCylindersDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MakeCylindersDialog(); + public: + MakeCylindersDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MakeCylindersDialog(); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); - }; + protected: + void _initInputWidget( Mode editmode ); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakePipesDialog : public HexaBaseDialog, - public Ui::MakePipesDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakePipesDialog : public HexaBaseDialog, + public Ui::MakePipesDialog + { Q_OBJECT - public: - MakePipesDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MakePipesDialog(); + public: + MakePipesDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MakePipesDialog(); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); - }; + protected: + void _initInputWidget( Mode editmode ); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT RemoveHexaDialog : public HexaBaseDialog, - public Ui::RemoveHexaDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT RemoveHexaDialog : public HexaBaseDialog, + public Ui::RemoveHexaDialog + { Q_OBJECT - public: - RemoveHexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~RemoveHexaDialog(); + public: + RemoveHexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~RemoveHexaDialog(); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); - }; + protected: + void _initInputWidget( Mode editmode ); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PrismQuadDialog : public HexaBaseDialog, - public Ui::PrismQuadDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PrismQuadDialog : public HexaBaseDialog, + public Ui::PrismQuadDialog + { Q_OBJECT - public: - PrismQuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~PrismQuadDialog(); - void clear(); - virtual QModelIndexList getAssocsVTK(); + public: + PrismQuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~PrismQuadDialog(); + void clear(); + virtual QModelIndexList getAssocsVTK(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void addHeightItem(); - void delHeightItem(); + protected slots: + void addHeightItem(); + void delHeightItem(); - private slots: - void addQuad(); - void removeQuad(); - void clearQuads(); + private slots: + void addQuad(); + void removeQuad(); + void clearQuads(); - }; + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT JoinQuadDialog : public HexaBaseDialog, - public Ui::JoinQuadDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT JoinQuadDialog : public HexaBaseDialog, + public Ui::JoinQuadDialog + { Q_OBJECT - public: - JoinQuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~JoinQuadDialog(); + public: + JoinQuadDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~JoinQuadDialog(); - void clear(); - virtual QModelIndexList getAssocsVTK(); + void clear(); + virtual QModelIndexList getAssocsVTK(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - private slots: - void addQuad(); - void removeQuad(); - void clearQuads(); + private slots: + void addQuad(); + void removeQuad(); + void clearQuads(); - }; + }; class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MergeDialog : public HexaBaseDialog, - public Ui::MergeDialog + public Ui::MergeDialog { Q_OBJECT - public: - MergeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MergeDialog(); + public: + MergeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MergeDialog(); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void updateHelpFileName(); + protected slots: + void updateHelpFileName(); - }; + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT DisconnectDialog : public HexaBaseDialog, - public Ui::DisconnectDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT DisconnectDialog : public HexaBaseDialog, + public Ui::DisconnectDialog + { Q_OBJECT - public: - DisconnectDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~DisconnectDialog(); + public: + DisconnectDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~DisconnectDialog(); - void clear(); + void clear(); + virtual QModelIndexList getAssocsVTK(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void updateHelpFileName(); - void deleteEdgeItem(); - void deleteHexaItem(); - }; + protected slots: + void updateHelpFileName(); + void deleteEdgeItem(); + void deleteHexaItem(); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT CutEdgeDialog : public HexaBaseDialog, - public Ui::CutEdgeDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT CutEdgeDialog : public HexaBaseDialog, + public Ui::CutEdgeDialog + { Q_OBJECT - public: - CutEdgeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~CutEdgeDialog(); + public: + CutEdgeDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~CutEdgeDialog(); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); - }; + protected: + void _initInputWidget( Mode editmode ); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeTransformationDialog : public HexaBaseDialog, - public Ui::TransformationDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeTransformationDialog : public HexaBaseDialog, + public Ui::TransformationDialog + { Q_OBJECT - public: - MakeTransformationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MakeTransformationDialog (); + public: + MakeTransformationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MakeTransformationDialog (); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void updateHelpFileName(); - }; + protected slots: + void updateHelpFileName(); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeSymmetryDialog : public HexaBaseDialog, - public Ui::SymmetryDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeSymmetryDialog : public HexaBaseDialog, + public Ui::SymmetryDialog + { Q_OBJECT - public: - MakeSymmetryDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MakeSymmetryDialog(); + public: + MakeSymmetryDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MakeSymmetryDialog(); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void updateHelpFileName(); - }; + protected slots: + void updateHelpFileName(); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PerformTransformationDialog : public HexaBaseDialog, - public Ui::TransformationDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PerformTransformationDialog : public HexaBaseDialog, + public Ui::TransformationDialog + { Q_OBJECT - public: - PerformTransformationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~PerformTransformationDialog (); + public: + PerformTransformationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~PerformTransformationDialog (); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void updateHelpFileName(); - }; + protected slots: + void updateHelpFileName(); + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PerformSymmetryDialog : public HexaBaseDialog, - public Ui::SymmetryDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PerformSymmetryDialog : public HexaBaseDialog, + public Ui::SymmetryDialog + { Q_OBJECT - public: - PerformSymmetryDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~PerformSymmetryDialog(); + public: + PerformSymmetryDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~PerformSymmetryDialog(); - void clear(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - void updateHelpFileName(); - }; + protected slots: + void updateHelpFileName(); + }; -// typedef class MyBasicGUI_PointDlg VertexAssocDialog; + // typedef class MyBasicGUI_PointDlg VertexAssocDialog; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT EdgeAssocDialog : public HexaBaseDialog, - public Ui::EdgeAssocDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT EdgeAssocDialog : public HexaBaseDialog, + public Ui::EdgeAssocDialog + { Q_OBJECT - public: - EdgeAssocDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~EdgeAssocDialog(); - void clear(); - virtual QModelIndexList getAssocsVTK(); - virtual QMultiMap getAssocsGEOM(); - - void setGeomEngine( GEOM::GEOM_Gen_var geomEngine ); + public: + EdgeAssocDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~EdgeAssocDialog(); + void clear(); + virtual QModelIndexList getAssocsVTK(); + virtual QMultiMap getAssocsGEOM(); + virtual void setCurrentGeomObj(DocumentModel::GeomObj* geomObj) { myLine = geomObj; } + void setGeomEngine( GEOM::GEOM_Gen_var geomEngine ); + + + public slots: + virtual bool apply(QModelIndex& result); + virtual void close(); + virtual void onWindowActivated(SUIT_ViewManager*); + + protected: + virtual void _initInputWidget( Mode editmode ); + // virtual void hideEvent ( QHideEvent * event ); + // virtual void showEvent ( QShowEvent * event ); + virtual GEOM::GEOM_IOperations_ptr createOperation(); + virtual bool execute( ObjectList& ); + + protected slots: + virtual void onCurrentSelectionChanged(); + // void onSelectionChanged( const QItemSelection& sel, const QItemSelection& unsel ); + virtual void selectElementOfGeom(); + void updateHelpFileName(); + + void deleteEdgeItem(); + void deleteLineItem(); + + void addLine(); + void pstartChanged( double val ); + void pendChanged( double val ); + + private: + // QModelIndexList currentAssocList; + // Preview in GEOM + // GEOM::GeomObjPtr _firstLine; + // GEOM::GeomObjPtr _lastLine; + GEOM::GeomObjPtr _currentLine; +// GEOM::GeomObjPtr myLine; + DocumentModel::GeomObj* myLine; + double _currentParameter; + GEOM::GEOM_Gen_var _geomEngine ; - public slots: - virtual bool apply(QModelIndex& result); + }; - protected: - virtual void _initInputWidget( Mode editmode ); -// virtual void hideEvent ( QHideEvent * event ); -// virtual void showEvent ( QShowEvent * event ); - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool execute( ObjectList& ); - protected slots: - virtual void onCurrentSelectionChanged(); -// void onSelectionChanged( const QItemSelection& sel, const QItemSelection& unsel ); - virtual void onWindowActivated(SUIT_ViewManager*); - virtual void selectElementOfGeom(); + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT QuadAssocDialog : public HexaBaseDialog, + public Ui::QuadAssocDialog + { + Q_OBJECT - void deleteEdgeItem(); - void deleteLineItem(); + public: + QuadAssocDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~QuadAssocDialog(); + void clear(); + virtual QModelIndexList getAssocsVTK(); + virtual QMultiMap getAssocsGEOM(); + + public slots: + virtual bool apply(QModelIndex& result); + virtual void close(); + virtual void onWindowActivated(SUIT_ViewManager*); + + protected: + virtual void _initInputWidget( Mode editmode ); + // virtual void hideEvent ( QHideEvent * event ); + // virtual void showEvent ( QShowEvent * event ); + + protected slots: + virtual void onCurrentSelectionChanged(); + void deleteFaceItem(); + virtual void selectElementOfGeom(); + + private: + QList _assocs; + QShortcut* _delFaceShortcut; + }; - void addLine(); - void pstartChanged( double val ); - void pendChanged( double val ); - private: -// QModelIndexList currentAssocList; - // Preview in GEOM -// GEOM::GeomObjPtr _firstLine; -// GEOM::GeomObjPtr _lastLine; - GEOM::GeomObjPtr _currentLine; - GEOM::GeomObjPtr myLine; - double _currentParameter; - GEOM::GEOM_Gen_var _geomEngine ; - }; + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT GroupDialog : public HexaBaseDialog, + public Ui::GroupDialog + { + Q_OBJECT + QMap strKind; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT QuadAssocDialog : public HexaBaseDialog, - public Ui::QuadAssocDialog - { - Q_OBJECT + public: + GroupDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~GroupDialog(); + void clear(); + virtual QModelIndexList getAssocsVTK(); - public: - QuadAssocDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~QuadAssocDialog(); - void clear(); - virtual QModelIndexList getAssocsVTK(); - virtual QMultiMap getAssocsGEOM(); + void setValue(HEXA_NS::Group* v); + HEXA_NS::Group* getValue(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - virtual void _initInputWidget( Mode editmode ); -// virtual void hideEvent ( QHideEvent * event ); -// virtual void showEvent ( QShowEvent * event ); + protected: + void _initInputWidget( Mode editmode ); - protected slots: - virtual void onCurrentSelectionChanged(); - virtual void onWindowActivated(SUIT_ViewManager*); - void deleteFaceItem(); - virtual void selectElementOfGeom(); + private slots: + // void addEltBase(); + void removeEltBase(); + // void clearEltBase(); + void onKindChanged( int index ); - private: - QList _assocs; - QShortcut* _delFaceShortcut; - }; + private: + HEXA_NS::Group *_value; + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT GroupDialog : public HexaBaseDialog, - public Ui::GroupDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT LawDialog : public HexaBaseDialog, + public Ui::LawDialog + { Q_OBJECT - QMap strKind; + QMap strKind; - public: - GroupDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~GroupDialog(); - void clear(); - virtual QModelIndexList getAssocsVTK(); + public: + LawDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~LawDialog(); + void clear(); - void setValue(HEXA_NS::Group* v); - HEXA_NS::Group* getValue(); + void setValue(HEXA_NS::Law* v); + HEXA_NS::Law* getValue(); - public slots: - virtual bool apply(QModelIndex& result); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - private slots: -// void addEltBase(); - void removeEltBase(); -// void clearEltBase(); - void onKindChanged( int index ); + private: + HEXA_NS::Law *_value; + }; - private: - HEXA_NS::Group *_value; - }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT LawDialog : public HexaBaseDialog, - public Ui::LawDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PropagationDialog : public HexaBaseDialog, + public Ui::PropagationDialog + { Q_OBJECT - QMap strKind; + public: + PropagationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~PropagationDialog(); + void clear(); - public: - LawDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~LawDialog(); - void clear(); + void setValue(HEXA_NS::Propagation* v); + HEXA_NS::Propagation* getValue(); - void setValue(HEXA_NS::Law* v); - HEXA_NS::Law* getValue(); + public slots: + virtual bool apply(QModelIndex& result); - public slots: - virtual bool apply(QModelIndex& result); + protected: + void _initInputWidget( Mode editmode ); - protected: - void _initInputWidget( Mode editmode ); + protected slots: + void updateHelpFileName(); + void deletePropagationItem(); + virtual void selectElementOfModel(); - private: - HEXA_NS::Law *_value; - }; + private: + HEXA_NS::Propagation *_value; + }; + // Define the compute mesh dialog box + // ---------------------------------- - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT PropagationDialog : public HexaBaseDialog, - public Ui::PropagationDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT ComputeMeshDialog : public HexaBaseDialog + { Q_OBJECT - public: - PropagationDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~PropagationDialog(); - void clear(); - - void setValue(HEXA_NS::Propagation* v); - HEXA_NS::Propagation* getValue(); - - public slots: - virtual bool apply(QModelIndex& result); + public: + ComputeMeshDialog( QWidget* parent = 0, Mode editmode = NEW_MODE, Qt::WindowFlags f = Qt::SubWindow ); + virtual ~ComputeMeshDialog(); + void clear(); - protected: - void _initInputWidget( Mode editmode ); + void setDocumentModel(DocumentModel* m); - protected slots: - void updateHelpFileName(); - void deletePropagationItem(); - virtual void selectElementOfModel(); + public slots: + virtual bool apply(QModelIndex& result); + // virtual void accept(); + // virtual void reject(); - private: - HEXA_NS::Propagation *_value; - }; + protected: + void _initInputWidget( Mode editmode ); + private: + QLineEdit* _name; + QSpinBox* _dim; + QLineEdit* _fact; + }; - // Define the compute mesh dialog box - // ---------------------------------- - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT ComputeMeshDialog : public HexaBaseDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT ReplaceHexaDialog : public HexaBaseDialog, + public Ui::ReplaceHexaDialog + { Q_OBJECT - public: - ComputeMeshDialog( QWidget* parent = 0, Mode editmode = NEW_MODE, Qt::WindowFlags f = Qt::SubWindow ); - virtual ~ComputeMeshDialog(); - void clear(); + public: + ReplaceHexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~ReplaceHexaDialog(); + void clear(); + virtual QModelIndexList getAssocsVTK(); - void setDocumentModel(DocumentModel* m); - public slots: - virtual bool apply(QModelIndex& result); -// virtual void accept(); -// virtual void reject(); + public slots: + virtual bool apply(QModelIndex& result); - protected: - void _initInputWidget( Mode editmode ); + protected: + void _initInputWidget( Mode editmode ); - private: - QLineEdit* _name; - QSpinBox* _dim; - QLineEdit* _fact; - }; + protected slots: + void deleteQuadItem(); + void updateButtonBox(); + private: + HEXA_NS::Elements *_value; + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT ReplaceHexaDialog : public HexaBaseDialog, - public Ui::ReplaceHexaDialog - { - Q_OBJECT - public: - ReplaceHexaDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~ReplaceHexaDialog(); - void clear(); - virtual QModelIndexList getAssocsVTK(); - public slots: - virtual bool apply(QModelIndex& result); + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT QuadRevolutionDialog : public HexaBaseDialog, + public Ui::QuadRevolutionDialog + { + Q_OBJECT - protected: - void _initInputWidget( Mode editmode ); + public: + QuadRevolutionDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~QuadRevolutionDialog(); + void clear(); + virtual QModelIndexList getAssocsVTK(); - protected slots: - void deleteQuadItem(); - void updateButtonBox(); + public slots: + virtual bool apply(QModelIndex& result); - private: - HEXA_NS::Elements *_value; - }; + protected: + void _initInputWidget( Mode editmode ); + protected slots: + void addAngleItem(); + void delAngleItem(); + void delQuadItem(); + void updateButtonBox(); + private: + HEXA_NS::Elements *_value; + }; - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT QuadRevolutionDialog : public HexaBaseDialog, - public Ui::QuadRevolutionDialog - { + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeHemiSphereDialog : public HexaBaseDialog, + public Ui::MakeHemiSphereDialog + { Q_OBJECT - public: - QuadRevolutionDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~QuadRevolutionDialog(); - void clear(); - virtual QModelIndexList getAssocsVTK(); + public: + MakeHemiSphereDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + virtual ~MakeHemiSphereDialog(); + void clear(); - public slots: - virtual bool apply(QModelIndex& result); + // void setValue(HEXA_NS::Propagation* v); + // HEXA_NS::Propagation* getValue(); - protected: - void _initInputWidget( Mode editmode ); + public slots: + virtual bool apply(QModelIndex& result); - protected slots: - void addAngleItem(); - void delAngleItem(); - void delQuadItem(); - void updateButtonBox(); + protected: + void _initInputWidget( Mode editmode ); - private: - HEXA_NS::Elements *_value; - }; + private: + HEXA_NS::Elements *_value; + }; + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT ModelInfoDialog : public HexaBaseDialog, + public Ui::ModelInfoDialog + { + Q_OBJECT + public: + ModelInfoDialog( QWidget* parent = NULL, Qt::WindowFlags wf = Qt::SubWindow ); + virtual ~ModelInfoDialog(){} - class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeHemiSphereDialog : public HexaBaseDialog, - public Ui::MakeHemiSphereDialog - { - Q_OBJECT + public slots: + void updateInfo(); - public: - MakeHemiSphereDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); - virtual ~MakeHemiSphereDialog(); - void clear(); + protected: + virtual void hideEvent ( QHideEvent * event ); + virtual void showEvent ( QShowEvent * event ); + virtual bool apply(QModelIndex& result){ return true;} + virtual void _initInputWidget( Mode editmode ){} + }; -// void setValue(HEXA_NS::Propagation* v); -// HEXA_NS::Propagation* getValue(); + class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT AddShapeDialog : public HexaBaseDialog, + public Ui::AddShapeDialog + { + Q_OBJECT - public slots: + public: + AddShapeDialog( QWidget* parent = NULL, Mode editmode = NEW_MODE, Qt::WindowFlags wf = Qt::SubWindow ); + virtual ~AddShapeDialog(); + void clear(); + + public slots: virtual bool apply(QModelIndex& result); + virtual void close(); + virtual void onWindowActivated(SUIT_ViewManager*); - protected: - void _initInputWidget( Mode editmode ); + protected: + virtual void _initInputWidget( Mode editmode ); - private: - HEXA_NS::Elements *_value; - }; + protected slots: + virtual void onCurrentSelectionChanged(); -// class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeRindDialog : public HexaBaseDialog, -// public Ui::MakeRindDialog -// { -// Q_OBJECT -// -// public: -// MakeRindDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); -// virtual ~MakeRindDialog(); -// -// public slots: -// virtual bool apply(QModelIndex& result); -// -// private: -// // HEXA_NS::Propagation *_value;:q -// -// }; + private: + GEOM::GeomObjPtr currentGeomObj; + }; + + + // class HEXABLOCKGUI_DOCUMENTPANEL_EXPORT MakeRindDialog : public HexaBaseDialog, + // public Ui::MakeRindDialog + // { + // Q_OBJECT + // + // public: + // MakeRindDialog( QWidget* = 0, Mode = NEW_MODE, Qt::WindowFlags = Qt::SubWindow );//= 0 ); + // virtual ~MakeRindDialog(); + // + // public slots: + // virtual bool apply(QModelIndex& result); + // + // private: + // // HEXA_NS::Propagation *_value;:q + // + // }; } diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentSelectionModel.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentSelectionModel.cxx index 5627b29..7d6579e 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentSelectionModel.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentSelectionModel.cxx @@ -43,11 +43,11 @@ #include #include - +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" +#include "HEXABLOCKGUI_OccGraphicView.hxx" #include "HEXABLOCKGUI_SalomeTools.hxx" #include "HEXABLOCKGUI_DocumentSelectionModel.hxx" #include "HEXABLOCKGUI_DocumentModel.hxx" -#include "HEXABLOCKGUI_DocumentGraphicView.hxx" #include "HEXABLOCKGUI_DocumentItem.hxx" #include "HEXABLOCKGUI.hxx" @@ -86,87 +86,28 @@ using namespace std; using namespace HEXABLOCK::GUI; +// //=========================================================================== +// SelectionModel +// //=========================================================================== -PatternDataSelectionModel::PatternDataSelectionModel( QAbstractItemModel * model ): +SelectionModel::SelectionModel( QAbstractItemModel * model ): QItemSelectionModel( model ), -MyGEOMBase_Helper( SUIT_Session::session()->activeApplication()->desktop() ), -_theModelSelectionChanged(false), -_theVtkSelectionChanged(false), -_theGeomSelectionChanged(false), -salomeNothingSelected(true), -_selectionFilter(-1), -_salomeSelectionMgr(0) -{ - connect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), - this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ) ); - connect( this, SIGNAL( selectionChanged( const QItemSelection & , const QItemSelection & ) ), - this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ) ); - -} - -PatternDataSelectionModel::~PatternDataSelectionModel() -{ - disconnect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), - this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ) ); - disconnect( this, SIGNAL( selectionChanged( const QItemSelection & , const QItemSelection & ) ), - this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ) ); - -// if ( _salomeSelectionMgr ) -// disconnect( _salomeSelectionMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( salomeSelectionChanged() ) ); - disconnect( HEXABLOCKGUI::selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( salomeSelectionChanged() ) ); -} - -void PatternDataSelectionModel::setVertexSelection() -{ - MESSAGE("PatternDataSelectionModel::setVertexSelection(){"); - SetSelectionMode(NodeSelection); -// // NodeSelection, -// // CellSelection, -// // EdgeOfCellSelection, -// // EdgeSelection, -// // FaceSelection, -// // VolumeSelection, -// // ActorSelection }; - _selectionFilter = VERTEX_TREE; - MESSAGE("}"); -} - -void PatternDataSelectionModel::setEdgeSelection() +//_theModelSelectionChanged(false), +//_theVtkSelectionChanged(false), +//_theGeomSelectionChanged(false), +ignoreSignal(false), +salomeNothingSelected(true) { - MESSAGE("PatternDataSelectionModel::setEdgeSelection(){"); - SetSelectionMode(EdgeSelection); - _selectionFilter = EDGE_TREE; - MESSAGE("}"); -} - -void PatternDataSelectionModel::setQuadSelection() -{ - MESSAGE("PatternDataSelectionModel::setQuadSelection(){"); - SetSelectionMode(FaceSelection); - _selectionFilter = QUAD_TREE; - MESSAGE("}"); -} - -void PatternDataSelectionModel::setHexaSelection() -{ - MESSAGE("PatternDataSelectionModel::setHexaSelection(){"); -// SetSelectionMode(VolumeSelection); - SetSelectionMode(FaceSelection); //temporary for hexa selection debug - _selectionFilter = HEXA_TREE; - MESSAGE("}"); } -void PatternDataSelectionModel::setAllSelection() +SelectionModel::~SelectionModel() { - MESSAGE("PatternDataSelectionModel::setAllSelection(){"); - SetSelectionMode(ActorSelection); - _selectionFilter = -1; - MESSAGE("}"); + disconnect( HEXABLOCKGUI::selectionMgr(), SIGNAL( currentSelectionChanged() ), this, SLOT( salomeSelectionChanged() ) ); } -QModelIndex PatternDataSelectionModel::indexBy( int role, const QString& value ) +QModelIndex SelectionModel::indexBy( int role, const QString& value ) { QModelIndex eltIndex; // element (vertex, edge, quad) of model const QAbstractItemModel* theModel = model(); @@ -182,7 +123,7 @@ QModelIndex PatternDataSelectionModel::indexBy( int role, const QString& value ) } -QModelIndex PatternDataSelectionModel::indexBy( int role, const QVariant& var ) +QModelIndex SelectionModel::indexBy( int role, const QVariant& var ) { QModelIndex eltIndex; // element (vertex, edge, quad) of model const QAbstractItemModel* theModel = model(); @@ -197,612 +138,381 @@ QModelIndex PatternDataSelectionModel::indexBy( int role, const QVariant& var ) return eltIndex; } - -void PatternDataSelectionModel::setSalomeSelectionMgr( LightApp_SelectionMgr* mgr ) +QModelIndex SelectionModel::indexOf( const QString& anEntry, int role ) { - _salomeSelectionMgr = mgr; - connect( _salomeSelectionMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( salomeSelectionChanged() ) ); -} - + QModelIndex eltIndex; // element (vertex, edge, quad) of model + const QAbstractItemModel* theModel = model(); + if ( !theModel ) return eltIndex; -void PatternDataSelectionModel::SetSelectionMode(Selection_Mode theMode) -{ - MESSAGE("PatternDataSelectionModel::SetSelectionMode(){"); -// SVTK_ViewWindow* aVTKViewWindow = _getVTKViewWindow(); -// aViewWindow->clearFilters(); -// _salomeSelectionMgr->clearFilters(); - if ( _getVTKViewWindow() != NULL ) - _getVTKViewWindow()->SetSelectionMode( theMode ); - MESSAGE("}"); + QModelIndexList theIndexes = theModel->match( theModel->index(0, 0), + role, + anEntry, + 1, + Qt::MatchRecursive | Qt::MatchContains );//Qt::MatchFixedString ); + if ( theIndexes.count()>0 ) + eltIndex = theIndexes[0] ; + return eltIndex; } -// A) De Salome(OCC, VTK) vers Hexablock(TreeView Data) : -// -Vertex: -// in: selection (vertex associé OCC). -// out: (vertex VTK) highlighté, (vertex TreeView) sélectionné. -// -// in : selection (vertex associé VTK). -// out: (vertex OCC) highlighté, (vertex TreeView) sélectionné. -// -// -Edge: -// in: selection (edge associé OCC). -// out: (vertex VTK) highlighté, (vertex TreeView) sélectionné. -// -// in: selection (edge associé VTK). -// out: (toute la ligne OCC) highlighté + vertex sur (deb,fin) , (edge TreeView) sélectionné. -// -// -Face: idem vertex -void PatternDataSelectionModel::onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ) +QModelIndexList SelectionModel::indexListOf( const QString& anEntry, int role ) { - MESSAGE("PatternDataSelectionModel::onCurrentChanged(){"); - MESSAGE("* current : " << current.data().toString().toStdString()); - MESSAGE("* previous : " << previous.data().toString().toStdString()); - - //Setting the selection mode of the selected item from the treeview - _setVTKSelectionMode( current); - -// _selectSalome( current, true ); -// _selectSalome( previous, false ); - MESSAGE("}"); + QModelIndexList theIndexes; // element (vertex, edge, quad) of model + const QAbstractItemModel* theModel = model(); + if ( !theModel ) return theIndexes; + theIndexes = theModel->match( theModel->index(0, 0), + role, + anEntry, + -1, + Qt::MatchRecursive | Qt::MatchContains );//Qt::MatchFixedString ); + return theIndexes; } -void PatternDataSelectionModel::highlightEltsWithAssocs(const QModelIndexList& elts) -{ - try { -// if ( HEXABLOCKGUI::selectionMgr() != NULL) HEXABLOCKGUI::selectionMgr()->clearSelected(); - highlightVTKElts(elts); - for( QModelIndexList::const_iterator i_index = elts.begin(); i_index != elts.end(); ++i_index ){ - // _selectVTK( *i_index ); - _highlightGEOM( *i_index ); - } - } catch ( ... ) { - MESSAGE("Unknown exception was cought !!!"); - } -} -void PatternDataSelectionModel::onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ) -{ -// MESSAGE("PatternDataSelectionModel::onSelectionChanged(){"); -// foreach( const QModelIndex& isel, selected.indexes() ){ -// MESSAGE("* selected : " << isel.data().toString().toStdString()); -// } -// foreach( const QModelIndex& iunsel, deselected.indexes() ){ -// MESSAGE("* unselected : " << iunsel.data().toString().toStdString()); -// } - -// _theModelSelectionChanged = true; -// try { -// if ( _salomeSelectionMgr == NULL ) return; -//// if ( !_theVtkSelectionChanged and !_theGeomSelectionChanged ) return; -// -// _salomeSelectionMgr->clearSelected(); -// // erasePreview(true); -// QModelIndexList indexes = selected.indexes(); -// for( QModelIndexList::const_iterator i_index = indexes.begin(); i_index != indexes.end(); ++i_index ){ -// // std::cout << "entry selected" << i_index->data( HEXA_ENTRY_ROLE ).toString().toStdString() << std::endl; -// if ( !_theVtkSelectionChanged ) _selectVTK( *i_index ); -// if ( !_theGeomSelectionChanged ) _highlightGEOM( *i_index ); -// } -// // CS_BP todo SALOMEGUI_Swig.cxx:370 -// // indexes = deselected.indexes(); -// // for( QModelIndexList::const_iterator i_index = indexes.begin(); i_index != indexes.end(); ++i_index ) -// // _unselectSalome( *i_index); -// } catch ( ... ) { -// MESSAGE("Unknown exception was cought !!!"); -// } -// _theModelSelectionChanged = false; - -// MESSAGE("}"); -} -void PatternDataSelectionModel::salomeSelectionChanged() +void SelectionModel::salomeSelectionChanged() { - MESSAGE("PatternDataSelectionModel::salomeSelectionChanged(){"); + if (HEXABLOCKGUI::assocInProgress && + HEXABLOCKGUI::getActiveViewType() == HEXABLOCKGUI::OCC) return; + try { - QModelIndex toSelect; - if ( _salomeSelectionMgr == NULL ) return; + if ( HEXABLOCKGUI::selectionMgr() == NULL ) return; SALOME_ListIO salomeSelected; - // _salomeSelectionMgr->selectedObjects( salomeSelected, SVTK_Viewer::Type() );//salomeSelected.Extent() - _salomeSelectionMgr->selectedObjects( salomeSelected, NULL, false ); +// _salomeSelectionMgr->selectedObjects( salomeSelected, SVTK_Viewer::Type() );//salomeSelected.Extent() + if (HEXABLOCKGUI::getActiveViewType() == HEXABLOCKGUI::VTK) + { + HEXABLOCKGUI::selectionMgr()->selectedObjects( salomeSelected, SVTK_Viewer::Type()); + } + else if (HEXABLOCKGUI::getActiveViewType() == HEXABLOCKGUI::OCC) + { + HEXABLOCKGUI::selectionMgr()->selectedObjects( salomeSelected, "", false); + } + +// HEXABLOCKGUI::selectionMgr()->selectedObjects( salomeSelected, NULL, false ); if ( salomeSelected.IsEmpty() ){ - MESSAGE("* salomeSelected.IsEmpty()"); salomeNothingSelected = true; clearSelection(); return; } Handle(SALOME_InteractiveObject) anIObject; - SALOME_ListIteratorOfListIO it(salomeSelected); - for( ; it.More(); it.Next()){ - anIObject = it.Value(); //anIObject->getName() - toSelect = _geomSelectionChanged( anIObject );// is it comming from GEOM? - if ( !toSelect.isValid() ){ - toSelect = _vtkSelectionChanged( anIObject ); ;// or VTK?... - if ( toSelect.isValid() ) - MESSAGE("* OK : selection from VTK"); - } else { - MESSAGE("* OK : selection from GEOM"); - } + + //Handle selection according to the source + if (HEXABLOCKGUI::getActiveViewType() == HEXABLOCKGUI::VTK) + { + for( ; it.More(); it.Next()){ + anIObject = it.Value(); //anIObject->getName() + vtkSelectionChanged( anIObject ); // or VTK?... + } + } + else if (HEXABLOCKGUI::getActiveViewType() == HEXABLOCKGUI::OCC) + { + for( ; it.More(); it.Next()){ + anIObject = it.Value(); //anIObject->getName() + geomSelectionChanged( anIObject );// or VTK?... + } } + salomeNothingSelected = false; } catch ( ... ) { - MESSAGE("* Unknown exception was cought !!!"); + MESSAGE("* Unknown exception was cought !!!"); } - MESSAGE("}"); } -QModelIndex PatternDataSelectionModel::_geomSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ) -{ - MESSAGE("PatternDataSelectionModel::_geomSelectionChanged(){"); - QModelIndexList assocsIndexes;// elements of the model which is associated to the geom object and that is to be selected - QModelIndex assocIndex; - - if (HEXABLOCKGUI::assocInProgress) return assocIndex; - bool fromGEOM = ( strcmp("GEOM", anIObject->getComponentDataType()) == 0 ); - if ( !fromGEOM ) return assocIndex; - if (!_salomeSelectionMgr) return assocIndex; - - QString aName; - GEOM::GEOM_Object_var aGeomObj = GEOMBase::ConvertIOinGEOMObject( anIObject ); - - int anIndex = -1; - if ( GEOMBase::IsShape(aGeomObj) ){ - aName = GEOMBase::GetName(aGeomObj); - TColStd_IndexedMapOfInteger anIndexes; - _salomeSelectionMgr->GetIndexes(anIObject, anIndexes); - if ( anIndexes.Extent() == 1 ) - anIndex = anIndexes(1); - QString aGeomObjStudyEntry = aGeomObj->GetStudyEntry(); - QString aGeomObjModelEntry = aGeomObjStudyEntry + "," + QString::number(anIndex) + ";"; - assocsIndexes = _indexListOf( aGeomObjModelEntry, HEXA_ASSOC_ENTRY_ROLE ); - if ( !_theModelSelectionChanged && assocsIndexes.count()>0 && assocsIndexes[0].isValid() ){ // select in model - _theGeomSelectionChanged = true; - setCurrentIndex( assocsIndexes[0], QItemSelectionModel::Clear ); //CS_TEST - setCurrentIndex( assocsIndexes[0], QItemSelectionModel::SelectCurrent ); - _theGeomSelectionChanged = false; - } else { - clearSelection(); - } - } - - MESSAGE("}"); - - if (assocsIndexes.count() > 0) - { -// HEXABLOCKGUI::currentVtkView->setFocus(); - highlightVTKElts(assocsIndexes); - return assocsIndexes[0]; - } - return assocIndex; -} -QModelIndex PatternDataSelectionModel::_vtkSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ) +QModelIndexList SelectionModel::getSelectionFromModel(const Handle(SALOME_InteractiveObject)& anIObject) { - MESSAGE("PatternDataSelectionModel::_vtkSelectionChanged(){"); - QModelIndex anIOIndex;// // the element of the model which is associated to the Interactive object and that is to be selected - - bool fromVTK = ( strcmp("HEXABLOCK", anIObject->getComponentDataType()) == 0 ); - if ( !fromVTK ) return anIOIndex; - - SVTK_ViewWindow* currentVTKViewWindow = _getVTKViewWindow(); - if ( !currentVTKViewWindow ) return anIOIndex; - if ( !anIObject->hasEntry() ) return anIOIndex; - - QString anIOEntry = anIObject->getEntry(); - Document_Actor *anDocActor = NULL; - int anhexaElemsId; - - QString aText = ""; - if ( GetNameOfSelectedElements( currentVTKViewWindow, anIObject, aText ) <= 0 ) return anIOIndex; - anDocActor = dynamic_cast( findActorByEntry( currentVTKViewWindow, anIOEntry.toLatin1() ) ); - if ( !anDocActor ) return anIOIndex; - anhexaElemsId = anDocActor->hexaElemsId[ aText.toInt() ]; - anIOEntry = QString::number( anhexaElemsId ); - anIOIndex = _indexOf( anIOEntry, HEXA_ENTRY_ROLE ); - - if ( !_theModelSelectionChanged && anIOIndex.isValid() ){ // select in model - _theVtkSelectionChanged = true; - - //Temporary Debug for hexa selection ----------------------------------------------------------------- - if (getSelectionFilter() == HEXA_TREE) - { - DocumentModel *docModel = NULL; - const QSortFilterProxyModel *pModel = dynamic_cast( model() ); - - if ( pModel != NULL){ - docModel = dynamic_cast( pModel->sourceModel() ); - if ( docModel != NULL && anIOIndex.isValid()) - { - //get the selected quad - HEXA_NS::Quad* quad = docModel->getHexaPtr(anIOIndex); - if (quad != NULL) - { - //get the hexa the quad belongs to - HEXA_NS::Hexa* hexa = docModel->getQuadHexa(quad); - if (hexa != NULL) //convert the hexa to a QModelIndex so we can select it in the model - anIOIndex = indexBy( HEXA_DATA_ROLE, QVariant::fromValue(hexa)); - else - { - SUIT_MessageBox::critical( 0, - tr("HexaBlock"), - tr("The Hexahedron This quad belongs to has been deleted!")); - return anIOIndex; - } - } - } - } - }//end if HEXA_TREE------------------------------------------------------------------------------------ - - setCurrentIndex( anIOIndex, QItemSelectionModel::Clear ); - setCurrentIndex( anIOIndex, QItemSelectionModel::SelectCurrent ); - _theVtkSelectionChanged = false; - } else { - clearSelection(); - } - -// if (anIOIndex.isValid()) -// _selectVTK(anIOIndex); - -// if (anIOIndex.isValid()) -// { -// QModelIndexList l; -// l << anIOIndex; -// highlightVTKElts(l); -// _highlightGEOM(anIOIndex); // JMD test à faire -// } - MESSAGE("}"); - return anIOIndex; + QModelIndexList selectedIndexes; + + //verify if the IOBject is valid and from VTK selection + bool fromVTK = ( strcmp("HEXABLOCK", anIObject->getComponentDataType()) == 0 ); + if ( !fromVTK || !anIObject->hasEntry() || HEXABLOCKGUI::currentDocGView->getViewWindow() == NULL) + return selectedIndexes; + + QString anIOEntry = anIObject->getEntry(); + int anhexaElemsId; + QString aText = ""; + + //extract vtk selection from the model ----------- + if ( GetNameOfSelectedElements( HEXABLOCKGUI::currentDocGView->getViewWindow(), anIObject, aText ) <= 0 ) + return selectedIndexes; + + Document_Actor* docActor = dynamic_cast( findActorByEntry( HEXABLOCKGUI::currentDocGView->getViewWindow(), + anIOEntry.toLatin1() ) ); + if ( !docActor ) return selectedIndexes; + QStringList idList = aText.split(" "); + foreach( const QString& id, idList ) + { + if (!id.isEmpty()) + { + //find selection in the model + anhexaElemsId = docActor->hexaElemsId[ id.toInt() ]; + anIOEntry = QString::number( anhexaElemsId ); + + selectedIndexes << indexOf( anIOEntry, HEXA_ENTRY_ROLE ); + } + } + return selectedIndexes; } - -SVTK_ViewWindow* PatternDataSelectionModel::_getVTKViewWindow() +//Returns the element of the model which is associated to the Interactive object +QModelIndexList SelectionModel::getSelectionAssociactions(const Handle(SALOME_InteractiveObject)& anIObject) { -// SVTK_ViewWindow* aVtkView = HEXABLOCKGUI::currentVtkView; - return HEXABLOCKGUI::currentVtkView; + QModelIndexList assocsIndexes; + DocumentModel *docModel = NULL; + const QSortFilterProxyModel *pModel = dynamic_cast( model() ); + if ( pModel != NULL) + docModel = dynamic_cast( pModel->sourceModel() ); + + if ( docModel == NULL) return assocsIndexes; + + //verify if the selection is really from OCC View + bool fromGEOM = ( strcmp("GEOM", anIObject->getComponentDataType()) == 0 ); + if ( !fromGEOM || HEXABLOCKGUI::selectionMgr() == NULL || + HEXABLOCKGUI::currentOccGView->getViewWindow() == NULL) + return assocsIndexes; + +// QString aName; + GEOM::GEOM_Object_var aGeomObj = GEOMBase::ConvertIOinGEOMObject( anIObject ); + + //extract associated elements in the model + if ( GEOMBase::IsShape(aGeomObj) ){ +// aName = GEOMBase::GetName(aGeomObj); + TColStd_IndexedMapOfInteger anIndexes; + HEXABLOCKGUI::selectionMgr()->GetIndexes(anIObject, anIndexes); + if (anIndexes.Extent() == 0) return assocsIndexes; + QString aGeomObjStudyEntry = aGeomObj->GetStudyEntry(); + + for( int i = 1; i <= anIndexes.Extent(); ++i) + { + QString aGeomObjModelEntry = docModel->getGeomObjName(aGeomObjStudyEntry) + "," + QString::number(anIndexes(i)) + ";"; + assocsIndexes.append(indexListOf(aGeomObjModelEntry, HEXA_ASSOC_ENTRY_ROLE)); + if (assocsIndexes.count() > 0) + return assocsIndexes; //Premature: On purpose for Monoselection + } + } + + return assocsIndexes; } -OCCViewer_ViewWindow* PatternDataSelectionModel::_getOCCViewWindow() -{ -// OCCViewer_ViewWindow* aOccView = HEXABLOCKGUI::currentOccView; -// MESSAGE(" dans OCCViewer" << aOccView); - return HEXABLOCKGUI::currentOccView; -} - +// //=========================================================================== +// PatternDataSelectionModel +// //=========================================================================== -QModelIndex PatternDataSelectionModel::_indexOf( const QString& anEntry, int role ) +PatternDataSelectionModel::PatternDataSelectionModel( QAbstractItemModel * model ): +SelectionModel( model ) { - QModelIndex eltIndex; // element (vertex, edge, quad) of model - const QAbstractItemModel* theModel = model(); - if ( !theModel ) return eltIndex; - QModelIndexList theIndexes = theModel->match( theModel->index(0, 0), - role, - anEntry, - 1, - Qt::MatchRecursive | Qt::MatchContains );//Qt::MatchFixedString ); - if ( theIndexes.count()>0 ) - eltIndex = theIndexes[0] ; - return eltIndex; -} - + connect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), + this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ), Qt::UniqueConnection ); + connect( this, SIGNAL( selectionChanged( const QItemSelection & , const QItemSelection & ) ), + this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ), Qt::UniqueConnection ); -QModelIndexList PatternDataSelectionModel::_indexListOf( const QString& anEntry, int role ) -{ - QModelIndexList theIndexes; // element (vertex, edge, quad) of model - const QAbstractItemModel* theModel = model(); - if ( !theModel ) return theIndexes; - theIndexes = theModel->match( theModel->index(0, 0), - role, - anEntry, - -1, - Qt::MatchRecursive | Qt::MatchContains );//Qt::MatchFixedString ); - return theIndexes; } - -void PatternDataSelectionModel::_setVTKSelectionMode( const QModelIndex& eltIndex ) +PatternDataSelectionModel::~PatternDataSelectionModel() { - MESSAGE("PatternDataSelectionModel::_setVTKSelectionMode( "<< eltIndex.data().toString().toStdString() << " )"); - QVariant treeVariant = eltIndex.data( HEXA_TREE_ROLE ); - if ( !treeVariant.isValid() ) return; - int eltType = treeVariant.toInt(); - -// if ( (_selectionFilter != -1) and ( _selectionFilter != eltType ) ) return; - if ( _selectionFilter == eltType ) return; - - switch ( eltType ){ - case VERTEX_TREE : - case VERTEX_DIR_TREE : setVertexSelection(); MESSAGE("VERTEX"); break; - case EDGE_TREE : - case EDGE_DIR_TREE : setEdgeSelection(); MESSAGE("EDGE"); break; - case QUAD_TREE : - case QUAD_DIR_TREE : setQuadSelection(); MESSAGE("QUAD"); break; - case HEXA_TREE : - case HEXA_DIR_TREE : setHexaSelection(); MESSAGE("HEXA"); break; - case PROPAGATION_TREE : - case PROPAGATION_DIR_TREE : setEdgeSelection(); MESSAGE("PROPAGATION"); break; -// CellSelection, -// EdgeOfCellSelection, -// VolumeSelection, -// ActorSelection - } + disconnect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), + this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ) ); + disconnect( this, SIGNAL( selectionChanged( const QItemSelection & , const QItemSelection & ) ), + this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ) ); } -void PatternDataSelectionModel::highlightVTKElts( const QModelIndexList& elts ) +void PatternDataSelectionModel::onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ) { - if (!elts.size()) return; - - SVTK_ViewWindow* currentVTKViewWindow = _getVTKViewWindow(); - if ( currentVTKViewWindow == NULL ) return; - SVTK_Selector* selector = currentVTKViewWindow->GetSelector(); - if ( selector == NULL ) return; - - // document selection - Document_Actor* docActor = NULL; - Handle(SALOME_InteractiveObject) docIO; -// Handle(SALOME_InteractiveObject) docIO2; //JMD - - // element highlight - TColStd_MapOfInteger aMap; -// TColStd_MapOfInteger aMap2; - QList::const_iterator anIter; - int vtkElemsId; - - // data from model - QString docEntry; - QVariant docEntryVariant = elts[0].data( HEXA_DOC_ENTRY_ROLE ); - - if ( !docEntryVariant.isValid() ){ - //INFOS("data from model not valid"); - return; - } - - docEntry = docEntryVariant.toString(); - - // Select the document in Salome - docActor = dynamic_cast( findActorByEntry( currentVTKViewWindow, docEntry.toLatin1() ) ); - if ( docActor == NULL) return; - - - // // Set selection mode in VTK view -// currentVTKViewWindow->SetSelectionMode(VolumeSelection); - docIO = docActor->getIO(); - - - -// QString autreDocentry = "toti"; -// Associate_Actor* associateActor = dynamic_cast( findActorByEntry( currentVTKViewWindow, autreDocentry.toLatin1() ) ); -// docIO2 = associateActor->getIO(); - - // Highlight in vtk view the element from document - //bool rr = true; - - QString eltEntry; - foreach( const QModelIndex& iElt, elts ){ - eltEntry = iElt.data( HEXA_ENTRY_ROLE ).toString(); - vtkElemsId = docActor->vtkElemsId[ eltEntry.toInt() ]; - if ( vtkElemsId > 0 ) aMap.Add( vtkElemsId ); -// if (rr) { -// if ( vtkElemsId > 0 ) aMap.Add( vtkElemsId ); -// } -// else -// { -// if ( vtkElemsId > 0 ) aMap2.Add( vtkElemsId ); -// } -// rr = ! rr; - } - - selector->AddOrRemoveIndex( docIO, aMap, false ); //true -// selector->RemoveIObject(docActor); - currentVTKViewWindow->highlight( docIO, true, true ); -// Document_Actor* docActor = NULL; -// QVariant docEntryVariant = selected.data( HEXA_DOC_ENTRY_ROLE ); -// if ( docEntryVariant.isValid() ){ -// QString docEntry = docEntryVariant.toString(); -// docActor = dynamic_cast( findActorByEntry( HEXABLOCKGUI::currentVtkView, docEntry.toLatin1() ) ); -// if ( docActor != NULL) HEXABLOCKGUI::currentVtkView->getView()->highlight( docActor->getIO(), false, false ); -// } -// currentVTKViewWindow->getView()->SetColor(docIO, QColor("blue")); - - -// selector->AddOrRemoveIndex( docIO2, aMap2, false ); -// currentVTKViewWindow->highlight( docIO2, true, true ); + //Setting the selection mode of the selected item from the treeview + HEXABLOCKGUI::currentDocGView->setSelectionMode( current ); + HEXABLOCKGUI::currentOccGView->setSelectionMode( current ); } -//SUIT_ViewManager* PatternDataSelectionModel::initOccViewManager() -//{ -// SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); -// SUIT_ViewManager* occVm = anApp->getViewManager( OCCViewer_Viewer::Type(), true ); -// SVTK_ViewWindow* viewWindow = dynamic_cast(svw); -// return viewWindow; -//} -SUIT_ViewWindow* PatternDataSelectionModel::initOccViewManager() +void PatternDataSelectionModel::highlightEltsWithAssocs(const QModelIndexList& elts) { - SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); - SUIT_ViewManager* occVm = anApp->getViewManager( OCCViewer_Viewer::Type(), true ); - - QVector viewS = occVm->getViews (); - - int nb = viewS.count(); - - MESSAGE("????HexaBaseDialog::initOccView number of : " << nb); - - if (nb == 1) - { - MESSAGE(" OK ????HexaBaseDialog::initOccView number of : " << nb); - return viewS.first(); - } - - return NULL; + try { + /*if ( !_theVtkSelectionChanged )*/ + HEXABLOCKGUI::currentDocGView->highlight(elts); + /*if ( !_theGeomSelectionChanged )*/ + HEXABLOCKGUI::currentOccGView->highlight(elts); + } catch ( ... ) { + MESSAGE("Unknown exception was cought !!!"); + } } -// 1 vertex -> 1 point -// 1 edge -> n lines + points(deb,fin) -// 1 quad -> n faces -void PatternDataSelectionModel::_highlightGEOM( const QMultiMap& entrySubIDs ) +QModelIndexList PatternDataSelectionModel::getGeomAssociations(const QModelIndex& dataIndex) { - MESSAGE("PatternDataSelectionModel::_highlightGEOM( const QMultiMap& entrySubIDs ){"); - MESSAGE("debut entry => "<< entrySubIDs.count()); - - OCCViewer_ViewWindow* occView = _getOCCViewWindow(); - if ( occView == NULL ) { -// occView = (OCCViewer_ViewWindow*)initOccViewManager(); -// if ( occView == NULL ) - return; - } - MESSAGE("step 1 occView=> " << occView); - - MESSAGE("step 1 entry => "); - SOCC_Viewer* soccViewer = dynamic_cast( occView->getViewManager()->getViewModel() ); - if (!soccViewer) return; - MESSAGE("step 2 entry => "); - _PTR(Study) aStudy = GetActiveStudyDocument(); - if (!aStudy) return; - MESSAGE("step 3 entry => "); - - CORBA::Object_var aCorbaObj = CORBA::Object::_nil(); - GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_nil(); - erasePreview(true); - MESSAGE("Avant entry => "<< entrySubIDs.count()); - foreach ( QString entry, entrySubIDs.keys() ){ - _PTR(SObject) aSChild = aStudy->FindObjectID( entry.toStdString() ); - MESSAGE("* entry => "<< entry.toStdString()); - aCorbaObj = corbaObj( aSChild ); - aGeomObj = GEOM::GEOM_Object::_narrow( aCorbaObj ); - if ( !CORBA::is_nil(aGeomObj) ){ - MESSAGE("* !CORBA::is_nil(aGeomObj)"); - QString objIOR = GEOMBase::GetIORFromObject( aGeomObj._retn() ); - Handle(GEOM_AISShape) aSh = GEOMBase::ConvertIORinGEOMAISShape( objIOR );//, true ); - if ( !aSh.IsNull() ){ - MESSAGE("* !aSh.IsNull() "); - TColStd_IndexedMapOfInteger anIndexes; - foreach ( int subid, entrySubIDs.values(entry) ){ - if ( subid != -1 ) - anIndexes.Add( subid ); - } - if ( anIndexes.Extent() > 0 ){ // if it's a sub-shape - MESSAGE("* a sub-shape"); - aSh->highlightSubShapes( anIndexes, true ); - soccViewer->Repaint(); - } else { // or a main shape -// std::cout << "aSh->getIO() => " << aSh->getIO() << std::endl; -// getDisplayer()->SetDisplayMode(0); -// soccViewer->setColor( aSh->getIO(), QColor( Qt::red ), true ); -// soccViewer->switchRepresentation( aSh->getIO(), 2 ); - MESSAGE("* a main shape"); -// globalSelection(); - soccViewer->highlight( aSh->getIO(), true, true ); + QModelIndexList geomIndexList; + HEXA_NS::SubShape* ssh; + HEXA_NS::EdgeShape* sh; + if (HEXABLOCKGUI::currentDocGView == NULL) return geomIndexList; + + DocumentModel *docModel = NULL; + const QSortFilterProxyModel *pModel = dynamic_cast( model() ); + PatternGeomModel* pGModel = HEXABLOCKGUI::currentDocGView->getPatternGeomModel(); + PatternGeomSelectionModel* pGSModel = HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel(); + + if ( pModel != NULL) + docModel = dynamic_cast( pModel->sourceModel() ); + + if (docModel == NULL || pGModel == NULL || pGSModel == NULL) + return geomIndexList; + + HEXA_NS::Vertex* vertex = docModel->getHexaPtr(dataIndex); + HEXA_NS::Edge* edge = docModel->getHexaPtr(dataIndex); + HEXA_NS::Quad* quad = docModel->getHexaPtr(dataIndex); + QModelIndex index = pModel->mapToSource(dataIndex); + + if (vertex != NULL) + geomIndexList << docModel->getVertexAssociation( index/*dataIndex*/ ); + else if (edge != NULL) + { + QList assocs = docModel->getEdgeAssociations( index/*dataIndex*/ ); + foreach( const DocumentModel::GeomObj& anAssoc, assocs ) + { + QString id = anAssoc.shapeName+","+anAssoc.subid; + ssh = docModel->getGeomPtr(id); + sh = dynamic_cast(ssh); + if (sh != NULL) + geomIndexList << /*pGModel->mapToSource(*/pGSModel->indexBy( HEXA_DATA_ROLE, QVariant::fromValue(sh))/*)*/; } - } } - } + else if ( quad != NULL) + geomIndexList = docModel->getQuadAssociations( index/*dataIndex*/ ); - MESSAGE("}"); + + return geomIndexList; } -void PatternDataSelectionModel::_highlightGEOM( const QModelIndex & anEltIndex ) +void PatternDataSelectionModel::onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ) { - MESSAGE("PatternDataSelectionModel::_highlightGEOM(" << anEltIndex.data().toString().toStdString() << ")"); - // getting association(s) from model - QList assocs; - QMultiMap< QString, int > assocEntrySubIDs; - DocumentModel *docModel = NULL; - const QSortFilterProxyModel *pModel = dynamic_cast( model() ); - - if ( !pModel ) return; - docModel = dynamic_cast( pModel->sourceModel() ); - if ( !docModel ) return; - assocs = docModel->getAssociations( pModel->mapToSource(anEltIndex) ); - foreach( const DocumentModel::GeomObj& anAssoc, assocs ) - { -// MESSAGE(" dedans " << anAssoc.entry.toStdString()); -// MESSAGE(" + " << anAssoc.subid.toInt()); - assocEntrySubIDs.insert( anAssoc.entry, anAssoc.subid.toInt() ); - - } - _highlightGEOM( assocEntrySubIDs ); - MESSAGE("}"); +// if (ignoreSignal) +// { +// MESSAGE("PatternDataSelectionModel: ignoring this signal"); +// ignoreSignal = false; +// return; +// } + //need to highlight the associated geom obj in the geometry tree + //first get the association + QModelIndexList associatedGeomIndexes; + QModelIndexList indexes = selected.indexes(); + highlightEltsWithAssocs(indexes); + +// //highlight in geom +// if (HEXABLOCKGUI::currentDocGView == NULL || indexes.count() == 0) return; +// associatedGeomIndexes = getGeomAssociations(indexes[0]); //Mono Selection +// if (associatedGeomIndexes.count() == 0) +// { +// MESSAGE("ON SELECTION CHANGED: no association found: returning..."); +// HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel()->setIgnoreSignal(false); +// return; +// } +// if (associatedGeomIndexes[0].isValid()) +// { +//// MESSAGE("Association found: but not selecting... now returning"); +//// return; +// //tell geom selection model to ignore this signal +// HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel()->setIgnoreSignal(true); +// +// //selection of the associated element in the geometry tree +//// HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel()->setCurrentIndex( associatedGeomIndexes[0], +//// QItemSelectionModel::Clear ); +// const QSortFilterProxyModel *pModel = dynamic_cast( HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel()->model() ); +// if (pModel == NULL) +// { +// HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel()->setIgnoreSignal(false); +// return; +// } +// MESSAGE("SELECTING THE GEOM TREE INDEX NOW: "); +// MESSAGE(HEXABLOCKGUI::currentDocGView->getDocumentModel()->getHexaPtr(associatedGeomIndexes[0])->getName()); +// +// HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel()->setCurrentIndex( associatedGeomIndexes[0], +// QItemSelectionModel::ClearAndSelect ); +// } } -void PatternDataSelectionModel::_selectVTK( const QModelIndex& eltIndex ) +void PatternDataSelectionModel::geomSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ) { - MESSAGE("PatternDataSelectionModel::_selectVTK( "<< eltIndex.data().toString().toStdString() << ")"); - SVTK_ViewWindow* currentVTKViewWindow = _getVTKViewWindow(); - if ( currentVTKViewWindow == NULL ) return; - SVTK_Selector* selector = currentVTKViewWindow->GetSelector(); - if ( selector == NULL ) return; - - // document selection - Document_Actor* docActor = NULL; - Handle(SALOME_InteractiveObject) docIO; - SALOME_ListIO aList; - - // element highlight - TColStd_MapOfInteger aMap; - QList::const_iterator anIter; - int vtkElemsId; - - // data from model - QString eltEntry; - QString docEntry; - QVariant entryVariant = eltIndex.data( HEXA_ENTRY_ROLE ); - QVariant docEntryVariant = eltIndex.data( HEXA_DOC_ENTRY_ROLE ); - - if ( !entryVariant.isValid() ){ - //INFOS("entryVariant not valid"); - return; - } - if ( !docEntryVariant.isValid() ){ - //INFOS("docEntryVariant not valid"); - return; - } + if (HEXABLOCKGUI::assocInProgress) return; + +// QModelIndexList assocsIndexes = getSelectionAssociactions(anIObject); + PatternGeomSelectionModel* pgsm = NULL; + if (HEXABLOCKGUI::currentDocGView != NULL) + pgsm = HEXABLOCKGUI::currentDocGView->getPatternGeomSelectionModel(); + if (pgsm == NULL) return; + + QModelIndex geomModelIndex = pgsm->getModelIndex(anIObject); + clearSelection(); + if (!geomModelIndex.isValid()) return; + pgsm->setCurrentIndex( geomModelIndex, QItemSelectionModel::Clear ); //CS_TEST + pgsm->setCurrentIndex( geomModelIndex, QItemSelectionModel::SelectCurrent ); +} - eltEntry = entryVariant.toString(); - docEntry = docEntryVariant.toString(); - - // Select the document in Salome - docActor = dynamic_cast( findActorByEntry( currentVTKViewWindow, docEntry.toLatin1() ) ); - if ( docActor == NULL ) return; - - // Set selection mode in VTK view - //_setVTKSelectionMode( eltIndex, currentVTKViewWindow ); - -// if ( _salomeSelectionMgr == NULL ) return; -// _salomeSelectionMgr->selectedObjects( aList ); -// std::cout<<"aList.Extent() => " << aList.Extent() << std::endl; -// aList.Append(docIO); -// _salomeSelectionMgr->setSelectedObjects( aList, true );//false );//true ); //CS_BP false? - docIO = docActor->getIO(); - - // Highlight in vtk view the element from document - vtkElemsId = docActor->vtkElemsId[ eltEntry.toInt() ];// get vtk ids from actor - if ( vtkElemsId > 0 ) // CS_BP ?: erreur si 1er elt == vertex (0,0,0) - aMap.Add( vtkElemsId ); -// for (anIter = theIds.begin(); anIter != theIds.end(); ++anIter) { -// aMap.Add(*anIter); -// } - selector->AddOrRemoveIndex( docIO, aMap, false ); - currentVTKViewWindow->highlight( docIO, true, true ); - MESSAGE("}"); +void PatternDataSelectionModel::vtkSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ) +{ + QModelIndexList selectedIndexes = getSelectionFromModel(anIObject); + if (selectedIndexes.count() == 0) + { + clearSelection(); + return; + } + // _theVtkSelectionChanged = true; + QModelIndex anIOIndex = selectedIndexes[0]; //Monoselection + + //Temporary Debug for hexa selection ----------------------------- + if (HEXABLOCKGUI::currentDocGView->getSelectionMode() == HEXA_TREE) + { + DocumentModel *docModel = NULL; + const QSortFilterProxyModel *pModel = dynamic_cast( model() ); + + if ( pModel != NULL){ + docModel = dynamic_cast( pModel->sourceModel() ); + if ( docModel != NULL && anIOIndex.isValid()) + { + //get the selected quad + HEXA_NS::Quad* quad = docModel->getHexaPtr(anIOIndex); + + if (quad != NULL) + { + //get the hexa the quad belongs to + HEXA_NS::Hexa* hexa = docModel->getQuadHexa(quad); + if (hexa != NULL) //convert the hexa to a QModelIndex so we can select it in the model + anIOIndex = indexBy( HEXA_DATA_ROLE, QVariant::fromValue(hexa)); + else + { + SUIT_MessageBox::critical( 0, + tr("HexaBlock"), + tr("The Hexahedron this quad belongs to has been deleted!")); + return; + } + } + } + } + }//end if HEXA_TREE---------------------------------------------- + + //select the element in the model + setCurrentIndex( anIOIndex, QItemSelectionModel::Clear ); + setCurrentIndex( anIOIndex, QItemSelectionModel::SelectCurrent ); + // _theVtkSelectionChanged = false; } -GroupsSelectionModel::GroupsSelectionModel( QAbstractItemModel * model ): -QItemSelectionModel( model ) +// //=========================================================================== +// PatternGeomSelectionModel +// //=========================================================================== + +PatternGeomSelectionModel::PatternGeomSelectionModel( QAbstractItemModel * model ): +SelectionModel( model ) { connect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ) ); connect( this, SIGNAL( selectionChanged( const QItemSelection & , const QItemSelection & ) ), - this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ) ); + this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ), Qt::UniqueConnection ); } -GroupsSelectionModel::~GroupsSelectionModel() +PatternGeomSelectionModel::~PatternGeomSelectionModel() { disconnect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ) ); @@ -811,116 +521,162 @@ GroupsSelectionModel::~GroupsSelectionModel() } - - -QModelIndex GroupsSelectionModel::indexBy( int role, const QVariant& var ) +void PatternGeomSelectionModel::onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ) { - QModelIndex eltIndex; // element (vertex, edge, quad) of model - const QAbstractItemModel* theModel = model(); - if ( !theModel ) return eltIndex; - QModelIndexList theIndexes = theModel->match( theModel->index(0, 0), - role, - var, - 1, - Qt::MatchRecursive /*| Qt::MatchContains*/ );//Qt::MatchFixedString ); - if ( theIndexes.count()>0 ) - eltIndex = theIndexes[0] ; - return eltIndex; -} - + //Setting the selection mode of the selected item from the treeview} + HEXABLOCKGUI::currentDocGView->setSelectionMode( current ); + HEXABLOCKGUI::currentOccGView->setSelectionMode( current ); -SVTK_ViewWindow* GroupsSelectionModel::_getVTKViewWindow() -{ -// SVTK_ViewWindow* aVtkView = HEXABLOCKGUI::currentVtkView; - return HEXABLOCKGUI::currentVtkView; } - -void GroupsSelectionModel::_highlightGroups( const QModelIndex& eltIndex ) +void PatternGeomSelectionModel::onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ) { - const GroupsModel* m = dynamic_cast( model() ); + //don't handle selection signals coming from the data tree +// if (ignoreSignal) +// { +// MESSAGE("PatternGeomSelectionModel: IGNORING THE SIGNAL:!"); +// ignoreSignal = false; +// return; +// } -// ---- VTK ---- - if ( m == NULL ) return; - SVTK_ViewWindow* currentVTKViewWindow = _getVTKViewWindow(); - if ( currentVTKViewWindow == NULL ) return; - SVTK_Selector* selector = currentVTKViewWindow->GetSelector(); - if ( selector == NULL ) return; + DocumentModel *docModel = NULL; + const QSortFilterProxyModel *pModel = dynamic_cast( model() ); + if ( pModel != NULL) + docModel = dynamic_cast( pModel->sourceModel()); -// ---- vtkActor - // document selection - Document_Actor* docActor = NULL; - Handle(SALOME_InteractiveObject) docIO; - SALOME_ListIO aList; + QModelIndexList indexes = selected.indexes(); + if (indexes.count() == 0 || docModel == NULL) return; - // element highlight - TColStd_MapOfInteger aMap; - QList::const_iterator anIter; - int vtkElemsId; + //find the corresponding element in the model + HEXA_NS::SubShape* eltSubShape = dynamic_cast(docModel->getHexaPtr(indexes[0])); + if (eltSubShape == NULL) return; + HEXA_NS::NewShape* subShapeParent = eltSubShape->getParentShape(); + if (subShapeParent == NULL) return; + QString parentShapeName = subShapeParent->getName(); + QString subId = QString::number(eltSubShape->getIdent()); + QString aGeomObjModelEntry = parentShapeName + "," + subId + ";"; - // debut ** data from model - int eltType; - QString docEntry; + //get the model of the data tree + if (HEXABLOCKGUI::currentDocGView == NULL || HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel() == NULL) + return; - QVariant treeVariant = eltIndex.data( HEXA_TREE_ROLE ); - QVariant docEntryVariant = eltIndex.data( HEXA_DOC_ENTRY_ROLE ); + QModelIndexList assocsIndexes = HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel()->indexListOf(aGeomObjModelEntry, HEXA_ASSOC_ENTRY_ROLE); - if ( !treeVariant.isValid() || !docEntryVariant.isValid() ){ - //INFOS("data from model not valid"); - return; - } + //selection of the associated elements + if (assocsIndexes.count() == 1 && assocsIndexes[0].isValid()) + { +// HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel()->setIgnoreSignal(true); + //Select associated element in the model => highlight in vtk view +// HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel()->setCurrentIndex( assocsIndexes[0], QItemSelectionModel::Clear ); //CS_TEST + HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel()->setCurrentIndex( assocsIndexes[0], QItemSelectionModel::ClearAndSelect ); + HEXABLOCKGUI::currentDocGView->getPatternDataSelectionModel()->highlightEltsWithAssocs(assocsIndexes); + } + else + { + /*more than one element associated to this geom object: just highlight in the views, + not in the model (because of mono selection in the model).*/ - eltType = treeVariant.toInt(); - docEntry = docEntryVariant.toString(); + //hight the selected geom obj in the occ view + if (HEXABLOCKGUI::currentOccGView != NULL) + { + QMultiMap entrySubIDs; + entrySubIDs.insert(parentShapeName, eltSubShape->getIdent()); - if ( eltType != GROUP_TREE ){ - //INFOS("bad element type : not a group item" << eltType ); - return; - } - // fin ** data from model - - // Select the document in Salome - docActor = dynamic_cast( findActorByEntry( currentVTKViewWindow, docEntry.toLatin1() ) ); - if ( docActor == NULL) return; - docIO = docActor->getIO(); - - // Highlight in vtk view the element from document - DocumentModel::Group kind; - QModelIndexList iElements = m->getGroupElements( eltIndex, kind ); - - // Set selection mode in VTK view - switch (kind){ - case HEXA_NS::HexaCell: case HEXA_NS::HexaNode: currentVTKViewWindow->SetSelectionMode(VolumeSelection); break; - case HEXA_NS::QuadCell: case HEXA_NS::QuadNode: currentVTKViewWindow->SetSelectionMode(FaceSelection); break; - case HEXA_NS::EdgeCell: case HEXA_NS::EdgeNode: currentVTKViewWindow->SetSelectionMode(EdgeSelection); break; - case HEXA_NS::VertexNode: currentVTKViewWindow->SetSelectionMode(NodeSelection); break; - } + HEXABLOCKGUI::currentOccGView->highlight(entrySubIDs); + } + //...and its associated elements in the vtk view + HEXABLOCKGUI::currentDocGView->highlight(assocsIndexes); + } +} - QString eltEntry; - foreach( const QModelIndex& iElt, iElements ){ - eltEntry = iElt.data( HEXA_ENTRY_ROLE ).toString(); - vtkElemsId = docActor->vtkElemsId[ eltEntry.toInt() ]; - if ( vtkElemsId > 0 ) aMap.Add( vtkElemsId ); - } +QModelIndex PatternGeomSelectionModel::getModelIndex(const Handle(SALOME_InteractiveObject)& anIObject) +{ + QModelIndex result; + DocumentModel *docModel = NULL; + const QSortFilterProxyModel *pModel = dynamic_cast( model() ); + if ( pModel != NULL) + docModel = dynamic_cast( pModel->sourceModel()); + + if ( docModel == NULL) return result; + + //verify if the selection is really from OCC View + bool fromGEOM = ( strcmp("GEOM", anIObject->getComponentDataType()) == 0 ); + if ( !fromGEOM || HEXABLOCKGUI::selectionMgr() == NULL || + HEXABLOCKGUI::currentOccGView->getViewWindow() == NULL) + return result; + + // QString aName; + GEOM::GEOM_Object_var aGeomObj = GEOMBase::ConvertIOinGEOMObject( anIObject ); + + //extract associated elements in the model + if ( GEOMBase::IsShape(aGeomObj) ){ + // aName = GEOMBase::GetName(aGeomObj); + TColStd_IndexedMapOfInteger anIndexes; + HEXABLOCKGUI::selectionMgr()->GetIndexes(anIObject, anIndexes); + if (anIndexes.Extent() == 0) return result; + QString aGeomObjStudyEntry = aGeomObj->GetStudyEntry(); + QString aGeomObjModelEntry = docModel->getGeomObjName(aGeomObjStudyEntry) + "," + QString::number(anIndexes(1)); + + HEXA_NS::SubShape* ssh = docModel->getGeomPtr(aGeomObjModelEntry); + if (ssh != NULL) + { + MESSAGE("Tranna get: " << aGeomObjModelEntry.toStdString() << ", " << ssh->getName()); + } + else + { + MESSAGE("YOUR SHAPE IS NULL"); + } + MESSAGE("Tranna get: " << aGeomObjModelEntry.toStdString()); + HEXA_NS::VertexShape* vSh = dynamic_cast(ssh); + HEXA_NS::EdgeShape* eSh = dynamic_cast(ssh); + HEXA_NS::FaceShape* fSh = dynamic_cast(ssh); + + if (vSh != NULL) + result = indexBy( HEXA_DATA_ROLE, QVariant::fromValue(vSh)); + else if (eSh != NULL) + { + MESSAGE("=====> An EDGE: "<< eSh->getName()); + result = indexBy( HEXA_DATA_ROLE, QVariant::fromValue(eSh)); + } + else if (fSh != NULL) + result = indexBy( HEXA_DATA_ROLE, QVariant::fromValue(fSh)); + } + return result; +} - selector->AddOrRemoveIndex( docIO, aMap, false ); - currentVTKViewWindow->highlight( docIO, true, true ); +// //=========================================================================== +// GroupsSelectionModel +// //=========================================================================== +GroupsSelectionModel::GroupsSelectionModel( QAbstractItemModel * model ): +SelectionModel( model ) +{ + connect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), + this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ), Qt::UniqueConnection ); + connect( this, SIGNAL( selectionChanged( const QItemSelection & , const QItemSelection & ) ), + this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ), Qt::UniqueConnection ); +} + +GroupsSelectionModel::~GroupsSelectionModel() +{ + disconnect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), + this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ) ); + disconnect( this, SIGNAL( selectionChanged( const QItemSelection & , const QItemSelection & ) ), + this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ) ); } + void GroupsSelectionModel::onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ) { - MESSAGE("GroupsSelectionModel::onSelectionChanged"); try { // if ( _salomeSelectionMgr == NULL ) return; // _salomeSelectionMgr->clearSelected(); // erasePreview(true); QModelIndexList indexes = selected.indexes(); for( QModelIndexList::const_iterator i_index = indexes.begin(); i_index != indexes.end(); ++i_index ){ - MESSAGE( "entry selected" << i_index->data( HEXA_ENTRY_ROLE ).toString().toStdString() ); - _highlightGroups( *i_index ); + HEXABLOCKGUI::currentDocGView->highlightGroups( *i_index ); } // CS_BP todo SALOMEGUI_Swig.cxx:370 @@ -933,13 +689,19 @@ void GroupsSelectionModel::onSelectionChanged( const QItemSelection & selected, } + +// //=========================================================================== +// MeshSelectionModel +// //=========================================================================== + + MeshSelectionModel::MeshSelectionModel( QAbstractItemModel * model ): -QItemSelectionModel( model ) +SelectionModel( model ) { connect( this, SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), - this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ) ); + this, SLOT( onCurrentChanged( const QModelIndex & , const QModelIndex & ) ), Qt::UniqueConnection ); connect( this, SIGNAL( selectionChanged( const QItemSelection & , const QItemSelection & ) ), - this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ) ); + this, SLOT( onSelectionChanged( const QItemSelection & , const QItemSelection & ) ), Qt::UniqueConnection ); } @@ -952,104 +714,13 @@ MeshSelectionModel::~MeshSelectionModel() } -QModelIndex MeshSelectionModel::indexBy( int role, const QVariant& var ) -{ - QModelIndex eltIndex; // element (vertex, edge, quad) of model - const QAbstractItemModel* theModel = model(); - if ( !theModel ) return eltIndex; - QModelIndexList theIndexes = theModel->match( theModel->index(0, 0), - role, - var, - 1, - Qt::MatchRecursive /*| Qt::MatchContains*/ );//Qt::MatchFixedString ); - if ( theIndexes.count()>0 ) - eltIndex = theIndexes[0] ; - return eltIndex; -} - - - -SVTK_ViewWindow* MeshSelectionModel::_getVTKViewWindow() -{ -// SVTK_ViewWindow* aVtkView = HEXABLOCKGUI::currentVtkView; - return HEXABLOCKGUI::currentVtkView; -} - - -void MeshSelectionModel::_highlightPropagation( const QModelIndex& eltIndex ) -{ - const MeshModel* m = dynamic_cast( model() ); - if ( m == NULL ) return; - SVTK_ViewWindow* currentVTKViewWindow = _getVTKViewWindow(); - if ( currentVTKViewWindow == NULL ) return; - SVTK_Selector* selector = currentVTKViewWindow->GetSelector(); - if ( selector == NULL ) return; - - // document selection - Document_Actor* docActor = NULL; - Handle(SALOME_InteractiveObject) docIO; - SALOME_ListIO aList; - - // element highlight - TColStd_MapOfInteger aMap; - QList::const_iterator anIter; - int vtkElemsId; - - // data from model - int eltType; - QString docEntry; - - QVariant treeVariant = eltIndex.data( HEXA_TREE_ROLE ); - QVariant docEntryVariant = eltIndex.data( HEXA_DOC_ENTRY_ROLE ); - - if ( !treeVariant.isValid() || !docEntryVariant.isValid() ){ - //INFOS("data from model not valid"); - return; - } - - eltType = treeVariant.toInt(); - docEntry = docEntryVariant.toString(); - - if ( eltType != PROPAGATION_TREE ){ - //INFOS("bad element type : not a propagation item" << eltType ); - return; - } - - // Select the document in Salome - docActor = dynamic_cast( findActorByEntry( currentVTKViewWindow, docEntry.toLatin1() ) ); - if ( docActor == NULL) return; - -// // Set selection mode in VTK view - currentVTKViewWindow->SetSelectionMode(EdgeSelection); - docIO = docActor->getIO(); - - // Highlight in vtk view the element from document - QModelIndexList iEdges = m->getPropagation( eltIndex ); - - QString edgeEntry; - foreach( const QModelIndex& iEdge, iEdges ){ - edgeEntry = iEdge.data( HEXA_ENTRY_ROLE ).toString(); - vtkElemsId = docActor->vtkElemsId[ edgeEntry.toInt() ]; - if ( vtkElemsId > 0 ) aMap.Add( vtkElemsId ); - } - - selector->AddOrRemoveIndex( docIO, aMap, false ); - currentVTKViewWindow->highlight( docIO, true, true ); -} - - - void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ) { - MESSAGE("MeshSelectionModel::onSelectionChanged"); try { - // if ( _salomeSelectionMgr == NULL ) return; - // _salomeSelectionMgr->clearSelected(); - // erasePreview(true); + QModelIndexList indexes = selected.indexes(); for( QModelIndexList::const_iterator i_index = indexes.begin(); i_index != indexes.end(); ++i_index ){ - MESSAGE( "entry selected" << i_index->data( HEXA_ENTRY_ROLE ).toString().toStdString() ); - _highlightPropagation( *i_index ); + HEXABLOCKGUI::currentDocGView->highlightPropagation( *i_index ); } // CS_BP todo SALOMEGUI_Swig.cxx:370 @@ -1063,6 +734,13 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co } + + + + + + + // //================================================================================= // // function : activateSelection // // purpose : Activate selection in accordance with myEditCurrentArgument @@ -1070,7 +748,7 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co // void PatternDataSelectionModel::activateSelection() // { // erasePreview(false); -// +// // // local selection // if (!myObject->_is_nil() && !isAllSubShapes()) // { @@ -1084,38 +762,38 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co // myIsHiddenMain = true; // } // } -// +// // int prevDisplayMode = aDisplayer->SetDisplayMode(0); -// +// // SUIT_ViewWindow* aViewWindow = 0; // SUIT_Study* activeStudy = SUIT_Session::session()->activeApplication()->activeStudy(); // if (activeStudy) // aViewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); // if (aViewWindow == 0) return; -// +// // SUIT_ViewManager* aViewManager = aViewWindow->getViewManager(); // if (aViewManager->getType() != OCCViewer_Viewer::Type() && // aViewManager->getType() != SVTK_Viewer::Type()) // return; -// +// // SUIT_ViewModel* aViewModel = aViewManager->getViewModel(); // SALOME_View* aView = dynamic_cast(aViewModel); // if (aView == 0) return; -// +// // //TopoDS_Shape aMainShape = GEOM_Client::get_client().GetShape(GeometryGUI::GetGeomGen(), myObject); -// +// // TopTools_IndexedMapOfShape aSubShapesMap; // TopExp::MapShapes(myShape, aSubShapesMap); // CORBA::String_var aMainEntry = myObject->GetStudyEntry(); // QString anEntryBase = aMainEntry.in(); -// +// // TopExp_Explorer anExp (myShape, (TopAbs_ShapeEnum)shapeType()); // for (; anExp.More(); anExp.Next()) // { // TopoDS_Shape aSubShape = anExp.Current(); // int index = aSubShapesMap.FindIndex(aSubShape); // QString anEntry = anEntryBase + QString("_%1").arg(index); -// +// // SALOME_Prs* aPrs = aDisplayer->buildSubshapePresentation(aSubShape, anEntry, aView); // if (aPrs) { // displayPreview(aPrs, true, false); // append, do not update @@ -1124,7 +802,7 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co // aDisplayer->UpdateViewer(); // aDisplayer->SetDisplayMode(prevDisplayMode); // } -// +// // globalSelection(GEOM_ALLSHAPES); // } @@ -1139,12 +817,12 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co // LightApp_DataOwner* anOwher = new LightApp_DataOwner( anEntry ); // aList.append( anOwher ); // } -// +// // SUIT_Session* session = SUIT_Session::session(); // SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); // if ( !app ) // return false; -// +// // LightApp_SelectionMgr* aMgr = app->selectionMgr(); // if ( !aMgr ) // return false; @@ -1158,14 +836,14 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co // SMESH_Actor* anActor = SMESH::FindActorByObject(myMesh); // if (!anActor || !anActor->hasIO()) // return; -// +// // Handle(SALOME_InteractiveObject) anIO = anActor->getIO(); // //mySelectionMgr->clearSelected(); // //mySelectionMgr->AddIObject(anIO, false); // SALOME_ListIO aList; // aList.Append(anIO); // mySelectionMgr->setSelectedObjects(aList, false); -// +// // // Remove filter corresponding to the current type from viewer // int aType = myTable->GetType(); // int aFilterId = SMESH::UnknownFilter; @@ -1174,19 +852,19 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co // else if (aType == SMESH::VOLUME) aFilterId = SMESH::VolumeFilter; // Handle(VTKViewer_Filter) aFilter = SMESH::GetFilter(aFilterId); // SMESH::RemoveFilter(aFilterId); -// +// // // get vtk ids // TColStd_MapOfInteger aMap; // QList::const_iterator anIter; // for (anIter = theIds.begin(); anIter != theIds.end(); ++anIter) { // aMap.Add(*anIter); // } -// +// // // Set new selection // activeViewWindow->AddOrRemoveIndex(anIO, aMap, false); // if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) // aViewWindow->highlight( anIO, true, true ); -// +// // // insert previously stored filter in viewer if necessary // if (!aFilter.IsNull()) // SMESH::SetFilter(aFilter); @@ -1218,10 +896,10 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co // { // if (myBusy) return; // myMeshActor = 0; -// +// // SALOME_ListIO aList; // mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type()); -// +// // if (aList.Extent() == 1) { // Handle(SALOME_InteractiveObject) anIO = aList.First(); // myMeshActor = SMESH::FindActorByEntry(anIO->getEntry()); @@ -1244,107 +922,11 @@ void MeshSelectionModel::onSelectionChanged( const QItemSelection & selected, co // } // } // } -// +// // reset(); // } -/* - -void PatternDataSelectionModel::setGeomEngine( GEOM::GEOM_Gen_var geomEngine ) -{gaumont parnasse - _geomEngine = geomEngine; -} - -GEOM::GEOM_IOperations_ptr PatternDataSelectionModel::createOperation() -{ -// return myGeomGUI->GetGeomGen()->GetIBasicOperations(getStudyId()); - return _geomEngine->GetIBasicOperations(getStudyId()); -} - -bool PatternDataSelectionModel::execute(ObjectList& objects) -{ - bool res = false; - - _PTR(Study) aStudy = GetActiveStudyDocument(); - _PTR(SObject) aSChild; - CORBA::Object_var aCorbaObj = CORBA::Object::_nil(); - GEOM::GEOM_Object_var assoc; - - foreach( const DocumentModel::GeomObj& anAssoc, _assocList ){ - std::cout << "FOUND=> " << anAssoc.entry.toStdString() << std::endl; - aSChild = aStudy->FindObjectID( anAssoc.entry.toStdString() ); - aCorbaObj = corbaObj(aSChild); - assoc = GEOM::GEOM_Object::_narrow(aCorbaObj); - - if ( !CORBA::is_nil(assoc) ){ - std::cout << "geom to highlight =>" << anAssoc.name.toStdString() << std::endl; - objects.push_back( assoc._retn() ); - res = true; - } else { - std::cout << "not a geom =>" << anAssoc.name.toStdString()<< std::endl; - } - } - - return res; -} -*/ - - -// SVTK_ViewWindow* PatternDataSelectionModel::GetViewWindow() -// { -// SalomeApp_Application* anApp = dynamic_cast -// (SUIT_Session::session()->activeApplication()); -// if (anApp) { -// if (SVTK_ViewWindow* aView = dynamic_cast(anApp->desktop()->activeWindow())) -// return aView; -// -// // SUIT_ViewManager* aViewManager = -// // anApp->getViewManager(SVTK_Viewer::Type(), createIfNotFound); -// // if (aViewManager) { -// // if (SUIT_ViewWindow* aViewWindow = aViewManager->getActiveView()) { -// // if (SVTK_ViewWindow* aView = dynamic_cast(aViewWindow)) { -// // aViewWindow->raise(); -// // aViewWindow->setFocus(); -// // return aView; -// // } -// // } -// // } -// } -// return NULL; -// } - - - - -// void PatternDataSelectionModel::SetSelectionMode(Selection_Mode theMode) -// { -// -// QList aSelectors; -// _salomeSelectionMgr->selectors( SVTK_Viewer::Type(), aSelectors ); -// QListIterator it( aSelectors ); -// -// std::cout << "PatternDataSelectionModel::SetSelectionMode()" << std::endl; -// while ( it.hasNext() ) -// { -// // SUIT_Selector* selector = it.next(); -// SVTK_Selector* selector = dynamic_cast( it.next() ); -// if ( selector ){ -// std::cout << "PatternDataSelectionModel::SetSelectionMode()" << theMode << std::endl; -// selector->SetSelectionMode(theMode); -// } -// } -// } - -// LightApp_SelectionMgr* PatternDataSelectionModel::selectionMgr() -// { -// SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); -// if( anApp ) -// return dynamic_cast( anApp->selectionMgr() ); -// else -// return 0; -// } - // //CS_TEST // SUIT_DataOwnerPtrList aOList; // LightApp_DataOwner* anOwher = new LightApp_DataOwner( "0:1:1:1:2" ); @@ -1352,31 +934,31 @@ bool PatternDataSelectionModel::execute(ObjectList& objects) // _salomeSelectionMgr->setSelected( aOList, false ); // //CS_TEST -// void PatternDataSelectionModel::_highlightGEOM( const QModelIndex & anEltIndex ) +// void PatternDataSelectionModel::highlightGEOM( const QModelIndex & anEltIndex ) // { -// std::cout << "PatternDataSelectionModel::_highlightGEOM go find ASSOCIATION for"<< anEltIndex.data().toString().toStdString()<getViewWindow() +// // QList assocList; -// +// // DocumentModel *docModel = NULL; // const QSortFilterProxyModel *pModel = NULL; // // const QStandardItemModel *smodel // // const QAbstractItemModel *theModel = NULL; -// +// // pModel = dynamic_cast( model() ); -// +// // std::cout << "pModel "<< pModel << std::endl; // if ( pModel ){ // std::cout << "if ( pModel ){"<< std::endl; -// docModel = dynamic_cast( pModel->sourceModel() ); +// docModel = dynamic_cast( pModel->sourceModel() ); // if ( docModel ){ // std::cout << "if ( docModel ){"<< std::endl; // assocList = docModel->getAssociations( pModel->mapToSource(anEltIndex) ); // } // } -// -// +// +// // _PTR(Study) aStudy = GetActiveStudyDocument(); // _PTR(SObject) aSChild; // CORBA::Object_var aCorbaObj = CORBA::Object::_nil(); @@ -1390,25 +972,25 @@ bool PatternDataSelectionModel::execute(ObjectList& objects) // // double start; // // double end; // // }; -// +// // QVariant treeVariant = pModel->mapToSource(anEltIndex).data( HEXA_TREE_ROLE ); // int eltType; // if ( !treeVariant.isValid() ) return; // eltType = treeVariant.toInt(); -// +// // // GEOM::GeomObjPtr // // GEOM::GEOM_Object_ptr firstLine; //firstLine.nullify();// // GEOM::GEOM_Object_var firstLine = GEOM::GEOM_Object::_nil(); //GEOM::GeomObjPtr // GEOM::GEOM_Object_var lastLine = GEOM::GEOM_Object::_nil(); // double firstParameter = 0.2; //CS_TODO // double lastParameter = 0.4; //CS_TODO -// +// // foreach( const DocumentModel::GeomObj& anAssoc, assocList ){ // std::cout << "FOUND=> " << anAssoc.entry.toStdString() << std::endl; // aSChild = aStudy->FindObjectID( anAssoc.entry.toStdString() ); // aCorbaObj = corbaObj(aSChild); // assoc = GEOM::GEOM_Object::_narrow(aCorbaObj); -// +// // if ( !CORBA::is_nil(assoc) ){ // std::cout << "geom to highlight =>" << anAssoc.name.toStdString() << std::endl; // // objects.push_back(assoc._retn()); @@ -1437,7 +1019,7 @@ bool PatternDataSelectionModel::execute(ObjectList& objects) // GEOM::GEOM_IBasicOperations_var anOper = _geomEngine->GetIBasicOperations( getStudyId() ); // GEOM::GEOM_Object_var firstPoint = anOper->MakePointOnCurve( firstLine, firstParameter ); // GEOM::GEOM_Object_var lastPoint = anOper->MakePointOnCurve( lastLine, lastParameter ); -// +// // // std::cout << "firstPoint->_is_nil() =>" << firstPoint->_is_nil() << std::endl; // std::cout << "lastPoint->_is_nil() =>" << lastPoint->_is_nil() << std::endl; // if ( !( CORBA::is_nil(firstPoint) ) )// !firstPoint->_is_nil() ) @@ -1446,4 +1028,4 @@ bool PatternDataSelectionModel::execute(ObjectList& objects) // displayPreview( lastPoint._retn(), true ); // }*/ // } -// +// diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentSelectionModel.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentSelectionModel.hxx index e2ee8b0..1604577 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentSelectionModel.hxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_DocumentSelectionModel.hxx @@ -33,16 +33,55 @@ #include "MyGEOMBase_Helper.hxx" #include "klinkitemselectionmodel.hxx" -#include "HEXABLOCKGUI_DocumentModel.hxx" - class OCCViewer_ViewWindow; + namespace HEXABLOCK { namespace GUI { + class SelectionModel: public QItemSelectionModel + { + Q_OBJECT + + public: + + SelectionModel( QAbstractItemModel * model ); + virtual ~SelectionModel(); + + QModelIndex indexBy( int role, const QString& value ); + QModelIndex indexBy( int role, const QVariant& var ); + QModelIndex indexOf( const QString& anIOEntry, int role ); + QModelIndexList indexListOf( const QString& anEntry, int role ); + void setIgnoreSignal(bool state) { ignoreSignal = state; } + + virtual void geomSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ) {} + virtual void vtkSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ) {} + + bool salomeNothingSelected; + + protected slots: + + virtual void onCurrentChanged( const QModelIndex & current, + const QModelIndex & previous ) {} + + virtual void onSelectionChanged( const QItemSelection & selected, + const QItemSelection & deselected ) {} + + void salomeSelectionChanged(); // Salome to Qt + + protected: + QModelIndexList getSelectionFromModel(const Handle(SALOME_InteractiveObject)& anIObject); + QModelIndexList getSelectionAssociactions(const Handle(SALOME_InteractiveObject)& anIObject); + + bool ignoreSignal; +// bool _theModelSelectionChanged; +// bool _theVtkSelectionChanged; +// bool _theGeomSelectionChanged; + }; + class PatternBuilderSelectionModel: public KLinkItemSelectionModel { public: @@ -53,8 +92,7 @@ namespace HEXABLOCK } }; - class PatternDataSelectionModel : public QItemSelectionModel, - public MyGEOMBase_Helper + class PatternDataSelectionModel : public SelectionModel { Q_OBJECT @@ -62,57 +100,43 @@ namespace HEXABLOCK PatternDataSelectionModel( QAbstractItemModel * model ); virtual ~PatternDataSelectionModel(); - void setVertexSelection(); - void setEdgeSelection(); - void setQuadSelection(); - void setHexaSelection(); - void setAllSelection(); - void highlightVTKElts( const QModelIndexList& elts ); void highlightEltsWithAssocs(const QModelIndexList& elts); - void _highlightGEOM( const QMultiMap& entrySubIDs ); - void _highlightGEOM( const QModelIndex & index ); - - QModelIndex indexBy( int role, const QString& value ); - QModelIndex indexBy( int role, const QVariant& var ); - int getSelectionFilter() const { return _selectionFilter;} + QModelIndexList getGeomAssociations(const QModelIndex& dataIndex); //Salome - void setSalomeSelectionMgr( LightApp_SelectionMgr* mgr ); - void SetSelectionMode( Selection_Mode theMode ); - QModelIndex _geomSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ); - QModelIndex _vtkSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ); - - - bool salomeNothingSelected; + virtual void geomSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ); + virtual void vtkSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ); protected slots: - void onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ); - void onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ); - void salomeSelectionChanged(); // Salome to Qt + virtual void onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ); + virtual void onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ); - private: - SVTK_ViewWindow* _getVTKViewWindow(); - OCCViewer_ViewWindow* _getOCCViewWindow(); + }; - QModelIndex _indexOf( const QString& anIOEntry, int role ); - QModelIndexList _indexListOf( const QString& anEntry, int role ); - void _setVTKSelectionMode( const QModelIndex& eltIndex ); - void _selectVTK( const QModelIndex & index ); - SUIT_ViewWindow* initOccViewManager(); + class PatternGeomSelectionModel : public SelectionModel + { + Q_OBJECT + public: + PatternGeomSelectionModel( QAbstractItemModel * model ); + virtual ~PatternGeomSelectionModel(); - LightApp_SelectionMgr* _salomeSelectionMgr; - int _selectionFilter; + QModelIndex getModelIndex(const Handle(SALOME_InteractiveObject)& anIObject); +// void highlightEltsWithAssocs(const QModelIndexList& elts); +// +// //Salome +// virtual void geomSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ); +// virtual void vtkSelectionChanged( const Handle(SALOME_InteractiveObject)& anIObject ); - bool _theModelSelectionChanged; - bool _theVtkSelectionChanged; - bool _theGeomSelectionChanged; - }; + protected slots: + virtual void onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ); + virtual void onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ); + }; - class GroupsSelectionModel : public QItemSelectionModel + class GroupsSelectionModel : public SelectionModel { Q_OBJECT @@ -120,22 +144,15 @@ namespace HEXABLOCK GroupsSelectionModel( QAbstractItemModel * model ); virtual ~GroupsSelectionModel(); - QModelIndex indexBy( int role, const QVariant& var ); - protected slots: -// void onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ); - void onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ); - - private: - SVTK_ViewWindow* _getVTKViewWindow(); - void _highlightGroups( const QModelIndex& eltIndex ); +// virtual void onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ); + virtual void onSelectionChanged( const QItemSelection & selected, + const QItemSelection & deselected ); }; - - - class MeshSelectionModel : public QItemSelectionModel + class MeshSelectionModel : public SelectionModel { Q_OBJECT @@ -143,15 +160,10 @@ namespace HEXABLOCK MeshSelectionModel( QAbstractItemModel * model ); virtual ~MeshSelectionModel(); - QModelIndex indexBy( int role, const QVariant& var ); - protected slots: -// void onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ); - void onSelectionChanged( const QItemSelection & selected, const QItemSelection & deselected ); - - private: - SVTK_ViewWindow* _getVTKViewWindow(); - void _highlightPropagation( const QModelIndex& eltIndex ); +// virtual void onCurrentChanged( const QModelIndex & current, const QModelIndex & previous ); + virtual void onSelectionChanged( const QItemSelection & selected, + const QItemSelection & deselected ); }; diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_GraphicViewsHandler.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_GraphicViewsHandler.cxx new file mode 100644 index 0000000..400a842 --- /dev/null +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_GraphicViewsHandler.cxx @@ -0,0 +1,176 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +//Salome +#include +#include +#include +#include +#include + +//HexaBlock +#include "HEXABLOCKGUI_GraphicViewsHandler.hxx" +#include "utilities.h" + + + +using namespace HEXABLOCK::GUI; + + + +/*====================================================== createDocumentGraphicView + * Create a new document + * Returns the new document's window + *=============================================================================*/ +VtkDocumentGraphicView* GraphicViewsHandler::createDocumentGraphicView(DocumentModel* docModel, + SVTK_ViewWindow* wnd, QWidget* parent) +{ + +// if (wnd == NULL) return NULL; +// VtkDocumentGraphicView* dgview = getDocumentGraphicView(wnd); +// if (dgview != NULL) return dgview; +// +// docGraphicViews[wnd] = new VtkDocumentGraphicView(docModel, wnd, parent); +// return docGraphicViews[wnd]; + return new VtkDocumentGraphicView(docModel, wnd, parent); +} + +/*====================================================== getDocumentGraphicView + * Returns the document corresponding to a vtk window (view) + *=============================================================================*/ +VtkDocumentGraphicView* GraphicViewsHandler::getDocumentGraphicView(SVTK_ViewWindow* view) const +{ + if (view == NULL || !docGraphicViews.contains(view)) return NULL; + return docGraphicViews[view]; +} + +/*====================================================== getOrCreateVtkWindow +/// Returns the active vtk window if there's one, +/// create one and return it otherwise. + *=============================================================================*/ +SVTK_ViewWindow* GraphicViewsHandler::getOrCreateVtkWindow() const +{ + SalomeApp_Application* anApp = dynamic_cast(SUIT_Session::session()->activeApplication()); + if( anApp == NULL) return NULL; + SUIT_ViewManager* vmgr = anApp->getViewManager( SVTK_Viewer::Type(), true); + + return dynamic_cast(vmgr->getActiveView()); +} + + +/*====================================================== createVtkWindow +/// Create a vtk window and return it + *=============================================================================*/ +SVTK_ViewWindow* GraphicViewsHandler::createVtkWindow() const +{ + SalomeApp_Application* anApp = dynamic_cast(SUIT_Session::session()->activeApplication()); + if( anApp == NULL) return NULL; + + SUIT_ViewManager* vmgr = anApp->newViewManager (SVTK_Viewer::Type()); + SVTK_ViewWindow* view = dynamic_cast(vmgr->getActiveView()); + if (view == NULL) return NULL; + view->setWindowTitle(QObject::tr("HEXABLOCK") + " : " + view->windowTitle()); + + return view; +} + + +/*====================================================== getOrCreateOccWindow +/// Returns the active occ window if there's one, +/// create one and return it otherwise. + *=============================================================================*/ +OCCViewer_ViewWindow* GraphicViewsHandler::getOrCreateOccWindow() const +{ + SalomeApp_Application* anApp = dynamic_cast(SUIT_Session::session()->activeApplication()); + if( anApp == NULL) return NULL; + SUIT_ViewManager* vmgr = anApp->getViewManager(OCCViewer_Viewer::Type(), true); + + return dynamic_cast(vmgr->getActiveView()); +} + + +/*====================================================== createOccWindow +/// Create an open cascade window and return it + *=============================================================================*/ +OCCViewer_ViewWindow* GraphicViewsHandler::createOccWindow() const +{ + SalomeApp_Application* anApp = dynamic_cast(SUIT_Session::session()->activeApplication()); + if( anApp == NULL) return NULL; + + SUIT_ViewManager* vmgr = anApp->newViewManager (OCCViewer_Viewer::Type()); + OCCViewer_ViewWindow* view = dynamic_cast(vmgr->getActiveView()); + if (view == NULL) return NULL; + view->setWindowTitle(QObject::tr("HEXABLOCK") + " : " + view->windowTitle()); + + return view; +} + + +/*====================================================== createDocumentGraphicView + * Close a document graphic view + *=============================================================================*/ +void GraphicViewsHandler::closeDocumentGraphicView(SVTK_ViewWindow* window) +{ + VtkDocumentGraphicView* dgview = getDocumentGraphicView(window); + if (dgview == NULL) return; //There's nothing to do if the window has no document + + //remove the document + docGraphicViews.remove(window); + delete dgview; +} + +//void GraphicViewsHandler::onPatternDatachanged() +//{ +// INIT_REAC(V_patternDatachaged); +// OCCview->reacPatternDatachanged(); +// OUT_REAC(); +//} + +//VTKGraphicView* m_VTKview; +// +//void DocumentHandler::switchOnVTKGraphicView() +//{ +// verifieVTKView(); +// +// //connect signals +// connect( m_VTKview->getPatternDataSelectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &) ), +// this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); +// connect( m_VTKview->getPatternBuilderSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), +// this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); +// connect( m_VTKview->getGroupsSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), +// this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); +// connect( m_VTKview->getMeshSelectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &) ), +// this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); +// +// _showDialogBox(getDlgBox(view)); +// } +// +//DocumentHandler::onSelectionChanged(const QItemSelection &, const QItemSelection &) +//{ +// addMapConnect(++cptConnect;"onSelectionChanged"); +// if(onAction) {return;} +// onAction = true; +// +// ptHexaGUI->onSelectionChanged(const QItemSelection &, const QItemSelection &); +// m_VTKview->onSelectionChanged(const QItemSelection &, const QItemSelection &); +// +// onAction = false; +//} + + diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_GraphicViewsHandler.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_GraphicViewsHandler.hxx new file mode 100644 index 0000000..66c6125 --- /dev/null +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_GraphicViewsHandler.hxx @@ -0,0 +1,61 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef _HEXABLOCKGUI_VTKGRAPHICVIEWSHANDLER_HXX_ +#define _HEXABLOCKGUI_VTKGRAPHICVIEWSHANDLER_HXX_ + +//Salome Includes +#include +#include + +//Qt Includes +#include + +//HEXABLOCK Includes +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" + +namespace HEXABLOCK +{ + namespace GUI + { + + class GraphicViewsHandler + { + + public: + GraphicViewsHandler()/*: vtkViewManager(NULL)*/ {} + virtual ~GraphicViewsHandler() {} + VtkDocumentGraphicView* getDocumentGraphicView(SVTK_ViewWindow* view) const; + VtkDocumentGraphicView* createDocumentGraphicView(DocumentModel* docModel, SVTK_ViewWindow* wnd, QWidget* parent); + SVTK_ViewWindow* getOrCreateVtkWindow() const; + SVTK_ViewWindow* createVtkWindow() const; + OCCViewer_ViewWindow* getOrCreateOccWindow() const; + OCCViewer_ViewWindow* createOccWindow() const; + void closeDocumentGraphicView(SVTK_ViewWindow* window); + void setViewManager(SUIT_ViewManager* vmanager); + int getNbDocumentGViews() { return docGraphicViews.count();} + + protected: + QMap docGraphicViews; + }; + + } +} + +#endif diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_OccGraphicView.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_OccGraphicView.cxx new file mode 100644 index 0000000..955b8c1 --- /dev/null +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_OccGraphicView.cxx @@ -0,0 +1,185 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + + + +#include "HEXABLOCKGUI_OccGraphicView.hxx" +#include "utilities.h" +#include "HEXABLOCKGUI.hxx" +#include "HEXABLOCKGUI_DocumentModel.hxx" +#include "GEOMBase.h" +#include "MyGEOMBase_Helper.hxx" +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" +#include "HexNewShape.hxx" +#include "HexVertexShape.hxx" +#include "HexEdgeShape.hxx" +#include "HexFaceShape.hxx" + +#include +#include + + + +using namespace HEXABLOCK::GUI; + +// ----------------------------------------------------------------------- +// OccGraphicView implementation +// ----------------------------------------------------------------------- + +OccGraphicView::OccGraphicView( OCCViewer_ViewWindow* view, QWidget* parent ): + viewWindow( view ), + selectionMode(TopAbs_SHAPE) +{ +} + +void OccGraphicView::setSelectionMode(TopAbs_ShapeEnum mode) +{ + if (HEXABLOCKGUI::selectionMgr() == NULL || + HEXABLOCKGUI::geomBaseHelper == NULL || viewWindow == NULL) return; + + HEXABLOCKGUI::selectionMgr()->clearSelected(); + HEXABLOCKGUI::geomBaseHelper->globalSelection(viewWindow); +// HEXABLOCKGUI::geomBaseHelper->localSelection(GEOM::GEOM_Object::_nil(), mode); + HEXABLOCKGUI::geomBaseHelper->localSelection(viewWindow, mode); + selectionMode = mode; + +} + +void OccGraphicView::setSelectionMode(const QModelIndex& eltIndex) +{ + + QVariant treeVariant = eltIndex.data( HEXA_TREE_ROLE ); + if ( !treeVariant.isValid() ) return; + int eltType = treeVariant.toInt(); + + switch ( eltType ){ + case VERTEX_TREE : setSelectionMode(TopAbs_VERTEX); break; + case VERTEX_DIR_TREE : setSelectionMode(TopAbs_VERTEX); break; + case EDGE_TREE : setSelectionMode(TopAbs_EDGE); break; + case EDGE_DIR_TREE : setSelectionMode(TopAbs_EDGE); break; + case QUAD_TREE : setSelectionMode(TopAbs_FACE); break; + case QUAD_DIR_TREE : setSelectionMode(TopAbs_FACE); break; + case HEXA_TREE : setSelectionMode(TopAbs_SHAPE); break; + case HEXA_DIR_TREE : setSelectionMode(TopAbs_SHAPE); break; + case GEOMSHAPE_TREE: setSelectionMode(TopAbs_SHAPE); break; + case GEOMSHAPE_DIR_TREE: setSelectionMode(TopAbs_SHAPE); break; + case GEOMPOINT_TREE: setSelectionMode(TopAbs_VERTEX); break; + case GEOMPOINT_DIR_TREE: setSelectionMode(TopAbs_VERTEX); break; + case GEOMEDGE_TREE: setSelectionMode(TopAbs_EDGE); break; + case GEOMEDGE_DIR_TREE: setSelectionMode(TopAbs_EDGE); break; + case GEOMFACE_TREE: setSelectionMode(TopAbs_FACE); break; + case GEOMFACE_DIR_TREE: setSelectionMode(TopAbs_FACE); break; + case PROPAGATION_TREE : setSelectionMode(TopAbs_EDGE); break; + case PROPAGATION_DIR_TREE : setSelectionMode(TopAbs_EDGE); break; + } +} + + +void OccGraphicView::clearSelection() +{ + if (HEXABLOCKGUI::selectionMgr() == NULL || viewWindow == NULL || + HEXABLOCKGUI::geomBaseHelper == NULL) + return; + + HEXABLOCKGUI::selectionMgr()->clearSelected(); + HEXABLOCKGUI::geomBaseHelper->globalSelection(viewWindow); + HEXABLOCKGUI::geomBaseHelper->localSelection(viewWindow, TopAbs_SHAPE); + selectionMode = TopAbs_SHAPE; +} + + +void OccGraphicView::highlight( const QModelIndex & index ) +{ + + // getting association(s) from model + QMultiMap< QString, int > assocEntrySubIDs; + + if (HEXABLOCKGUI::currentDocGView == NULL || viewWindow == NULL) return; + DocumentModel* docModel = HEXABLOCKGUI::currentDocGView->getDocumentModel(); + if (docModel == NULL) return; + + assocEntrySubIDs += docModel->getAssocShapesIds(index); + highlight( assocEntrySubIDs ); +} + + +void OccGraphicView::highlight( const QModelIndexList & indexList ) +{ + +// QModelIndex index; + QMultiMap< QString, int > assocEntrySubIDs; + + if (HEXABLOCKGUI::currentDocGView == NULL || viewWindow == NULL) return; + DocumentModel* docModel = HEXABLOCKGUI::currentDocGView->getDocumentModel(); + PatternDataModel* pModel = HEXABLOCKGUI::currentDocGView->getPatternDataModel(); + if (docModel == NULL || pModel == NULL) return; + + foreach( const QModelIndex& anEltIndex, indexList) + { +// index = pModel->mapToSource(anEltIndex); + assocEntrySubIDs += docModel->getAssocShapesIds(anEltIndex); + } + highlight( assocEntrySubIDs ); +} + +void OccGraphicView::highlight( const QMultiMap& entrySubIDs ) +{ + if ( viewWindow == NULL ) return; + + SOCC_Viewer* soccViewer = dynamic_cast( viewWindow->getViewManager()->getViewModel() ); + if (!soccViewer) return; + + DocumentModel* docModel = HEXABLOCKGUI::currentDocGView->getDocumentModel(); + _PTR(Study) aStudy = GetActiveStudyDocument(); + if (!aStudy || docModel == NULL) return; + + CORBA::Object_var aCorbaObj = CORBA::Object::_nil(); + GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_nil(); + HEXABLOCKGUI::geomBaseHelper->erasePreview(true); + + foreach ( QString shapeName, entrySubIDs.keys() ){ + QString shapeEntry = docModel->getGeomObjEntry(shapeName); + _PTR(SObject) aSChild = aStudy->FindObjectID( shapeEntry.toStdString() ); + aCorbaObj = corbaObj( aSChild ); + aGeomObj = GEOM::GEOM_Object::_narrow( aCorbaObj ); + if ( !CORBA::is_nil(aGeomObj) ){ + QString objIOR = GEOMBase::GetIORFromObject( aGeomObj._retn() ); + Handle(GEOM_AISShape) aSh = GEOMBase::ConvertIORinGEOMAISShape( objIOR );//, true ); + if ( !aSh.IsNull() ){ + TColStd_IndexedMapOfInteger anIndexes; + foreach ( int subid, entrySubIDs.values(shapeName) ){ + if ( subid != -1 ) + anIndexes.Add( subid ); + } + if ( anIndexes.Extent() > 0 ){ // if it's a sub-shape + aSh->highlightSubShapes( anIndexes, true ); + // soccViewer->Repaint(); + } else { // or a main shape + // std::cout << "aSh->getIO() => " << aSh->getIO() << std::endl; + // soccViewer->setColor( aSh->getIO(), QColor( Qt::red ), true ); + // soccViewer->switchRepresentation( aSh->getIO(), 2 ); + // globalSelection(); + soccViewer->highlight( aSh->getIO(), true, true ); // TODO: not working + } + } + } + } + soccViewer->Repaint(); + +} diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_OccGraphicView.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_OccGraphicView.hxx new file mode 100644 index 0000000..0db8c18 --- /dev/null +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_OccGraphicView.hxx @@ -0,0 +1,73 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + + + +#ifndef _HEXABLOCKGUI_OCCGRAPHICVIEW_HXX_ +#define _HEXABLOCKGUI_OCCGRAPHICVIEW_HXX_ + + +#include +#include "HEXABLOCKGUI_SalomeTools.hxx" + +#include +#include + + + + +namespace HEXABLOCK +{ + + namespace GUI + { + + /******************************************************************************** + * OccGraphicView + ********************************************************************************/ + + class OccGraphicView + { + + public: + OccGraphicView(OCCViewer_ViewWindow* view, QWidget* parent=NULL); + virtual ~OccGraphicView(){}; + + void highlight( const QModelIndex & index ); + void highlight( const QModelIndexList & indexList ); + void highlight( const QMultiMap& entrySubIDs ); + + void setViewWindow(OCCViewer_ViewWindow* view) { viewWindow = view; } + OCCViewer_ViewWindow* getViewWindow() const { return viewWindow; } + + void setSelectionMode(TopAbs_ShapeEnum mode); + void setSelectionMode(const QModelIndex& eltIndex); + TopAbs_ShapeEnum getSelectionMode() const { return selectionMode; } + void clearSelection(); + + private: + OCCViewer_ViewWindow* viewWindow; + TopAbs_ShapeEnum selectionMode; + + }; + } +} + + +#endif diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_SalomeTools.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_SalomeTools.cxx index aef9246..206775b 100644 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_SalomeTools.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_SalomeTools.cxx @@ -62,6 +62,7 @@ #include "HEXABLOCKGUI.hxx" #include "HEXABLOCKGUI_SalomeTools.hxx" +#include "HEXABLOCKGUI_OccGraphicView.hxx" @@ -338,7 +339,11 @@ SALOME_Prs* MyGEOM_Displayer::BuildPrs( GEOM::GEOM_Object_ptr theObj ) return 0; SALOME_View* view = NULL; - SUIT_ViewManager* vman = HEXABLOCKGUI::currentOccView->getViewManager(); + + SUIT_ViewManager* vman = NULL; + if (HEXABLOCKGUI::currentOccGView->getViewWindow() != NULL) + vman = HEXABLOCKGUI::currentOccGView->getViewWindow()->getViewManager(); + SUIT_ViewModel* vmodel = NULL; if ( vman ) vmodel = vman->getViewModel(); diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_Trace.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_Trace.cxx index c8b563e..ada0578 100755 --- a/src/HEXABLOCKGUI/HEXABLOCKGUI_Trace.cxx +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_Trace.cxx @@ -23,11 +23,13 @@ #include "HEXABLOCKGUI_Trace.hxx" + #ifdef WNT #include #define getpid _getpid -#else -#include +#else // Modification INCKA AD +#include +#include #include #endif diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_VtkDocumentGraphicView.cxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_VtkDocumentGraphicView.cxx new file mode 100755 index 0000000..ee975d0 --- /dev/null +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_VtkDocumentGraphicView.cxx @@ -0,0 +1,1205 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +//#define _DEVDEBUG_ + +#include + +#include + +#include + +#include "utilities.h" + +#include + + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// VTK includes +#include +#include +#include +#include +#include +#include +// test tutorial (sphere) +#include +#include + +// test point (cf. SMESHGUI) +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "vtkLookupTable.h" +#include "vtkPoints.h" +#include "vtkCellArray.h" +#include "vtkFloatArray.h" +#include "vtkPolyData.h" +#include "vtkPolyDataMapper.h" +#include "vtkActor.h" +#include "vtkPointData.h" +#include "vtkProperty.h" + + +// #include "vtkStructuredGridReader.h" +#include "vtkUnstructuredGridReader.h" + +#include + + + + + +#ifndef M_PI +#define M_PI 3.1415927 +#endif + +#include "HEXABLOCKGUI_Trace.hxx" +#include "HEXABLOCKGUI_DocumentModel.hxx" +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" +#include "HEXABLOCKGUI.hxx" + + + +using namespace std; +using namespace HEXABLOCK::GUI; +using namespace HEXA_NS; + +Document_Actor::Document_Actor( Document* doc, const QString& entry ): + SALOME_Actor(), + _doc( doc ) +{ + DEBTRACE("Document_Actor::Document_Actor " << entry.toLatin1() ); + Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject( entry.toLatin1(), "HEXABLOCK" );//,theName); CS_TODO + setIO(anIO); + vtkUnstructuredGrid* aGrid = getUnstructuredGrid(); + // std::cout << "Document_Actor aGrid->GetNumberOfCells() =>"<< aGrid->GetNumberOfCells(); + vtkDataSetMapper* aMapper = vtkDataSetMapper::New(); + aMapper->SetInput(aGrid); + aGrid->Delete(); + + SetVisibility( true );//VisibilityOff(); + SetPickable( true ); //PickableOff();// + SetMapper( aMapper ); + aMapper->Delete(); + + vtkProperty* aProp = vtkProperty::New(); + + // aProp->SetRepresentationToSurface(); + aProp->SetRepresentationToWireframe(); + // aProp->SetRepresentationToPoints(); + aProp->EdgeVisibilityOn (); + aProp->SetPointSize(5); + SetProperty( aProp ); + aProp->Delete(); + // SetPointRepresentation(true); + +} + +Document_Actor::~Document_Actor() +{ + +} + + +vtkUnstructuredGrid* Document_Actor::getUnstructuredGrid() +{ + vtkUnstructuredGrid* theGrid = vtkUnstructuredGrid::New(); + + _doc->reorderFaces(); //CS_TEST + + map vtkNodeId; + map hexaNodeId; + + // Create points + vtkPoints* aPoints = vtkPoints::New(); + int nbVertex = _doc->countVertex(); + aPoints->SetNumberOfPoints( nbVertex ); + + Vertex* v = NULL; + int vertexId; + for ( int i=0; i getVertex(i); + aPoints->SetPoint( i, v->getX(), v->getY(), v->getZ() ); + vertexId = reinterpret_cast(v); //v->getId(); + vtkNodeId [ vertexId ] = i; + hexaNodeId[ i ] = vertexId ; + // vtkNodeId [ vertexId ] = i+1; + // hexaNodeId[ i+1 ] = vertexId ; + } + + theGrid->SetPoints( aPoints ); + aPoints->Delete(); + // theGrid->SetCells( 0, 0, 0, 0, 0 ); + + + // Calculate cells size + int nb0DElement = _doc->countVertex(); + int nbEdge = _doc->countEdge(); + int nbFace = _doc->countQuad(); + int nbVolume = _doc->countHexa(); + + vtkIdType aCellsSize = 2*nb0DElement + 3*nbEdge + ( 4 + 1 )*nbFace + ( 8 + 1 )*nbVolume; + vtkIdType aNbCells = nb0DElement + nbEdge + nbFace + nbVolume; + + // Create cells + vtkCellArray* aConnectivity = vtkCellArray::New(); + aConnectivity->Allocate( aCellsSize, 0 ); + + vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New(); + aCellTypesArray->SetNumberOfComponents( 1 ); + aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() ); + + vtkIdList *anIdList = vtkIdList::New(); + vtkIdType iVtkElem = 0; + // vtkIdType iVtkElem = 1; //CS_TEST + int iHexaElem; + + // VERTEX + for ( int i=0; iSetNumberOfIds( 1 ); + v = _doc->getVertex(i); + iHexaElem = reinterpret_cast(v);//v->getId(); + vtkElemsId[iHexaElem] = iVtkElem; + hexaElemsId[iVtkElem] = iHexaElem; + anIdList->SetId(0, vtkNodeId[iHexaElem]); + aConnectivity->InsertNextCell( anIdList ); + aCellTypesArray->InsertNextValue( VTK_VERTEX );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); + ++iVtkElem; + } + + // EDGE + Edge* e = NULL; + Vertex* vertexElem = NULL; + for ( int i=0; iSetNumberOfIds( 2 ); + e = _doc->getEdge(i); + iHexaElem = reinterpret_cast(e); //e->getId(); + vtkElemsId[iHexaElem] = iVtkElem; + hexaElemsId[iVtkElem] = iHexaElem; + + for( vtkIdType j = 0; j< 2; ++j ){ //j< e->countVertex(); ++j ){ + vertexElem = e->getVertex( j ); + anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); + } + aConnectivity->InsertNextCell( anIdList ); + aCellTypesArray->InsertNextValue( VTK_LINE );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); + ++iVtkElem; + } + + // QUAD + Quad* q = NULL; + for ( int i=0; iSetNumberOfIds( 4 ); + q = _doc->getQuad(i); + iHexaElem = reinterpret_cast(q); //q->getId(); + vtkElemsId[iHexaElem] = iVtkElem; + hexaElemsId[iVtkElem] = iHexaElem; + + for( vtkIdType j = 0; j< 4; ++j ){ + vertexElem = q->getVertex( j ); + anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); + } + aConnectivity->InsertNextCell( anIdList ); + aCellTypesArray->InsertNextValue( VTK_QUAD );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); + ++iVtkElem; + } + + // HEXA + Hexa* h = NULL; + std::map connectivity; + connectivity[0] = 0; + connectivity[1] = 1; + connectivity[2] = 3; + connectivity[3] = 2; + connectivity[4] = 4; + connectivity[5] = 5; + connectivity[6] = 7; + connectivity[7] = 6; + for ( int i=0; iSetNumberOfIds( 8 ); + h = _doc->getHexa(i); + iHexaElem = reinterpret_cast(h); //q->getId(); + vtkElemsId[iHexaElem] = iVtkElem; + hexaElemsId[iVtkElem] = iHexaElem; + + for( vtkIdType j = 0; j< 8; ++j ){ + vertexElem = h->getVertex( j );// ); + anIdList->SetId( connectivity[j], vtkNodeId[ reinterpret_cast(vertexElem) ]);//vertexElem->getId() ]); + } + aConnectivity->InsertNextCell( anIdList ); + aCellTypesArray->InsertNextValue( VTK_HEXAHEDRON ); + ++iVtkElem; + } + + + // 0 1 2 3 4 5 6 7 + // V_ACE, V_ACF, V_ADE, V_ADF, V_BCE, V_BCF, V_BDE, V_BDF, + // + // 0 1 3 2 4 5 7 6 + + // Insert cells in grid + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); + aCellLocationsArray->SetNumberOfComponents( 1 ); + aCellLocationsArray->SetNumberOfTuples( aNbCells ); + // std::cout << "aNbCells =>" << aNbCells << std::endl; + + aConnectivity->InitTraversal(); + for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ){ + aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); + } + theGrid->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); + + aCellLocationsArray->Delete(); + aCellTypesArray->Delete(); + aConnectivity->Delete(); + anIdList->Delete(); + //std::cout << "theGrid->GetNumberOfCells()" << theGrid->GetNumberOfCells() << std::endl; + + return theGrid; +} + +// =============================================================== Abu : debut +// ===================================================== Constructeur +Associate_Actor::Associate_Actor( Document* doc, const QString& entry) +: SALOME_Actor(), _doc( doc ) +{ + DEBTRACE("Associate_Actor::Associate_Actor " << entry.toLatin1() ); + Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject( entry.toLatin1(), "HEXABLOCK" );//,theName); CS_TODO + setIO(anIO); + vtkUnstructuredGrid* aGrid = getUnstructuredGrid(); + + vtkDataSetMapper* aMapper = vtkDataSetMapper::New(); + aMapper->SetInput(aGrid); + aGrid->Delete(); + + SetVisibility( true );//VisibilityOff(); + SetPickable( true ); //PickableOff();// + SetMapper( aMapper ); + aMapper->Delete(); + + vtkProperty* aProp = vtkProperty::New(); + aProp->SetColor(0,255,0); + // aProp->SetRepresentationToSurface(); + aProp->SetRepresentationToWireframe(); + // aProp->SetRepresentationToPoints(); + aProp->EdgeVisibilityOn (); + aProp->SetPointSize(5); + SetProperty( aProp ); + aProp->Delete(); + // SetPointRepresentation(true); +} +// ===================================================== getUnstructuredGrid + +vtkUnstructuredGrid* Associate_Actor::getUnstructuredGrid() +{ + vtkUnstructuredGrid* theGrid = vtkUnstructuredGrid::New(); + + _doc->reorderFaces(); //CS_TEST + + std::map vtkNodeId; + std::map hexaNodeId; + + // Create points + vtkPoints* aPoints = vtkPoints::New(); + int nbVertex = _doc->countVertex(); + aPoints->SetNumberOfPoints( nbVertex ); + + Vertex* v = NULL; + int vertexId; + for ( int i=0; i getVertex(i); + aPoints->SetPoint( i, v->getX()+6, v->getY()+6, v->getZ() ); + vertexId = reinterpret_cast(v); //v->getId(); + vtkNodeId [ vertexId ] = i; + hexaNodeId[ i ] = vertexId ; + // vtkNodeId [ vertexId ] = i+1; + // hexaNodeId[ i+1 ] = vertexId ; + } + + theGrid->SetPoints( aPoints ); + aPoints->Delete(); + // theGrid->SetCells( 0, 0, 0, 0, 0 ); + + + // Calculate cells size + int nb0DElement = _doc->countVertex(); + int nbEdge = _doc->countEdge(); + int nbFace = _doc->countQuad(); + int nbVolume = _doc->countHexa(); + + vtkIdType aCellsSize = 2*nb0DElement + 3*nbEdge + ( 4 + 1 )*nbFace + ( 8 + 1 )*nbVolume; + vtkIdType aNbCells = nb0DElement + nbEdge + nbFace + nbVolume; + + // Create cells + vtkCellArray* aConnectivity = vtkCellArray::New(); + aConnectivity->Allocate( aCellsSize, 0 ); + + vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New(); + aCellTypesArray->SetNumberOfComponents( 1 ); + aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() ); + + vtkIdList *anIdList = vtkIdList::New(); + vtkIdType iVtkElem = 0; + // vtkIdType iVtkElem = 1; //CS_TEST + int iHexaElem; + + // VERTEX + for ( int i=0; iSetNumberOfIds( 1 ); + v = _doc->getVertex(i); + iHexaElem = reinterpret_cast(v);//v->getId(); + vtkElemsId[iHexaElem] = iVtkElem; + hexaElemsId[iVtkElem] = iHexaElem; + anIdList->SetId(0, vtkNodeId[iHexaElem]); + aConnectivity->InsertNextCell( anIdList ); + aCellTypesArray->InsertNextValue( VTK_VERTEX );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); + ++iVtkElem; + } + + // EDGE + Edge* e = NULL; + Vertex* vertexElem = NULL; + for ( int i=0; iSetNumberOfIds( 2 ); + e = _doc->getEdge(i); + iHexaElem = reinterpret_cast(e); //e->getId(); + vtkElemsId[iHexaElem] = iVtkElem; + hexaElemsId[iVtkElem] = iHexaElem; + + for( vtkIdType j = 0; j< 2; ++j ){ //j< e->countVertex(); ++j ){ + vertexElem = e->getVertex( j ); + anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); + } + aConnectivity->InsertNextCell( anIdList ); + aCellTypesArray->InsertNextValue( VTK_LINE );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); + ++iVtkElem; + } + + // QUAD + Quad* q = NULL; + for ( int i=0; iSetNumberOfIds( 4 ); + q = _doc->getQuad(i); + iHexaElem = reinterpret_cast(q); //q->getId(); + vtkElemsId[iHexaElem] = iVtkElem; + hexaElemsId[iVtkElem] = iHexaElem; + + for( vtkIdType j = 0; j< 4; ++j ){ + vertexElem = q->getVertex( j ); + anIdList->SetId( j, vtkNodeId[ reinterpret_cast(vertexElem) ] );//vertexElem->getId() ]); + } + aConnectivity->InsertNextCell( anIdList ); + aCellTypesArray->InsertNextValue( VTK_QUAD );//getCellType( aType, anElem->IsPoly(), aNbNodes ) ); + ++iVtkElem; + } + + // HEXA + Hexa* h = NULL; + std::map connectivity; + connectivity[0] = 0; + connectivity[1] = 1; + connectivity[2] = 3; + connectivity[3] = 2; + connectivity[4] = 4; + connectivity[5] = 5; + connectivity[6] = 7; + connectivity[7] = 6; + for ( int i=0; iSetNumberOfIds( 8 ); + h = _doc->getHexa(i); + iHexaElem = reinterpret_cast(h); //q->getId(); + vtkElemsId[iHexaElem] = iVtkElem; + hexaElemsId[iVtkElem] = iHexaElem; + + for( vtkIdType j = 0; j< 8; ++j ){ + vertexElem = h->getVertex( j );// ); + anIdList->SetId( connectivity[j], vtkNodeId[ reinterpret_cast(vertexElem) ]);//vertexElem->getId() ]); + } + aConnectivity->InsertNextCell( anIdList ); + aCellTypesArray->InsertNextValue( VTK_HEXAHEDRON ); + ++iVtkElem; + } + + + // 0 1 2 3 4 5 6 7 + // V_ACE, V_ACF, V_ADE, V_ADF, V_BCE, V_BCF, V_BDE, V_BDF, + // + // 0 1 3 2 4 5 7 6 + + // Insert cells in grid + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); + aCellLocationsArray->SetNumberOfComponents( 1 ); + aCellLocationsArray->SetNumberOfTuples( aNbCells ); + // std::cout << "aNbCells =>" << aNbCells << std::endl; + + aConnectivity->InitTraversal(); + for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ){ + aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); + } + theGrid->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); + + aCellLocationsArray->Delete(); + aCellTypesArray->Delete(); + aConnectivity->Delete(); + anIdList->Delete(); + + return theGrid; +} + + +// ----------------------------------------------------------------------- +// VtkDocumentGraphicView implementation +// ----------------------------------------------------------------------- +VtkDocumentGraphicView::VtkDocumentGraphicView( DocumentModel* documentModel, + SVTK_ViewWindow* view, QWidget* parent ): + QAbstractItemView(parent), + viewWindow( view ), + documentActor( NULL ), + associateActor (NULL), // Abu + _currentChanged( false ), + firstUpdate(true), + selectionMode(-1) +{ + + //Model + setModel(documentModel); + patternDataModel = new PatternDataModel(parent); + patternBuilderModel = new PatternBuilderModel(parent); + patternGeomModel = new PatternGeomModel(parent); + groupsModel = new GroupsModel(parent); + meshModel = new MeshModel(parent); + patternDataModel->setSourceModel(documentModel); + patternBuilderModel->setSourceModel(documentModel); + patternGeomModel->setSourceModel(documentModel); + groupsModel->setSourceModel(documentModel); + meshModel->setSourceModel(documentModel); + + //Selection Model + patternDataSelectionModel = new PatternDataSelectionModel(patternDataModel); + patternBuilderSelectionModel = new PatternBuilderSelectionModel(patternBuilderModel, patternDataSelectionModel); + patternGeomSelectionModel = new PatternGeomSelectionModel(patternGeomModel); + groupsSelectionModel = new GroupsSelectionModel(groupsModel); + meshSelectionModel = new MeshSelectionModel(meshModel ); + setSelectionModel(patternDataSelectionModel); +} + +//Loads the graphic view document +void VtkDocumentGraphicView::loadDocument() +{ + DocumentModel* docModel = getDocumentModel(); + if (docModel == NULL) return; + + docModel->load(); +} + +//Loads the document from the file in this graphic view +void VtkDocumentGraphicView::loadDocument(const QString& file) +{ + if ( file.isEmpty() ) return; + getDocumentModel()->load(file); +} + +//Saves the graphic view's document in the file +void VtkDocumentGraphicView::saveDocument(const QString& file) +{ + if (file.isEmpty()) return; + getDocumentModel()->save(file); +} + + +VtkDocumentGraphicView::~VtkDocumentGraphicView() +{ + + //Delete Model + delete patternDataModel; + delete patternBuilderModel; + delete groupsModel; + delete meshModel; + + //Delete Selection Model/ Disconnect signals on delete (Qt) +// delete patternDataSelectionModel; +// delete patternBuilderSelectionModel; +// delete groupsSelectionModel; +// delete meshSelectionModel; +} + +void VtkDocumentGraphicView::setWindowTitle(const QString& title) +{ + viewWindow->setWindowTitle( QString("hexablock : ") + title ); +} + +void VtkDocumentGraphicView::onPatternDatachanged() +{ + update(); +} + +void VtkDocumentGraphicView::removeActor() +{ + if ( documentActor != NULL && viewWindow != NULL){ + viewWindow->RemoveActor( documentActor ); + documentActor->Delete(); + } +} + +void VtkDocumentGraphicView::update() +{ + + DocumentModel* theModel = dynamic_cast( model() ); + if (theModel == NULL || viewWindow == NULL) return; + + Document* theDocumentImpl = theModel->documentImpl(); + QString theDocumentEntry = theModel->documentEntry(); + + if ( documentActor ){ + viewWindow->RemoveActor( documentActor ); + documentActor->Delete(); + } + documentActor = new Document_Actor( theDocumentImpl, theDocumentEntry ); + viewWindow->AddActor( documentActor ); + + viewWindow->getRenderer()->Render(); + viewWindow->Repaint(); + if (firstUpdate) + { + viewWindow->onFitAll(); + firstUpdate = false; + } +} + +void VtkDocumentGraphicView::setVertexSelection() +{ + setSelectionMode(NodeSelection); +// // NodeSelection, +// // CellSelection, +// // EdgeOfCellSelection, +// // EdgeSelection, +// // FaceSelection, +// // VolumeSelection, +// // ActorSelection }; + selectionMode = VERTEX_TREE; +} + +void VtkDocumentGraphicView::setEdgeSelection() +{ + setSelectionMode(EdgeSelection); + selectionMode = EDGE_TREE; +} + +void VtkDocumentGraphicView::setQuadSelection() +{ + setSelectionMode(FaceSelection); + selectionMode = QUAD_TREE; +} + +void VtkDocumentGraphicView::setHexaSelection() +{ +// SetSelectionMode(VolumeSelection); + setSelectionMode(FaceSelection); //temporary for hexa selection debug + selectionMode = HEXA_TREE; +// aProp->FaceVisibilityOff (); //would debug hexa preselection, selection??? +} + +void VtkDocumentGraphicView::setAllSelection() +{ + setSelectionMode(ActorSelection); + selectionMode = -1; +} + +void VtkDocumentGraphicView::setSelectionMode(Selection_Mode theMode) +{ + + if ( viewWindow != NULL ) + { + viewWindow->SetSelectionMode( theMode ); + selectionMode = theMode; + } + +} + +void VtkDocumentGraphicView::setSelectionMode( const QModelIndex& eltIndex ) +{ + QVariant treeVariant = eltIndex.data( HEXA_TREE_ROLE ); + if ( !treeVariant.isValid() ) return; + int eltType = treeVariant.toInt(); + + if ( selectionMode == eltType ) return; + + switch ( eltType ){ + case VERTEX_TREE : + case GEOMPOINT_TREE: + case GEOMPOINT_DIR_TREE: + case VERTEX_DIR_TREE : setVertexSelection(); break; + case EDGE_TREE : + case GEOMEDGE_TREE: + case GEOMEDGE_DIR_TREE: + case EDGE_DIR_TREE : setEdgeSelection(); break; + case QUAD_TREE : + case GEOMFACE_TREE: + case GEOMFACE_DIR_TREE: + case QUAD_DIR_TREE : setQuadSelection(); break; + case HEXA_TREE : + case GEOMSHAPE_TREE: + case GEOMSHAPE_DIR_TREE: + case HEXA_DIR_TREE : setHexaSelection(); break; + case PROPAGATION_TREE : + case PROPAGATION_DIR_TREE : setEdgeSelection(); break; + default: setAllSelection(); +// CellSelection, +// EdgeOfCellSelection, +// VolumeSelection, +// ActorSelection + } +} + +void VtkDocumentGraphicView::clearSelection() +{ + if (viewWindow != NULL) + { +// viewWindow->unHighlightAll(); + setSelectionMode(ActorSelection); + } +} + +void VtkDocumentGraphicView::highlight( const QModelIndex& ielt ) +{ + + QModelIndexList indexList; + indexList << ielt; + highlight(indexList); + +} + +void VtkDocumentGraphicView::highlight( const QModelIndexList& elts ) +{ + + if (elts.size() == 0 || viewWindow == NULL || documentActor == NULL) return; + SVTK_Selector* selector = viewWindow->GetSelector(); + if ( selector == NULL ) return; +// // Set selection mode in VTK view +// viewWindow->SetSelectionMode(VolumeSelection); + + // --- elements highlight --- + TColStd_MapOfInteger aMap; + int vtkElemsId; + QString eltEntry; + + foreach( const QModelIndex& iElt, elts ){ + if (iElt.isValid()) + { + eltEntry = iElt.data( HEXA_ENTRY_ROLE ).toString(); + vtkElemsId = documentActor->vtkElemsId[ eltEntry.toInt() ]; + if ( vtkElemsId > 0 ) aMap.Add( vtkElemsId ); + } + } + selector->AddOrRemoveIndex( documentActor->getIO(), aMap, false ); //true + viewWindow->highlight( documentActor->getIO(), true, true ); + documentActor->highlight( false ); //unhighlight de la bounding box rouge + +} + + +void VtkDocumentGraphicView::highlightGroups( const QModelIndex& eltIndex ) +{ + if ( groupsModel == NULL || viewWindow == NULL || documentActor == NULL) return; + SVTK_Selector* selector = viewWindow->GetSelector(); + if ( selector == NULL ) return; + + QVariant treeVariant = eltIndex.data( HEXA_TREE_ROLE ); + if ( !treeVariant.isValid()) + //INFOS("data from model not valid"); + return; + + int eltType = treeVariant.toInt(); + if ( eltType != GROUP_TREE ) + //INFOS("bad element type : not a group item" << eltType ); + return; + + //Get elements to highlight + DocumentModel::Group kind; + QModelIndexList iElements = groupsModel->getGroupElements( eltIndex, kind ); + if (iElements.count() == 0) return; + + // ---------- elements highlight -------------- + + // Set selection mode in VTK view + switch (kind){ + case HexaCell: case HexaNode: viewWindow->SetSelectionMode(VolumeSelection); break; + case QuadCell: case QuadNode: viewWindow->SetSelectionMode(FaceSelection); break; + case EdgeCell: case EdgeNode: viewWindow->SetSelectionMode(EdgeSelection); break; + case VertexNode: viewWindow->SetSelectionMode(NodeSelection); break; + } + + TColStd_MapOfInteger aMap; + int vtkElemsId; + QString eltEntry; + + foreach( const QModelIndex& iElt, iElements ){ + if (iElt.isValid()) + { + eltEntry = iElt.data( HEXA_ENTRY_ROLE ).toString(); + vtkElemsId = documentActor->vtkElemsId[ eltEntry.toInt() ]; + if ( vtkElemsId > 0 ) aMap.Add( vtkElemsId ); + } + } + + selector->AddOrRemoveIndex( documentActor->getIO(), aMap, false ); + viewWindow->highlight( documentActor->getIO(), true, true ); + documentActor->highlight( false ); + +} + + +void VtkDocumentGraphicView::highlightPropagation( const QModelIndex& eltIndex ) +{ + if ( meshModel == NULL || viewWindow == NULL || documentActor == NULL) return; + SVTK_Selector* selector = viewWindow->GetSelector(); + if ( selector == NULL ) return; + + QVariant treeVariant = eltIndex.data( HEXA_TREE_ROLE ); + if ( !treeVariant.isValid()) + //INFOS("data from model not valid"); + return; + + int eltType = treeVariant.toInt(); + if ( eltType != PROPAGATION_TREE ) + //INFOS("bad element type : not a group item" << eltType ); + return; + + // Get elements to highlight + QModelIndexList iEdges = meshModel->getPropagation( eltIndex ); + if (iEdges.count() == 0) return; + + // ---------- elements highlight -------------- + + // Set selection mode in VTK view + viewWindow->SetSelectionMode(EdgeSelection); + + TColStd_MapOfInteger aMap; + int vtkElemsId; + QString edgeEntry; + + foreach( const QModelIndex& iEdge, iEdges ){ + if (iEdge.isValid()) + { + edgeEntry = iEdge.data( HEXA_ENTRY_ROLE ).toString(); + vtkElemsId = documentActor->vtkElemsId[ edgeEntry.toInt() ]; + if ( vtkElemsId > 0 ) aMap.Add( vtkElemsId ); + } + } + + selector->AddOrRemoveIndex( documentActor->getIO(), aMap, false ); + viewWindow->highlight( documentActor->getIO(), true, true ); + documentActor->highlight( false ); + +} + + + + +/******************************************************************************** + * ABSTRACT METHOD ( MUST BE IMPLEMENTED ) + ********************************************************************************/ + +/* + Returns the item that covers the coordinate given in the view. + */ + +QModelIndex VtkDocumentGraphicView::indexAt(const QPoint &point) const +{ + return QModelIndex(); +} + +void VtkDocumentGraphicView::scrollTo(const QModelIndex &index, ScrollHint) +{ +} + + +/* + Returns the position of the item in viewport coordinates. + */ +QRect VtkDocumentGraphicView::visualRect(const QModelIndex &index) const +{ + return QRect(); +} + +// PROTECTED : +int VtkDocumentGraphicView::horizontalOffset() const +{ + return horizontalScrollBar()->value(); +} + +bool VtkDocumentGraphicView::isIndexHidden(const QModelIndex &index) const +{ + return false; +} + +QModelIndex VtkDocumentGraphicView::moveCursor(QAbstractItemView::CursorAction cursorAction, + Qt::KeyboardModifiers /*modifiers*/) +{ + QModelIndex current = currentIndex(); + return current; +} + +/* + Find the indices corresponding to the extent of the selection. + */ +void VtkDocumentGraphicView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) +{ +} + + +int VtkDocumentGraphicView::verticalOffset() const +{ + return verticalScrollBar()->value(); +} + +/* + Returns a region corresponding to the selection in viewport coordinates. + */ +QRegion VtkDocumentGraphicView::visualRegionForSelection(const QItemSelection &selection) const +{ + return QRegion(); +} + + + + +/******************************************************************************** + * PROTECTED SLOTS + ********************************************************************************/ +void VtkDocumentGraphicView::closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ) +{ +} + +void VtkDocumentGraphicView::commitData ( QWidget * editor ) +{ +} + +void VtkDocumentGraphicView::currentChanged( const QModelIndex & current, const QModelIndex & previous ) +{ + // openPersistentEditor( current ); + _currentChanged = true; +} + +void VtkDocumentGraphicView::dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ) +{ + update(); + _currentChanged = false; + // updateObject(topLeft); +} + +void VtkDocumentGraphicView::editorDestroyed ( QObject * editor ) +{ +} + +void VtkDocumentGraphicView::rowsAboutToBeRemoved ( const QModelIndex & parent, int start, int end ) +{ +} + +void VtkDocumentGraphicView::rowsInserted ( const QModelIndex & parent, int start, int end ) +{ +} + +void VtkDocumentGraphicView::selectionChanged( const QItemSelection & selected, const QItemSelection & deselected ) +{ +} + +void VtkDocumentGraphicView::updateGeometries () +{ +} + +// bool DocumentGraphicView::canBeDisplayed( const QString& entry, const QString& viewer_type ) const //CS_TODO +// { +// bool result = false; +// +// result = (viewer_type==SVTK_Viewer::Type()); +// // QStringList es = entry.split( "_" );22 +// // bool result = ( es.count() == 3 && es[ 0 ] == "ATOMSOLVGUI" && viewer_type == SVTK_Viewer::Type() ); +// // // printf ( " canBeDisplayed : entry = %s, count = %d, res = %d \n", entry.latin1(), es.count(), result ); +// std::cout << "canBeDisplayed => "<< result << std::endl; +// return result; // entry of an atom for sure +// } + +// SALOME_Prs* HEXABLOCKGUI_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame) +// { +// SALOME_Prs* prs = 0; +// +// SALOME_View* aViewFrame = theViewFrame ? theViewFrame : GetActiveView(); +// +// if ( aViewFrame ) +// { +// SVTK_Viewer* vtk_viewer = dynamic_cast( aViewFrame ); +// if (vtk_viewer) +// { +// SUIT_ViewWindow* wnd = vtk_viewer->getViewManager()->getActiveView(); +// SALOME_Actor* anActor = myGraphicView->FindActorByEntry( wnd, entry.toLatin1().data() ); +// if (!anActor) +// { +// // anActor = myGraphicView->CreateActor( study()->studyDS(), entry.toLatin1().data(), true ); +// anActor = myGraphicView->CreateActor(entry.toLatin1().data()); +// } +// if (anActor) +// { +// // Display actor : +// SVTK_ViewWindow* vtkWnd = dynamic_cast (wnd); +// if (vtkWnd != NULL) +// { +// vtkWnd->AddActor(anActor); +// vtkWnd->Repaint(); +// prs = LightApp_Displayer::buildPresentation(entry.toLatin1().data(), aViewFrame); +// } +// } +// if (prs) +// { +// UpdatePrs(prs); +// } +// else if (anActor) +// { +// //SMESH::RemoveActor( vtk_viewer->getViewManager()->getActiveView(), anActor ); +// std::cout << "Remove Actor" << std::endl; +// } +// } +// } +// +// return prs; +// } + +// SALOME_Prs* SMESHGUI_Displayer::buildPresentation( const QString& entry, SALOME_View* theViewFrame ) +// { +// SALOME_Prs* prs = 0; +// +// SALOME_View* aViewFrame = theViewFrame ? theViewFrame : GetActiveView(); +// +// if ( aViewFrame ) +// { +// SVTK_Viewer* vtk_viewer = dynamic_cast( aViewFrame ); +// if( vtk_viewer ) +// { +// SUIT_ViewWindow* wnd = vtk_viewer->getViewManager()->getActiveView(); +// SMESH_Actor* anActor = SMESH::FindActorByEntry( wnd, entry.toLatin1().data() ); +// if( !anActor ) +// anActor = SMESH::CreateActor( study()->studyDS(), entry.toLatin1().data(), true ); +// if( anActor ) +// { +// SMESH::DisplayActor( wnd, anActor ); +// prs = LightApp_Displayer::buildPresentation( entry.toLatin1().data(), aViewFrame ); +// } +// if( prs ) +// UpdatePrs( prs ); +// else if( anActor ) +// SMESH::RemoveActor( vtk_viewer->getViewManager()->getActiveView(), anActor ); +// } +// } +// +// return prs; +// } + +// +// void DocumentGraphicView::RemoveActor(SUIT_ViewWindow *theWnd, SALOME_Actor* theActor) +// { +// std::cout << "RemoveActor() : 1" << std::endl; +// SVTK_ViewWindow* myViewWindow = dynamic_cast(theWnd); +// // SVTK_ViewWindow* myViewWindow = dynamic_cast(_suitView); +// if (myViewWindow != NULL) +// { +// myViewWindow->RemoveActor(theActor); +// if(theActor->hasIO()) +// { +// std::cout << "RemoveActor() : 2" << std::endl; +// Handle(SALOME_InteractiveObject) anIO = theActor->getIO(); +// if(anIO->hasEntry()) +// { +// std::cout << "RemoveActor() : 3" << std::endl; +// std::string anEntry = anIO->getEntry(); +// SalomeApp_Study* aStudy = dynamic_cast( myViewWindow->getViewManager()->study() ); +// int aStudyId = aStudy->id(); +// // TVisualObjCont::key_type aKey(aStudyId,anEntry); +// // VISUAL_OBJ_CONT.erase(aKey); +// } +// } +// theActor->Delete(); +// myViewWindow->Repaint(); +// std::cout << "RemoveActor() : 4" << std::endl; +// } +// } + +// bool DocumentGraphicView::eventFilter(QObject *obj, QEvent *event) +// { +// std::cout << event->type() << std::endl; +// // if ( event->type() == QEvent::FocusIn ){ //QEvent::KeyPress) { +// // return false; +// // } else { +// // // standard event processing +// // // return QObject::eventFilter(obj, event); +// +// if ( event->type() == QEvent::Paint ) { //QEvent::FocusIn ){ +// std::cout << "PAINTTTTTTTTTT"<< std::endl; +// // loadVTK( "/tmp/load.vtk"); //CS_TEST +// } +// return _suitView->event(event); +// // } +// } +// +// + +//show the actor when show=true and hide it when show=false +//void VtkDocumentGraphicView::showActor(bool show) +//{ +// SVTK_ViewWindow* theVTKViewWindow = dynamic_cast(_suitView); +// if (theVTKViewWindow == NULL || _documentActor == NULL) +// return; +// +// if (show) +// { +// _documentActor->SetVisibility(1); +// theVTKViewWindow->onFitAll(); +// } +// else +// { +// _documentActor->SetVisibility(0); +// theVTKViewWindow->onResetView (); +// } +//} + +void VtkDocumentGraphicView::setModel ( QAbstractItemModel * model ) +{ + QAbstractItemView::setModel( model ); + + // PatternDataModel* pdm = dynamic_cast(model); + // if (pdm){ + // connect( pdm, SIGNAL(patternDataChanged() ), this, SLOT ( onPatternDatachanged() ) ); + // } + + DocumentModel* dm = dynamic_cast(model); + if (dm){ + // setWindowTitle( dm->getName() ); + connect( dm, SIGNAL(patternDataChanged() ), this, SLOT ( onPatternDatachanged() ) ); + // connect( dm, SIGNAL( nameChanged(const QString&) ), this, SLOT ( setWindowTitle(const QString&) ) ); + } +} + +// void DocumentGraphicView::loadVTK( const QString& path ) //CS_TEST +// { +// std::cout << "DocumentGraphicView::loadVTK=>"<(_suitView); +// +// // vtkStructuredGridReader +// vtkUnstructuredGridReader* r = vtkUnstructuredGridReader::New(); +// // r->SetFileName( path.toLocal8Bit().constData() ); +// r->SetInputString( vtkData.toLocal8Bit().constData() ); +// r->SetReadFromInputString( true ); +// r->Update(); +// +// vtkUnstructuredGrid* myGrid = r->GetOutput();//vtkUnstructuredGrid::New(); +// std::cout << "GetNumberOfCells =>"<< myGrid->GetNumberOfCells(); +// // Create and display actor +// +// vtkDataSetMapper* myMapper = vtkDataSetMapper::New(); +// myMapper->SetInput(myGrid); +// +// // if ( myPreviewActor ){ +// // myVTKViewWindow->RemoveActor(myPreviewActor); +// // myPreviewActor->Delete(); +// // } +// +// SALOME_Actor* myPreviewActor = SALOME_Actor::New(); +// myPreviewActor = SALOME_Actor::New(); +// Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject(QString::number( reinterpret_cast(_hexaDocument) ),"HEXABLOCK");//,theName); +// myPreviewActor->setIO(anIO); +// +// // myPreviewActor->PickableOff(); +// myPreviewActor->SetVisibility( true );//VisibilityOff(); +// myPreviewActor->SetPickable( true ); +// myPreviewActor->SetMapper(myMapper); +// +// vtkProperty* aProp = vtkProperty::New(); +// // aProp->SetRepresentationToWireframe(); +// aProp->SetRepresentationToSurface(); +// aProp->EdgeVisibilityOn (); +// +// // aProp->SetColor(10, 10, 250); +// aProp->SetPointSize(5); +// myPreviewActor->SetProperty(aProp); +// aProp->Delete(); +// +// /*vtkProperty* myBackProp = vtkProperty::New(); +// GetColor( "SMESH", "backface_color", aBackRGB[0], aBackRGB[1], aBackRGB[2], QColor( 0, 0, 255 ) ); +// myBackProp->SetColor( aBackRGB[0], aBackRGB[1], aBackRGB[2] ); +// myPreviewActor->SetBackfaceProperty( myBackProp ); +// myBackProp->Delete()*/; +// myVTKViewWindow->AddActor(myPreviewActor); +// myVTKViewWindow->getRenderer()->Render(); +// myVTKViewWindow->Repaint(); +// myVTKViewWindow->onFitAll(); +// +// myVTKViewWindow->SetSelectionMode( ActorSelection ); +// // myVTKViewWindow->SetSelectionMode( NodeSelection ); +// // myVTKViewWindow->SetSelectionMode( EdgeSelection ); +// // myVTKViewWindow->SetSelectionMode( FaceSelection ); +// } + +// void DocumentGraphicView::rowsInserted ( const QModelIndex & parent, int start, int end ) +// { +// +// // std::cout << "DocumentGraphicView::rowsInserted : " << parent.data().toString().toStdString() << std::endl; +// QModelIndex newRow; +// +// SVTK_ViewWindow* myViewWindow = dynamic_cast(_suitView); +// SUIT_ViewManager* vman = myViewWindow->getViewManager(); +// SUIT_ViewModel* vmodel = vman->getViewModel(); +// +// for ( int i = start; i<= end; ++i ){ +// newRow = parent.child(i,0); +// // std::cout << "newRow.data().toString() =>" << newRow.data().toString().toStdString() << std::endl; +// QString entry = newRow.data(HEXA_ENTRY_ROLE).toString();//.toStdString(); +// Display(entry, true, dynamic_cast(vmodel)); +// UpdateViewer(); +// +// // addObject(newRow); +// } +// } diff --git a/src/HEXABLOCKGUI/HEXABLOCKGUI_VtkDocumentGraphicView.hxx b/src/HEXABLOCKGUI/HEXABLOCKGUI_VtkDocumentGraphicView.hxx new file mode 100755 index 0000000..f19a130 --- /dev/null +++ b/src/HEXABLOCKGUI/HEXABLOCKGUI_VtkDocumentGraphicView.hxx @@ -0,0 +1,239 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef _HEXABLOCKGUI_VTKDOCUMENTGRAPHICVIEW_HXX_ +#define _HEXABLOCKGUI_VTKDOCUMENTGRAPHICVIEW_HXX_ + +// SALOME GUI includes +#include +// #include +#include +#include +#include +#include +#include + +// #include +// #include +// #include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "HEXABLOCKGUI_DocumentModel.hxx" +#include "HEXABLOCKGUI_DocumentSelectionModel.hxx" + +// class LightApp_Displayer; +// class SalomeApp_Application; +class LightApp_Application; +class SALOME_Actor; + +// class vtkLookupTable ; +// class vtkPoints ; +// class vtkCellArray ; +// class vtkFloatArray ; +// class vtkActor ; +// class vtkPolyData; + + +class vtkUnstructuredGrid; + + + +namespace HEXABLOCK +{ + + namespace GUI + { +// class hexablockInteractorStyle : public SVTK_InteractorStyle +// { +// public: +// hexablockInteractorStyle() {}; +// virtual ~hexablockInteractorStyle() {}; +// +// public: +// static hexablockInteractorStyle* New() +// { +// return new hexablockInteractorStyle; +// }; +// virtual void HighlightActor2D(vtkActor2D* actor2D) {MESSAGE("% HIGHLIGHT PROP 2D %");} +// virtual void HighlightProp(vtkProp* prop) {MESSAGE("% HIGHLIGHT PROP %");} +// virtual void HighlightProp3D(vtkProp3D* prop3D) {MESSAGE("% HIGHLIGHT PROP 3D %");} +// }; + + class Document_Actor : public SALOME_Actor + { + public: + Document_Actor(HEXA_NS::Document* doc, const QString& entry); + virtual ~Document_Actor(); + + std::map vtkElemsId; + std::map hexaElemsId; + + vtkUnstructuredGrid* getUnstructuredGrid(); + private: + HEXA_NS::Document* _doc; + }; + + // Abu + class Associate_Actor : public SALOME_Actor + { + public: + Associate_Actor(HEXA_NS::Document* doc, const QString& entry); + virtual ~Associate_Actor() {} + + std::map vtkElemsId; + std::map hexaElemsId; + + vtkUnstructuredGrid* getUnstructuredGrid(); + private: + HEXA_NS::Document* _doc; + }; + + + /******************************************************************************** + * VtkDocumentGraphicView + ********************************************************************************/ + class VtkDocumentGraphicView : public QAbstractItemView + { + Q_OBJECT + + public: + VtkDocumentGraphicView(DocumentModel* docModel, SVTK_ViewWindow* view, QWidget* parent=NULL); + virtual ~VtkDocumentGraphicView(); + + void setModel ( QAbstractItemModel * model ); + bool isEmpty() const { return getDocumentModel()->isEmpty(); } + void highlight( const QModelIndex& ielt ); + void highlight( const QModelIndexList& elts ); + void highlightGroups( const QModelIndex& eltIndex ); + void highlightPropagation( const QModelIndex& eltIndex ); + + void setSelectionMode( const Selection_Mode theMode ); + void setSelectionMode( const QModelIndex& eltIndex ); + int getSelectionMode() const { return selectionMode;} + void clearSelection(); + + void loadDocument(const QString& file); //Loads a selected document + void loadDocument(); //Loads the current document + void saveDocument(const QString& file); + void update();//mise à jours de la vue : reconstruction complète + void removeActor(); + + QModelIndex indexAt(const QPoint &point) const; + void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible); + QRect visualRect(const QModelIndex &index) const; + + SVTK_ViewWindow* getViewWindow() const { return viewWindow; } + void setViewWindow(SVTK_ViewWindow* view) { viewWindow = view; } + Document_Actor* getDocumentActor() const { return documentActor; } + + DocumentModel* getDocumentModel() const { + return dynamic_cast(model()); + } + PatternDataSelectionModel* getPatternDataSelectionModel() const + { return patternDataSelectionModel; } + + PatternBuilderSelectionModel* getPatternBuilderSelectionModel() const + { return patternBuilderSelectionModel; } + + PatternGeomSelectionModel* getPatternGeomSelectionModel() const + { return patternGeomSelectionModel;} + + GroupsSelectionModel* getGroupsSelectionModel() const + { return groupsSelectionModel; } + + MeshSelectionModel* getMeshSelectionModel() const + { return meshSelectionModel; } + + PatternDataModel* getPatternDataModel() const {return patternDataModel;} + PatternBuilderModel* getPatternBuilderModel() const {return patternBuilderModel;} + PatternGeomModel* getPatternGeomModel() const { return patternGeomModel;} + GroupsModel* getGroupsModel() const {return groupsModel;} + MeshModel* getMeshModel() const {return meshModel;} + + public slots: + void setWindowTitle(const QString& title); + void onPatternDatachanged(); + void setVertexSelection(); + void setEdgeSelection(); + void setQuadSelection(); + void setHexaSelection(); + void setAllSelection(); + + protected slots: + virtual void closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEditHint hint ); + virtual void commitData ( QWidget * editor ); + virtual void currentChanged ( const QModelIndex & current, const QModelIndex & previous ); + virtual void dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ); + virtual void editorDestroyed ( QObject * editor ); + virtual void rowsAboutToBeRemoved ( const QModelIndex & parent, int start, int end ); + virtual void rowsInserted ( const QModelIndex & parent, int start, int end ); + virtual void selectionChanged ( const QItemSelection & selected, const QItemSelection & deselected ); + virtual void updateGeometries (); + + protected: + int horizontalOffset() const; + bool isIndexHidden(const QModelIndex &index) const; + QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, + Qt::KeyboardModifiers modifiers); + void setSelection(const QRect&, QItemSelectionModel::SelectionFlags command); + int verticalOffset() const; + QRegion visualRegionForSelection(const QItemSelection &selection) const; + +// protected: +// virtual SALOME_Prs* buildPresentation( const QString&, SALOME_View* = 0 ); + + private: + SVTK_ViewWindow* viewWindow; + int selectionMode; + bool state; + + Document_Actor* documentActor; + Associate_Actor* associateActor; + + PatternDataSelectionModel* patternDataSelectionModel; + PatternBuilderSelectionModel* patternBuilderSelectionModel; + PatternGeomSelectionModel* patternGeomSelectionModel; + GroupsSelectionModel* groupsSelectionModel; + MeshSelectionModel* meshSelectionModel; + + PatternDataModel* patternDataModel; + PatternBuilderModel* patternBuilderModel; + PatternGeomModel* patternGeomModel; + GroupsModel* groupsModel; + MeshModel* meshModel; + + bool _currentChanged; + bool firstUpdate; + }; + } +} + + + + +#endif diff --git a/src/HEXABLOCKGUI/Hexa_QTD.ui b/src/HEXABLOCKGUI/Hexa_QTD.ui index 5b1e818..50da541 100755 --- a/src/HEXABLOCKGUI/Hexa_QTD.ui +++ b/src/HEXABLOCKGUI/Hexa_QTD.ui @@ -20,44 +20,6 @@ Hexahedron Construction - - - - - 0 - 0 - - - - Result Name - - - - - - Name - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - @@ -114,6 +76,41 @@ Arguments + + + + + 0 + 0 + + + + + + + Name + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + + + + diff --git a/src/HEXABLOCKGUI/JoinQuad_QTD.ui b/src/HEXABLOCKGUI/JoinQuad_QTD.ui index da20b11..172d694 100644 --- a/src/HEXABLOCKGUI/JoinQuad_QTD.ui +++ b/src/HEXABLOCKGUI/JoinQuad_QTD.ui @@ -6,8 +6,8 @@ 0 0 - 259 - 543 + 226 + 257 @@ -15,231 +15,256 @@ - - - - 0 - 0 - + + + true - - From - - - - - - - 0 - 0 - - - - Quadrangle(s) - - - - - - - - - - - - - 0 - 0 - - - - - - - Point a - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - Point b - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - - - - - - - - 0 - 0 - - - - To - - - - - - Quadrangle - - - - - - - - 0 - 0 - - - - false - - - - - - - Point a - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - Point b - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - - - - - 0 - 0 - - - - Grid - - - - - - - 0 - 0 - - - - size - - - - - - - - 0 - 0 - - - - 1000000 - - - 1 - - - - + + + + 0 + 0 + 212 + 427 + + + + + + + + 0 + 0 + + + + From + + + + + + + 0 + 0 + + + + Quadrangle(s) + + + + + + + + + + + + + 0 + 0 + + + + + + + Point a + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + Point b + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + + + + 0 + 0 + + + + To + + + + + + Quadrangle + + + + + + + + 0 + 0 + + + + false + + + + + + + Point a + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + Point b + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + 0 + 0 + + + + Grid + + + + + + + 0 + 0 + + + + size + + + + + + + + 0 + 0 + + + + 1 + + + 1000000 + + + 1 + + + + + + + + groupBox_3 + groupBox_8 + groupBox + diff --git a/src/HEXABLOCKGUI/Law_QTD.ui b/src/HEXABLOCKGUI/Law_QTD.ui index 1f9dbd1..31f39cf 100644 --- a/src/HEXABLOCKGUI/Law_QTD.ui +++ b/src/HEXABLOCKGUI/Law_QTD.ui @@ -70,9 +70,15 @@ + + 0 + 1000000 + + 0 + @@ -90,6 +96,9 @@ 1000000000.000000000000000 + + 1.000000000000000 + diff --git a/src/HEXABLOCKGUI/MakeCylinder_QTD.ui b/src/HEXABLOCKGUI/MakeCylinder_QTD.ui index d940909..22f7ef1 100644 --- a/src/HEXABLOCKGUI/MakeCylinder_QTD.ui +++ b/src/HEXABLOCKGUI/MakeCylinder_QTD.ui @@ -105,6 +105,9 @@ + + 1 + 1000000 @@ -122,6 +125,9 @@ + + 1 + 1000000 @@ -139,6 +145,9 @@ + + 1 + 1000000 diff --git a/src/HEXABLOCKGUI/MakeGrid_QTD.ui b/src/HEXABLOCKGUI/MakeGrid_QTD.ui index 2f0aec6..c47df53 100644 --- a/src/HEXABLOCKGUI/MakeGrid_QTD.ui +++ b/src/HEXABLOCKGUI/MakeGrid_QTD.ui @@ -6,19 +6,19 @@ 0 0 - 276 - 1083 + 226 + 266 - + 0 0 - 276 + 0 0 @@ -66,8 +66,8 @@ 0 0 - 254 - 1061 + 189 + 1057 @@ -747,15 +747,15 @@ - - + + - base + axis - - + + 16777215 @@ -770,15 +770,8 @@ - - - - vector - - - - - + + 16777215 @@ -793,6 +786,13 @@ + + + + base + + + @@ -858,9 +858,15 @@ 6 + + 0.000000000000000 + 1000000000.000000000000000 + + 1.000000000000000 + @@ -910,6 +916,9 @@ 1000000000.000000000000000 + + 1.000000000000000 + @@ -945,8 +954,8 @@ vex_le_rb0 vec_le_rb0 center_le_rb1 - base_le_rb1 height_le_rb1 + base_le_rb1 vex_le_rb2 nx_spb_rb0 ny_spb_rb0 diff --git a/src/HEXABLOCKGUI/MakeHemiSphere_QTD.ui b/src/HEXABLOCKGUI/MakeHemiSphere_QTD.ui index 99a2e2a..aa12507 100644 --- a/src/HEXABLOCKGUI/MakeHemiSphere_QTD.ui +++ b/src/HEXABLOCKGUI/MakeHemiSphere_QTD.ui @@ -6,19 +6,19 @@ 0 0 - 288 - 742 + 291 + 704 - + 0 0 - 285 + 0 0 @@ -39,49 +39,11 @@ 0 0 - 266 - 720 + 269 + 682 - - - - - 0 - 0 - - - - Result Name - - - - - - Name - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - @@ -145,7 +107,7 @@ 1000000000.000000000000000 - 1.000000000000000 + 2.000000000000000 @@ -419,6 +381,9 @@ 0 + + 1 + 1000000 @@ -442,6 +407,9 @@ 0 + + 1 + 1000000 @@ -465,6 +433,9 @@ 0 + + 1 + 1000000 @@ -487,16 +458,15 @@ scrollArea - name_le sphere_center_le - hole_axis_le - cross_pt_le - cross_vec_le - radial_vec_le sphere_radext_spb sphere_radint_spb sphere_rind_cb + hole_axis_le hole_rad_spb + cross_pt_le + cross_vec_le + radial_vec_le radial_angle_spb radial_partial_cb ngrid_rad_spb diff --git a/src/HEXABLOCKGUI/MakePipe_QTD.ui b/src/HEXABLOCKGUI/MakePipe_QTD.ui index ae4834c..92c30d7 100644 --- a/src/HEXABLOCKGUI/MakePipe_QTD.ui +++ b/src/HEXABLOCKGUI/MakePipe_QTD.ui @@ -99,6 +99,9 @@ 0 + + 1 + 1000000 @@ -122,6 +125,9 @@ 0 + + 1 + 1000000 @@ -145,6 +151,9 @@ 0 + + 1 + 1000000 diff --git a/src/HEXABLOCKGUI/Makefile.am b/src/HEXABLOCKGUI/Makefile.am index 4fe6038..a494818 100755 --- a/src/HEXABLOCKGUI/Makefile.am +++ b/src/HEXABLOCKGUI/Makefile.am @@ -40,8 +40,12 @@ dist_libHEXABLOCK_la_SOURCES = \ HEXABLOCKGUI_Trace.cxx \ HEXABLOCKGUI_Resource.hxx \ HEXABLOCKGUI_Resource.cxx \ - HEXABLOCKGUI_DocumentGraphicView.hxx \ - HEXABLOCKGUI_DocumentGraphicView.cxx \ + HEXABLOCKGUI_VtkDocumentGraphicView.hxx \ + HEXABLOCKGUI_VtkDocumentGraphicView.cxx \ + HEXABLOCKGUI_OccGraphicView.hxx \ + HEXABLOCKGUI_OccGraphicView.cxx \ + HEXABLOCKGUI_GraphicViewsHandler.hxx \ + HEXABLOCKGUI_GraphicViewsHandler.cxx \ HEXABLOCKGUI_DocumentModel.hxx \ HEXABLOCKGUI_DocumentModel.cxx \ HEXABLOCKGUI_DocumentSelectionModel.hxx \ @@ -97,13 +101,15 @@ UIC_FILES = \ ui_QuadRevolution_QTD.h \ ui_MakeRind_QTD.h \ ui_ReplaceHexa_QTD.h \ - ui_MakeHemiSphere_QTD.h + ui_MakeHemiSphere_QTD.h\ + ui_ModelInfo_QTD.h\ + ui_AddShapeDialog_QTD.h # MOC pre-processing MOC_FILES = \ HEXABLOCKGUI_moc.cxx \ - HEXABLOCKGUI_DocumentGraphicView_moc.cxx \ + HEXABLOCKGUI_VtkDocumentGraphicView_moc.cxx \ HEXABLOCKGUI_DocumentPanel_moc.cxx \ HEXABLOCKGUI_DocumentDelegate_moc.cxx \ HEXABLOCKGUI_DocumentSelectionModel_moc.cxx \ @@ -160,9 +166,11 @@ BUILT_SOURCES = $(UIC_FILES) # resources files ICONS = \ + resources/LightApp.xml \ resources/SalomeApp.xml \ resources/HEXABLOCKCatalog.xml \ resources/ModuleHexablock.png \ + resources/ModuleHexablock15x15.png\ resources/new_document.png \ resources/load_document.png \ resources/save_document.png \ diff --git a/src/HEXABLOCKGUI/Merge_QTD.ui b/src/HEXABLOCKGUI/Merge_QTD.ui index 45adfed..e8adf7e 100644 --- a/src/HEXABLOCKGUI/Merge_QTD.ui +++ b/src/HEXABLOCKGUI/Merge_QTD.ui @@ -7,11 +7,11 @@ 0 0 254 - 524 + 736 - + 0 0 @@ -24,327 +24,429 @@ QLayout::SetMinimumSize - + - + 0 0 - - Merge + + true - - - - - - 0 - 0 - - - - Vertex - - - true - - - - - - - - 0 - 0 - - - - Edge - - - - - - - Quad - - - - - - - - - - Arguments - - - - - - - - - vertex 1 - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - vertex 2 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - - - - - - - edge 1 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - edge 2 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - vertex 1 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - vertex 2 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - - - - - - - quad 1 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - quad 2 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - vertex 1 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - vertex 2 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - vertex 3 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - vertex 4 - - - - - - - - 16777215 - 16777215 - - - - false - - - - - - - + + + + 0 + -8 + 217 + 728 + + + + + + + + 0 + 0 + + + + Merge + + + + + + + 0 + 0 + + + + Vertex + + + true + + + + + + + + 0 + 0 + + + + Edge + + + + + + + Quad + + + + + + + + + + Arguments + + + + + + + + + From + + + + + + vertex 1 + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + To + + + + QFormLayout::AllNonFixedFieldsGrow + + + + + vertex 2 + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + + + + + + From + + + + + + edge 1 + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + vertex 1 + + + + + + + + 16777215 + 16777215 + + + + false + + + + + label_3 + v0_le_rb1 + e0_le_rb1 + label + + + + + + To + + + + + + edge 2 + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + vertex 2 + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + + + + + + From + + + + QFormLayout::AllNonFixedFieldsGrow + + + + + quad 1 + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + vertex 1a + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + vertex 1b + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + To + + + + + + quad 2 + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + vertex 2a + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + vertex 2b + + + + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + @@ -356,14 +458,14 @@ v0_le_rb0 v1_le_rb0 e0_le_rb1 - e1_le_rb1 v0_le_rb1 + e1_le_rb1 v1_le_rb1 q0_le_rb2 - q1_le_rb2 v0_le_rb2 - v1_le_rb2 v2_le_rb2 + q1_le_rb2 + v1_le_rb2 v3_le_rb2 diff --git a/src/HEXABLOCKGUI/ModelInfo_QTD.ui b/src/HEXABLOCKGUI/ModelInfo_QTD.ui new file mode 100644 index 0000000..c00628b --- /dev/null +++ b/src/HEXABLOCKGUI/ModelInfo_QTD.ui @@ -0,0 +1,346 @@ + + + ModelInfoDialog + + + + 0 + 0 + 231 + 239 + + + + + 0 + 0 + + + + + 16777215 + 240 + + + + Dialog + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + 0 + + + + + + + Name: + + + + + + + + + + Qt::AlignCenter + + + true + + + + + + + + + + + + Elements: + + + + + + + 0D (Vertex): + + + + + + + Total + + + + + + + Used + + + + + + + Unused + + + + + + + 1D (Edge): + + + + + + + 2D (Quad): + + + + + + + 3D (Hexa): + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + 37 + 0 + + + + Qt::AlignCenter + + + true + + + + + + + + + + + + + + + 10 + + + 10 + + + true + + + true + + + true + + + diff --git a/src/HEXABLOCKGUI/MyBasicGUI_PointDlg.cxx b/src/HEXABLOCKGUI/MyBasicGUI_PointDlg.cxx index 9c0042e..cb99ce6 100644 --- a/src/HEXABLOCKGUI/MyBasicGUI_PointDlg.cxx +++ b/src/HEXABLOCKGUI/MyBasicGUI_PointDlg.cxx @@ -60,6 +60,7 @@ #include "HEXABLOCKGUI_DocumentItem.hxx" #include "HEXABLOCKGUI_SalomeTools.hxx" #include "HEXABLOCKGUI.hxx" +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" #define PARAM_VALUE 0 #define COORD_VALUE 1 @@ -94,18 +95,12 @@ MyBasicGUI_PointDlg::MyBasicGUI_PointDlg(GeometryGUI* theGeometryGUI, QWidget* p myBusy (false), _documentModel(0), _patternDataSelectionModel(0), - _mgr(0), - _vtkVm(0), - _occVm(0), _currentObj(0), _selectionMutex(false) { QWidget* w = centralWidget(); QString objectName = w->objectName(); QString className = w->metaObject()->className(); - MESSAGE("* centralWidget() " << w ); - MESSAGE("* centralWidget()->objectName() is "<< objectName.toStdString() ); //toStdString() - MESSAGE("* centralWidget()->metaObject()->className() is "<< className.toStdString() ); ; SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_POINT"))); @@ -238,7 +233,7 @@ MyBasicGUI_PointDlg::MyBasicGUI_PointDlg(GeometryGUI* theGeometryGUI, QWidget* p /* HEXABLOCK */ _initInputWidget(); - _initViewManager(); +// _initViewManager(); /* HEXABLOCK */ } @@ -257,8 +252,6 @@ MyBasicGUI_PointDlg::~MyBasicGUI_PointDlg() //================================================================================= void MyBasicGUI_PointDlg::Init() { - MESSAGE("MyBasicGUI_PointDlg::Init() "); - GroupOnCurve->LineEdit1->setReadOnly(true); GroupOnCurve->LineEdit2->setReadOnly(true); GroupOnSurface->LineEdit1->setReadOnly(true); @@ -306,7 +299,6 @@ void MyBasicGUI_PointDlg::Init() initSpinBox(GroupOnSurface->SpinBox_DY, 0., 1., step, "parametric_precision"); GroupOnSurface->SpinBox_DY->setValue(0.5); - MESSAGE("MyBasicGUI_PointDlg::Init() : myGeomGUI " << myGeomGUI); /* signals and slots connections */ if ( myGeomGUI ){ connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); @@ -314,6 +306,7 @@ void MyBasicGUI_PointDlg::Init() } //connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk())); connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply())); + connect(buttonHelp(), SIGNAL(clicked()), this, SLOT(onHelpRequested()) ); // connect( closeButton, SIGNAL(clicked()), this, SLOT(close()) ); connect(this, SIGNAL(constructorsClicked(int)), this, SLOT(ConstructorsClicked(int))); @@ -338,6 +331,15 @@ void MyBasicGUI_PointDlg::Init() connect(GroupRefPoint->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); connect(GroupRefPoint->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double))); + connect( mainFrame()->RadioButton1, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( mainFrame()->RadioButton2, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( mainFrame()->RadioButton3, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( mainFrame()->RadioButton4, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( mainFrame()->RadioButton5, SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( myParamCoord->button(PARAM_VALUE), SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( myParamCoord->button(LENGTH_VALUE), SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + connect( myParamCoord->button(COORD_VALUE), SIGNAL(clicked()), this, SLOT(updateHelpFileName()) ); + if ( myGeomGUI ){ connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)), this, SLOT(SetDoubleSpinBoxStep(double))); @@ -350,6 +352,65 @@ void MyBasicGUI_PointDlg::Init() ConstructorsClicked(0); } +//================================================================================= +// function : onHelpRequested() +// purpose : show help in web browser +//================================================================================= +void MyBasicGUI_PointDlg::onHelpRequested() +{ + LightApp_Application* app = (LightApp_Application*)( SUIT_Session::session()->activeApplication() ); + if ( app ) + // app->onHelpContextModule( myGeometryGUI ? app->moduleName( myGeometryGUI->moduleName() ) : QString( "" ), _helpFileName ); + app->onHelpContextModule( "HEXABLOCK", myHelpFileName ); + + else { + QString platform; +#ifdef WIN32 + platform = "winapplication"; +#else + platform = "application"; +#endif + + SUIT_MessageBox::warning( 0, QObject::tr( "WRN_WARNING" ), + QObject::tr( "EXTERNAL_BROWSER_CANNOT_SHOW_PAGE" ). + arg( app->resourceMgr()->stringValue( "ExternalBrowser", platform ) ).arg( myHelpFileName ), + QObject::tr( "BUT_OK" ) ); + } +} + +//=============================================================== +// function : updateHelpFileName() +// purpose : update the help file according to the current panel +//=============================================================== +void MyBasicGUI_PointDlg::updateHelpFileName() +{ + if ( sender() == mainFrame()->RadioButton1 ){ + setHelpFileName("gui_asso_quad_to_geom.html#associate-to-a-vertex-of-the-geometry"); + } else if ( sender() == mainFrame()->RadioButton2 ){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-a-reference"); + } else if ( sender() == mainFrame()->RadioButton3 ){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-an-edge-and-a-parameter"); + } else if ( sender() == mainFrame()->RadioButton4 ){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-intersection-of-two-lines-or-wires"); + } else if ( sender() == mainFrame()->RadioButton5 ){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-a-face-and-two-parameters"); + } else if (sender() == myParamCoord->button(PARAM_VALUE)){ + if (mainFrame()->RadioButton3->isChecked()){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-an-edge-and-a-parameter"); + } else if (mainFrame()->RadioButton5->isChecked()){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-a-face-and-two-parameters"); + } + } else if (sender() == myParamCoord->button(LENGTH_VALUE)){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-an-edge-and-a-length"); + } else if (sender() == myParamCoord->button(COORD_VALUE)){ + if (mainFrame()->RadioButton3->isChecked()){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-an-edge-and-coordinates"); + } else if (mainFrame()->RadioButton5->isChecked()){ + setHelpFileName("gui_asso_vertex_to_geom.html#by-a-face-and-coordinates"); + } + } +} + //================================================================================= // function : SetDoubleSpinBoxStep() // purpose : Double spin box management @@ -374,13 +435,12 @@ void MyBasicGUI_PointDlg::ConstructorsClicked(int constructorId) { // HEXABLOCKGUI::currentOccView->raise(); // HEXABLOCKGUI::currentOccView->setFocus(); - MESSAGE("MyBasicGUI_PointDlg::ConstructorsClicked("<< constructorId << ")"); switch (constructorId) { case GEOM_POINT_XYZ: { - globalSelection(); // close local contexts, if any + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any myNeedType = TopAbs_VERTEX; - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); GroupRefPoint->hide(); GroupOnCurve->hide(); @@ -393,9 +453,9 @@ void MyBasicGUI_PointDlg::ConstructorsClicked(int constructorId) } case GEOM_POINT_REF: { - globalSelection(); // close local contexts, if any + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any myNeedType = TopAbs_VERTEX; - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); myEditCurrentArgument = GroupRefPoint->LineEdit1; //myEditCurrentArgument->setText(""); @@ -412,9 +472,9 @@ void MyBasicGUI_PointDlg::ConstructorsClicked(int constructorId) } case GEOM_POINT_EDGE: { - globalSelection(); // close local contexts, if any + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any myNeedType = TopAbs_EDGE; - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); myEditCurrentArgument = GroupOnCurve->LineEdit1; // myEditCurrentArgument->setText(""); @@ -434,9 +494,9 @@ void MyBasicGUI_PointDlg::ConstructorsClicked(int constructorId) } case GEOM_POINT_INTINT: { - globalSelection(); // close local contexts, if any + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any myNeedType = TopAbs_EDGE; - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); myEditCurrentArgument = GroupLineIntersection->LineEdit1; // GroupLineIntersection->LineEdit1->setText(""); @@ -458,9 +518,9 @@ void MyBasicGUI_PointDlg::ConstructorsClicked(int constructorId) } case GEOM_POINT_SURF: { - globalSelection(); // close local contexts, if any + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any myNeedType = TopAbs_FACE; - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); myEditCurrentArgument = GroupOnSurface->LineEdit1; //myEditCurrentArgument->setText(""); @@ -512,8 +572,8 @@ bool MyBasicGUI_PointDlg::ClickOnApply() // ConstructorsClicked(getConstructorId()); //Set selection mode to the last selected mode - globalSelection(); // close local contexts, if any - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); return true; } @@ -525,8 +585,6 @@ bool MyBasicGUI_PointDlg::ClickOnApply() //================================================================================= void MyBasicGUI_PointDlg::SelectionIntoArgument() { - MESSAGE("MyBasicGUI_PointDlg::SelectionIntoArgument() myGeomGUI : "<< myGeomGUI); - GEOM::GeomObjPtr aSelectedObject = getSelected(myNeedType); TopoDS_Shape aShape; if (!aSelectedObject || !GEOMBase::GetShape(aSelectedObject.get(), aShape) || aShape.IsNull()) @@ -626,15 +684,15 @@ void MyBasicGUI_PointDlg::SetEditCurrentArgument() if (send == GroupRefPoint->PushButton1) { GroupRefPoint->LineEdit1->setFocus(); myEditCurrentArgument = GroupRefPoint->LineEdit1; - globalSelection(); // close local contexts, if any - localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX); + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), TopAbs_VERTEX); } else if (send == GroupOnCurve->PushButton1) { GroupOnCurve->LineEdit1->setFocus(); myEditCurrentArgument = GroupOnCurve->LineEdit1; - globalSelection(); // close local contexts, if any + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any myNeedType = TopAbs_EDGE; - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); GroupOnCurve->PushButton2->setDown(false); GroupOnCurve->LineEdit1->setEnabled(true); GroupOnCurve->LineEdit2->setEnabled(false); @@ -642,9 +700,9 @@ void MyBasicGUI_PointDlg::SetEditCurrentArgument() else if (send == GroupOnCurve->PushButton2) { GroupOnCurve->LineEdit2->setFocus(); myEditCurrentArgument = GroupOnCurve->LineEdit2; - globalSelection(); // close local contexts, if any + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any myNeedType = TopAbs_VERTEX; - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); GroupOnCurve->PushButton1->setDown(false); GroupOnCurve->LineEdit2->setEnabled(true); GroupOnCurve->LineEdit1->setEnabled(false); @@ -653,8 +711,8 @@ void MyBasicGUI_PointDlg::SetEditCurrentArgument() { GroupOnSurface->LineEdit1->setFocus(); myEditCurrentArgument = GroupOnSurface->LineEdit1; - globalSelection(); // close local contexts, if any - localSelection(GEOM::GEOM_Object::_nil(), TopAbs_FACE); + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), TopAbs_FACE); } else if (send == GroupLineIntersection->PushButton1) { GroupLineIntersection->LineEdit1->setFocus(); @@ -684,7 +742,6 @@ void MyBasicGUI_PointDlg::SetEditCurrentArgument() //================================================================================= void MyBasicGUI_PointDlg::enterEvent(QEvent*) { - MESSAGE( "MyBasicGUI_PointDlg::enterEvent() "); if (!mainFrame()->GroupConstructors->isEnabled()) ActivateThisDialog(); } @@ -696,7 +753,6 @@ void MyBasicGUI_PointDlg::enterEvent(QEvent*) //================================================================================= void MyBasicGUI_PointDlg::ActivateThisDialog() { - MESSAGE( "MyBasicGUI_PointDlg::ActivateThisDialog() "); MyGEOMBase_Skeleton::ActivateThisDialog(); if ( myGeomGUI ){ @@ -713,7 +769,6 @@ void MyBasicGUI_PointDlg::ActivateThisDialog() //================================================================================= void MyBasicGUI_PointDlg::DeactivateActiveDialog() { - MESSAGE( "MyBasicGUI_PointDlg::DeactivateActiveDialog() "); // myGeomGUI->SetState(-1); MyGEOMBase_Skeleton::DeactivateActiveDialog(); } @@ -1055,9 +1110,9 @@ void MyBasicGUI_PointDlg::updateParamCoord(bool theIsUpdate) //================================================================================= void MyBasicGUI_PointDlg::onBtnPopup(QAction* a) { - globalSelection(); // close local contexts, if any + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); // close local contexts, if any myNeedType = myActions[a] == SelectEdge ? TopAbs_EDGE : TopAbs_WIRE; - localSelection(GEOM::GEOM_Object::_nil(), myNeedType); + localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), myNeedType); } //================================================================================= @@ -1130,21 +1185,26 @@ void MyBasicGUI_PointDlg::_initInputWidget() mainFrame()->_vertex_le->setValidator( validator ); } +void MyBasicGUI_PointDlg::clear() +{ + + mainFrame()->_vertex_le->clear(); + mainFrame()->_vertex_le->setProperty("QModelIndex", QVariant()); +} + void MyBasicGUI_PointDlg::_initViewManager() { - SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); - _mgr = dynamic_cast( anApp->selectionMgr() ); - _vtkVm = anApp->getViewManager( SVTK_Viewer::Type(), true ); - _occVm = anApp->getViewManager( OCCViewer_Viewer::Type(), true ); - SUIT_ViewManager* activeVm = anApp->activeViewManager(); - onWindowActivated ( activeVm ); +// SalomeApp_Application* anApp = dynamic_cast( SUIT_Session::session()->activeApplication() ); +// _mgr = dynamic_cast( anApp->selectionMgr() ); +// _vtkVm = anApp->getViewManager( SVTK_Viewer::Type(), false ); +// _occVm = anApp->getViewManager( OCCViewer_Viewer::Type(), false ); +// SUIT_ViewManager* activeVm = anApp->activeViewManager(); +// onWindowActivated ( activeVm ); } // bool MyBasicGUI_PointDlg::_onSelectionChanged( const QItemSelection& sel, QLineEdit* le ) // { -// MESSAGE("HexaBaseDialog::_onSelectionChanged(const QItemSelection& sel, QLineEdit* le)"); -// MESSAGE("* le is "<< le->objectName().toStdString() ); // QModelIndexList l = sel.indexes(); // if ( l.count() == 0 ) return false; // @@ -1159,7 +1219,6 @@ void MyBasicGUI_PointDlg::_initViewManager() // // // check selection compatibility between selection and widget // if ( selType != wType ){ -// MESSAGE("* bad selection : " << selType << " is not " << wType ); // SUIT_MessageBox::information( 0, // tr("HEXA_INFO"), // tr("Bad selection type: please select a %1").arg( _strHexaWidgetType[wType]) ); @@ -1169,7 +1228,6 @@ void MyBasicGUI_PointDlg::_initViewManager() // //fill the lineEdit if selection is OK // le->setText( selected.data().toString() );// name // le->setProperty("QModelIndex", QVariant::fromValue(selected) ); -// MESSAGE("}"); // return true; // } @@ -1177,19 +1235,8 @@ void MyBasicGUI_PointDlg::_initViewManager() void MyBasicGUI_PointDlg::onSelectionChanged( const QItemSelection& sel, const QItemSelection& unsel ) { - MESSAGE( "HexaBaseDialog::onSelectionChanged(){" ); QString className = metaObject()->className(); - MESSAGE( "* I am : " << className.toStdString() ); - MESSAGE( "* sender is : " << sender() ); - QItemSelectionModel* selector = dynamic_cast(sender()); - MESSAGE( "* selector : " << selector); - - foreach( const QModelIndex& isel, sel.indexes() ){ - MESSAGE("* selected : " << isel.data().toString().toStdString()); - } - foreach( const QModelIndex& iunsel, unsel.indexes() ){ - MESSAGE("* unselected : " << iunsel.data().toString().toStdString()); - } +// QItemSelectionModel* selector = dynamic_cast(sender()); if (_patternDataSelectionModel) _patternDataSelectionModel->highlightEltsWithAssocs(sel.indexes()); @@ -1211,27 +1258,23 @@ void MyBasicGUI_PointDlg::onSelectionChanged( const QItemSelection& sel, const Q selOk = true; } else { _patternDataSelectionModel->clearSelection(); - MESSAGE("* bad selection : " << selType << " is not " << HEXABLOCK::GUI::VERTEX_TREE ); SUIT_MessageBox::information( 0, tr("HEXA_INFO"), tr("Bad selection type: please select a %1").arg( "VERTEX" ) ); } } - MESSAGE("}"); } void MyBasicGUI_PointDlg::onWindowActivated(SUIT_ViewManager* vm) { - MESSAGE( "getConstructorId()"<< getConstructorId() ); - SUIT_ViewWindow* v = vm->getActiveView(); +// SUIT_ViewWindow* v = vm->getActiveView(); QString vmType = vm->getType(); if ( (vmType == SVTK_Viewer::Type()) || (vmType == VTKViewer_Viewer::Type()) ){ mainFrame()->_vertex_le->setFocus(); } else if ( vmType == OCCViewer_Viewer::Type() ){ // lines_lw->setFocus(); // ConstructorsClicked(0); - MESSAGE( "getConstructorId()"<< getConstructorId() ); ConstructorsClicked( getConstructorId() ); } } @@ -1282,14 +1325,12 @@ bool MyBasicGUI_PointDlg::eventFilter(QObject *obj, QEvent *event) } // _highlightWidget(obj, Qt::yellow); - MESSAGE("MyBasicGUI_PointDlg::eventFilter{"); - QVariant vxVariant; QModelIndex vxIndex; _currentObj = obj; // HEXABLOCKGUI::currentVtkView->raise(); - _patternDataSelectionModel->setVertexSelection(); + HEXABLOCKGUI::currentDocGView->setVertexSelection(); vxVariant = mainFrame()->_vertex_le->property("QModelIndex"); if ( !vxVariant.isValid() ) { @@ -1297,53 +1338,82 @@ bool MyBasicGUI_PointDlg::eventFilter(QObject *obj, QEvent *event) } vxIndex = vxVariant.value(); _selectionMutex = true; - MESSAGE("* selecting the element : " << vxIndex.data().toString().toStdString()); - MESSAGE("* _patternDataSelectionModel : " << _patternDataSelectionModel ); _patternDataSelectionModel->select( vxIndex, QItemSelectionModel::Clear ); _patternDataSelectionModel->select( vxIndex, QItemSelectionModel::Select ); _selectionMutex = false; - MESSAGE("}"); return false; } void MyBasicGUI_PointDlg::hideEvent ( QHideEvent * event ) { - MESSAGE("MyBasicGUI_PointDlg::hideEvent(){"); - disconnect( _patternDataSelectionModel, SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - disconnect( HEXABLOCKGUI::selectionMgr() , SIGNAL(currentSelectionChanged()), this, SLOT(onCurrentSelectionChanged()) ); - disconnect( _vtkVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); - disconnect( _occVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); - _documentModel->allowEdition(); - DeactivateActiveDialog(); - MyGEOMBase_Skeleton::hideEvent( event ); - MESSAGE("}"); + disconnect( _patternDataSelectionModel, SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + + //Disconnection salome selection signals + if (HEXABLOCKGUI::selectionMgr() != NULL) + disconnect( HEXABLOCKGUI::selectionMgr() , SIGNAL(currentSelectionChanged()), + this, SLOT(onCurrentSelectionChanged()) ); + + //Disconnect vtk window activation signals + if (HEXABLOCKGUI::currentDocGView->getViewWindow() != NULL) + disconnect( HEXABLOCKGUI::currentDocGView->getViewWindow()->getViewManager(), + SIGNAL( activated(SUIT_ViewManager*) ), + this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); + + //Disconnect occ window activation signals + if (HEXABLOCKGUI::currentOccGView->getViewWindow() != NULL) + disconnect( HEXABLOCKGUI::currentOccGView->getViewWindow()->getViewManager(), + SIGNAL( activated(SUIT_ViewManager*) ), + this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); + + _documentModel->allowEdition(); + DeactivateActiveDialog(); + MyGEOMBase_Skeleton::hideEvent( event ); } void MyBasicGUI_PointDlg::showEvent( QShowEvent * event ) { - MESSAGE("MyBasicGUI_PointDlg::showEvent(){"); _documentModel->disallowEdition(); // _patternDataSelectionModel->clearSelection(); connect( _patternDataSelectionModel, SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection &) ), - this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); - connect( _mgr, SIGNAL(currentSelectionChanged()), this, SLOT(onCurrentSelectionChanged()) ); - connect( _vtkVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); - connect( _occVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); + this, SLOT( onSelectionChanged(const QItemSelection &, const QItemSelection &) ) ); + + //Connect to salome selection signals + if (HEXABLOCKGUI::selectionMgr() != NULL) + { + connect( HEXABLOCKGUI::selectionMgr(), SIGNAL(currentSelectionChanged()), + this, SLOT(onCurrentSelectionChanged()), Qt::UniqueConnection ); + } + + //Connect to vtk window activation signals + if (HEXABLOCKGUI::currentDocGView->getViewWindow() != NULL) + { + connect( HEXABLOCKGUI::currentDocGView->getViewWindow()->getViewManager(), SIGNAL( activated(SUIT_ViewManager*) ), + this, SLOT( onWindowActivated(SUIT_ViewManager*) ), Qt::UniqueConnection ); + } + + //connect to occ window activation signals + if (HEXABLOCKGUI::currentOccGView->getViewWindow() != NULL) + { + connect( HEXABLOCKGUI::currentOccGView->getViewWindow()->getViewManager(), + SIGNAL( activated(SUIT_ViewManager*) ), + this, SLOT( onWindowActivated(SUIT_ViewManager*) ), Qt::UniqueConnection ); + } + +// connect( _mgr, SIGNAL(currentSelectionChanged()), this, SLOT(onCurrentSelectionChanged()) ); +// connect( _vtkVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); +// connect( _occVm, SIGNAL( activated(SUIT_ViewManager*) ), this, SLOT( onWindowActivated(SUIT_ViewManager*) ) ); SalomeApp_Application* app = (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ); - MESSAGE( "XXXXXXXXXXX myGeomGUI => " << myGeomGUI ); if ( !myGeomGUI && app ) myGeomGUI = dynamic_cast( app->module( "Geometry" ) ); - MESSAGE( "YYYYYYYYYYYYY myGeomGUI => " << myGeomGUI ); ActivateThisDialog(); MyGEOMBase_Skeleton::showEvent ( event ); - MESSAGE("}"); } @@ -1351,12 +1421,12 @@ void MyBasicGUI_PointDlg::showEvent( QShowEvent * event ) bool MyBasicGUI_PointDlg::onAccept( const bool publish, const bool useTransaction ) { - MESSAGE("MyBasicGUI_PointDlg::onAccept()"); GEOM::GEOM_Object_ptr newVertex; QString newVertexEntry; QString newVertexName; QString newVertexBrep; + gp_Pnt aPnt; @@ -1366,7 +1436,6 @@ bool MyBasicGUI_PointDlg::onAccept( const bool publish, const bool useTransactio bool aLocked = (_PTR(AttributeStudyProperties) (aStudy->GetProperties()))->IsLocked(); if ( aLocked ) { - MESSAGE("GEOMBase_Helper::onAccept - ActiveStudy is locked"); SUIT_MessageBox::warning ( (QWidget*)SUIT_Session::session()->activeApplication()->desktop(), QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED"), @@ -1425,10 +1494,9 @@ bool MyBasicGUI_PointDlg::onAccept( const bool publish, const bool useTransactio TopoDS_Shape aShape; GEOMBase::GetShape( newVertex, aShape ); if ( !aShape.IsNull() ){ - MESSAGE("!aShape.IsNull()"); newVertexName = GEOMBase::GetName( newVertex ); - MESSAGE("newVertexName "<< newVertexName.toStdString()); newVertexBrep = HEXABLOCK::GUI::shape2string( aShape ).c_str(); + aPnt = BRep_Tool::Pnt(TopoDS::Vertex(aShape)); } // updateView=false @@ -1486,19 +1554,19 @@ bool MyBasicGUI_PointDlg::onAccept( const bool publish, const bool useTransactio if ( iVertex.isValid() ){ HEXABLOCK::GUI::DocumentModel::GeomObj aPoint; - aPoint.name = newVertexName; - aPoint.entry = newVertexEntry; + aPoint.shapeName = newVertexName; + aPoint.subid = QString::number(-1); aPoint.brep = newVertexBrep; - MESSAGE(" aPoint.name" << aPoint.name.toStdString() ); - MESSAGE(" aPoint.entry" << aPoint.entry.toStdString() ); - MESSAGE(" aPoint.brep" << aPoint.brep.toStdString() ); - _documentModel->addAssociation( iVertex, aPoint ); + _documentModel->setGeomObjName(newVertexEntry, newVertexName); + _documentModel->setGeomObjEntry(newVertexName, newVertexEntry); +// _documentModel->addAssociation( iVertex, aPoint ); + _documentModel->setVertexAssociation(iVertex, aPnt.X(), aPnt.Y(), aPnt.Z()); // to select/highlight result // _patternDataSelectionModel->clearSelection(); // mainFrame()->_vertex_le->setFocus(); -// globalSelection(); -// localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX); +// globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); +// localSelection(HEXABLOCKGUI::currentOccGView->getViewWindow(), TopAbs_VERTEX); _patternDataSelectionModel->select( patternDataModel->mapFromSource(iVertex), QItemSelectionModel::Clear ); _patternDataSelectionModel->select( patternDataModel->mapFromSource(iVertex), QItemSelectionModel::Select ); _currentObj = NULL; diff --git a/src/HEXABLOCKGUI/MyBasicGUI_PointDlg.hxx b/src/HEXABLOCKGUI/MyBasicGUI_PointDlg.hxx index eaed34a..0598c0e 100755 --- a/src/HEXABLOCKGUI/MyBasicGUI_PointDlg.hxx +++ b/src/HEXABLOCKGUI/MyBasicGUI_PointDlg.hxx @@ -123,6 +123,10 @@ private: QMap myActions; TopAbs_ShapeEnum myNeedType; + + +public slots: + virtual void onHelpRequested(); private slots: void ClickOnOk(); @@ -139,14 +143,12 @@ private slots: void onBtnPopup( QAction* ); void updateSize(); - // HEXABLOCK public: void setDocumentModel( HEXABLOCK::GUI::DocumentModel* m ); void setPatternDataSelectionModel( HEXABLOCK::GUI::PatternDataSelectionModel* s ); - bool onAccept( const bool publish = true, const bool useTransaction = true ); - + void clear(); protected: virtual bool eventFilter( QObject *obj, QEvent *event ); @@ -160,14 +162,12 @@ protected: protected slots: void onSelectionChanged( const QItemSelection& sel, const QItemSelection& unsel ); void onWindowActivated( SUIT_ViewManager* vm ); + void updateHelpFileName(); private: HEXABLOCK::GUI::DocumentModel* _documentModel; HEXABLOCK::GUI::PatternDataSelectionModel* _patternDataSelectionModel; - LightApp_SelectionMgr* _mgr; - SUIT_ViewManager* _vtkVm; - SUIT_ViewManager* _occVm; // QLineEdit* _vertex_le; QObject* _currentObj; diff --git a/src/HEXABLOCKGUI/MyDlgRef/DlgRef_Skeleton_QTD.ui b/src/HEXABLOCKGUI/MyDlgRef/DlgRef_Skeleton_QTD.ui index 406a6b6..856d4b5 100755 --- a/src/HEXABLOCKGUI/MyDlgRef/DlgRef_Skeleton_QTD.ui +++ b/src/HEXABLOCKGUI/MyDlgRef/DlgRef_Skeleton_QTD.ui @@ -6,12 +6,12 @@ 0 0 - 297 - 396 + 225 + 267 - + 0 0 @@ -33,8 +33,8 @@ 0 0 - 275 - 322 + 201 + 307 diff --git a/src/HEXABLOCKGUI/MyGEOMBase_Helper.cxx b/src/HEXABLOCKGUI/MyGEOMBase_Helper.cxx index d8228fb..8f39862 100644 --- a/src/HEXABLOCKGUI/MyGEOMBase_Helper.cxx +++ b/src/HEXABLOCKGUI/MyGEOMBase_Helper.cxx @@ -20,13 +20,13 @@ #include "MyGEOMBase_Helper.hxx" #include "GEOMBase.h" #include "GEOM_Operation.h" +#include "HEXABLOCKGUI.hxx" #include #include #include #include -#include #include #include #include @@ -42,11 +42,13 @@ #include #include +#include #include #include #include #include +#include //To disable automatic genericobj management, the following line should be commented. //Otherwise, it should be uncommented. Refer to KERNEL_SRC/src/SALOMEDSImpl/SALOMEDSImpl_AttributeIOR.cxx @@ -91,7 +93,6 @@ MyGEOMBase_Helper::MyGEOMBase_Helper( SUIT_Desktop* desktop ) //================================================================ MyGEOMBase_Helper::~MyGEOMBase_Helper() { - MESSAGE("DESSSSSSSSSSTTTRRRRUUUCCCCCCCCCCCTTTTOOOOORRRRR"); //rnv: Fix for the "IPAL21922 : WinTC5.1.4: incorrect quit salome" if ( !SUIT_Session::session()->activeApplication() || !SUIT_Session::session()->activeApplication()->desktop() ) return; @@ -169,7 +170,7 @@ void MyGEOMBase_Helper::erase( GEOM::GEOM_Object_ptr object, const bool updateVi if ( !object->_is_nil() ) { QString entry = getEntry( object ); getDisplayer()->Erase( new SALOME_InteractiveObject( - entry.toLatin1().constData(), + entry.toLatin1().constData(), "GEOM", strdup( GEOMBase::GetName( object ).toLatin1().constData() ) ), true, updateView ); } } @@ -255,7 +256,7 @@ void MyGEOMBase_Helper::displayPreview( const bool display, erasePreview( update ); return; } - + isPreview = true; QString msg; if ( !isValid( msg ) ) @@ -480,6 +481,73 @@ void MyGEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mod localSelection( objList, mode ); } +//================================================================ +// Beta version +// Function : localSelection +// Purpose : Activate selection of subshapes in accordance with mode +// theMode is from TopAbs_ShapeEnum +//================================================================ +void MyGEOMBase_Helper::localSelection(SUIT_ViewWindow *view, const int theMode ) +{ + SUIT_Session* session = SUIT_Session::session(); + SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); + if ( app == NULL || view == NULL ) return; + + LightApp_SelectionMgr* sm = app->selectionMgr(); + + // remove all filters from selection + sm->clearFilters(); + + SALOME_View* vf = dynamic_cast(view->getViewManager()->getViewModel()); + if (vf == NULL) return; + + SALOME_Prs* prs = vf->CreatePrs( NULL ); + vf->LocalSelection( prs, theMode ); + delete prs; // delete presentation because displayer is its owner +} + + + +//================================================================ +// Beta version +// Function : globalSelection2 +// Purpose : Activate selection of subshapes. Set selection filters +// in accordance with mode. theMode is from GEOMImpl_Types +// mode = GEOM_ALLOBJECTS +//================================================================ +void MyGEOMBase_Helper::globalSelection(SUIT_ViewWindow *view, const bool update ) +{ + SUIT_Session* session = SUIT_Session::session(); + SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); + if ( app == NULL || view == NULL ) return; + + SALOME_View* vf = dynamic_cast(view->getViewManager()->getViewModel()); + if ( vf == NULL ) return; + + // Close local context + vf->GlobalSelection( update ); + + // Set selection filters in accordance with current mode + LightApp_SelectionMgr* sm = app->selectionMgr(); + if ( !sm ) + return; + + + //@ aSel->ClearIndex(); + + sm->clearFilters(); + + // Remove filters from AIS_InteractiveContext + Handle(AIS_InteractiveContext) ic; + SOCC_Viewer* viewer = dynamic_cast( vf ); + if ( viewer ) + { + ic = viewer->getAISContext(); + if ( !ic.IsNull() ) + ic->RemoveFilters(); + } +} + //================================================================ // Function : globalSelection @@ -794,7 +862,6 @@ bool MyGEOMBase_Helper::onAccept( const bool publish, const bool useTransaction bool aLocked = (_PTR(AttributeStudyProperties) (aStudy->GetProperties()))->IsLocked(); if ( aLocked ) { - MESSAGE("MyGEOMBase_Helper::onAccept - ActiveStudy is locked"); SUIT_MessageBox::warning ( (QWidget*)SUIT_Session::session()->activeApplication()->desktop(), QObject::tr("WRN_WARNING"), QObject::tr("WRN_STUDY_LOCKED"), @@ -1079,7 +1146,7 @@ GEOM::GEOM_Object_ptr MyGEOMBase_Helper::findObjectInFather (GEOM::GEOM_Object_p } if (inStudy) return aReturnObject._retn(); - + return GEOM::GEOM_Object::_nil(); } @@ -1093,7 +1160,7 @@ GEOM::GEOM_Object_ptr MyGEOMBase_Helper::findObjectInFather( GEOM::GEOM_Object_p { GEOM::GEOM_Object_var object; bool found = false; - + SalomeApp_Study* study = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( study ) { _PTR(Study) studyDS = study->studyDS(); @@ -1116,7 +1183,7 @@ GEOM::GEOM_Object_ptr MyGEOMBase_Helper::findObjectInFather( GEOM::GEOM_Object_p } } } - + return object._retn(); } @@ -1136,7 +1203,7 @@ void MyGEOMBase_Helper::addSubshapesToStudy() // Returns valid object if only one object of the specified type is selected // (no matter global or local selection is activated). If \a type is TopAbs_SHAPE, // geometrical object of any valid type is expected. -// +// // \param type type of the object to be obtained from selection // \return selected geometrical object or nil object if selection is not satisfactory //================================================================ @@ -1155,7 +1222,7 @@ GEOM::GeomObjPtr MyGEOMBase_Helper::getSelected( TopAbs_ShapeEnum type ) // (no matter global or local selection is activated). The list of allowed // shape types is passed via \a types. If \a types includes TopAbs_SHAPE, // geometrical object of any valid type is expected. -// +// // \param types list of allowed shape types for the objects to be obtained from selection // \return selected geometrical object or nil object if selection is not satisfactory //================================================================ @@ -1175,7 +1242,7 @@ GEOM::GeomObjPtr MyGEOMBase_Helper::getSelected( const QList& // // The \a type parameter specifies allowed type of the object(s) being selected. // The \a count parameter specifies exact number of the objects to be retrieved from selection. -// The \a strict parameter specifies policy being applied to the selection. +// The \a strict parameter specifies policy being applied to the selection. // If \a count < 0, then any number of the selected objects is valid (including 0). // In this case, if \a strict is \c true (default), all selected objects should satisfy // the specified \a type. @@ -1183,7 +1250,7 @@ GEOM::GeomObjPtr MyGEOMBase_Helper::getSelected( const QList& // In this case, if \a strict is \c true (default), function returns empty list if total number of selected // objects does not correspond to the \a count parameter. Otherwise (if \a strict is \c false), // function returns valid list of objects if at least \a count objects satisfy specified \a type. -// +// // \param type type of the object(s) to be obtained from selection // \param count number of items to be retrieved from selection // \param strict selection policy @@ -1214,7 +1281,7 @@ static bool typeInList( TopAbs_ShapeEnum type, const QList& ty // // The \a types parameter specifies allowed types of the object(s) being selected. // The \a count parameter specifies exact number of the objects to be retrieved from selection. -// The \a strict parameter specifies policy being applied to the selection. +// The \a strict parameter specifies policy being applied to the selection. // If \a count < 0, then any number of the selected objects is valid (including 0). // In this case, if \a strict is \c true (default), all selected objects should satisfy // the specified \a type. @@ -1222,7 +1289,7 @@ static bool typeInList( TopAbs_ShapeEnum type, const QList& ty // In this case, if \a strict is \c true (default), function returns empty list if total number of selected // objects does not correspond to the \a count parameter. Otherwise (if \a strict is \c false), // function returns valid list of objects if at least \a count objects satisfy specified \a type. -// +// // \param types list of allowed shape types for the objects to be obtained from selection // \param count number of items to be retrieved from selection // \param strict selection policy @@ -1230,74 +1297,93 @@ static bool typeInList( TopAbs_ShapeEnum type, const QList& ty //================================================================ QList MyGEOMBase_Helper::getSelected( const QList& types, int count, bool strict ) { - SUIT_Session* session = SUIT_Session::session(); - QList result; - - SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); - if ( app ) { - LightApp_SelectionMgr* selMgr = app->selectionMgr(); - if ( selMgr ) { - SALOME_ListIO selected; - selMgr->selectedObjects( selected ); - SALOME_ListIteratorOfListIO it( selected ); - bool stopped = false; - for ( ; it.More() && !stopped; it.Next() ) { - Handle(SALOME_InteractiveObject) IO = it.Value(); - GEOM::GeomObjPtr object = GEOMBase::ConvertIOinGEOMObject( IO ); - if ( object ) { - TColStd_IndexedMapOfInteger subShapes; - selMgr->GetIndexes( IO, subShapes ); - int nbSubShapes = subShapes.Extent(); - if ( nbSubShapes == 0 ) { - // global selection - if ( typeInList( (TopAbs_ShapeEnum)(object->GetShapeType()), types ) ) { - result << object; - if ( count > 0 ) { - if ( strict && result.count() > count ) { - result.clear(); - stopped = true; - } - else if ( !strict && result.count() == count ) - stopped = true; - } - } - else if ( strict ) { - result.clear(); - stopped = true; - } - } - else { - // local selection - for ( int i = 1; i <= nbSubShapes && !stopped; i++ ) { - int idx = subShapes( i ); - GEOM::GeomObjPtr subShape = findObjectInFather( object.get(), idx ); - if ( !subShape ) { - // sub-shape is not yet published in the study - GEOM::ShapesOpPtr shapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); - subShape.take( shapesOp->GetSubShape( object.get(), idx ) ); // take ownership! - } - if ( typeInList( (TopAbs_ShapeEnum)(subShape->GetShapeType()), types ) ) { - result << subShape; - if ( count > 0 ) { - if ( strict && result.count() > count ) { - result.clear(); - stopped = true; - } - else if ( !strict && result.count() == count ) - stopped = true; - } - } - else if ( strict ) { - result.clear(); - stopped = true; - } - } - } - } - } + SUIT_Session* session = SUIT_Session::session(); + QList result; + + SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); + if ( app ) { +// LightApp_SelectionMgr* selMgr = app->selectionMgr(); +// if ( selMgr ) { + if ( HEXABLOCKGUI::selectionMgr() != NULL) { + SALOME_ListIO selected; + + //====================================== +// SUIT_DataOwnerPtrList selectedDataOwner; +// AIS_ListOfInteractive listOfSelected; +// +// if (HEXABLOCKGUI::currentOccSelector != NULL) +// HEXABLOCKGUI::currentOccSelector->viewer()->getSelectedObjects(listOfSelected); +// +// AIS_ListIteratorOfListOfInteractive it (listOfSelected); +// while (it.More ()) +// { +// //do something with the current item : it.Value () +// selected.Append(it.Value()); +// it.Next (); +// } + //====================================== + +// selMgr->selectedObjects( selected ); + HEXABLOCKGUI::selectionMgr()->selectedObjects( selected/*, "", false*/ ); + SALOME_ListIteratorOfListIO it( selected ); + bool stopped = false; + for ( ; it.More() && !stopped; it.Next() ) { + Handle(SALOME_InteractiveObject) IO = it.Value(); + GEOM::GeomObjPtr object = GEOMBase::ConvertIOinGEOMObject( IO ); + if ( object ) { + TColStd_IndexedMapOfInteger subShapes; + HEXABLOCKGUI::selectionMgr()->GetIndexes( IO, subShapes ); + int nbSubShapes = subShapes.Extent(); + if ( nbSubShapes == 0 ) { + // global selection + if ( typeInList( (TopAbs_ShapeEnum)(object->GetShapeType()), types ) ) { + result << object; + if ( count > 0 ) { + if ( strict && result.count() > count ) { + result.clear(); + stopped = true; + } + else if ( !strict && result.count() == count ) + stopped = true; + } + } + else if ( strict ) { + result.clear(); + stopped = true; + } + } + else { + // local selection + for ( int i = 1; i <= nbSubShapes && !stopped; i++ ) { + int idx = subShapes( i ); + GEOM::GeomObjPtr subShape = findObjectInFather( object.get(), idx ); + if ( !subShape ) { + // sub-shape is not yet published in the study + GEOM::ShapesOpPtr shapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); + subShape.take( shapesOp->GetSubShape( object.get(), idx ) ); // take ownership! + } + if ( typeInList( (TopAbs_ShapeEnum)(subShape->GetShapeType()), types ) ) { + result << subShape; + if ( count > 0 ) { + if ( strict && result.count() > count ) { + result.clear(); + stopped = true; + } + else if ( !strict && result.count() == count ) + stopped = true; + } + } + else if ( strict ) { + result.clear(); + stopped = true; + } + } + } + } + } + } } - } - return result; + return result; } //================================================================ diff --git a/src/HEXABLOCKGUI/MyGEOMBase_Helper.hxx b/src/HEXABLOCKGUI/MyGEOMBase_Helper.hxx index ea3bac8..365b566 100644 --- a/src/HEXABLOCKGUI/MyGEOMBase_Helper.hxx +++ b/src/HEXABLOCKGUI/MyGEOMBase_Helper.hxx @@ -26,6 +26,7 @@ #include #include #include +#include #include CORBA_CLIENT_HEADER(GEOM_Gen) #include @@ -60,12 +61,18 @@ public: void globalSelection( const int = GEOM_ALLOBJECTS, const bool = false ); void globalSelection( const TColStd_MapOfInteger&, const bool = false ); void globalSelection( const TColStd_MapOfInteger&, const QList& ,const bool = false ); + void erasePreview ( const bool = true ); + void display ( GEOM::GEOM_Object_ptr, const bool = true ); + QString addInStudy ( GEOM::GEOM_Object_ptr, const char* theName ); + + void localSelection(SUIT_ViewWindow *view, const int theMode); + void globalSelection( SUIT_ViewWindow *view, const bool update = false ); protected: static GEOM::GEOM_Gen_ptr getGeomEngine(); void display ( const ObjectList&, const bool = true ); - void display ( GEOM::GEOM_Object_ptr, const bool = true ); +// void display ( GEOM::GEOM_Object_ptr, const bool = true ); void erase ( const ObjectList&, const bool = true ); void erase ( GEOM::GEOM_Object_ptr, const bool = true ); void redisplay ( const ObjectList&, const bool = true, const bool = true ); @@ -91,7 +98,6 @@ protected: void displayPreview ( const SALOME_Prs* prs, const bool append = false, const bool = true ); - void erasePreview ( const bool = true ); // void localSelection( const ObjectList&, const int ); // void localSelection( GEOM::GEOM_Object_ptr, const int ); @@ -104,7 +110,7 @@ protected: void prepareSelection( const ObjectList&, const int ); void prepareSelection( GEOM::GEOM_Object_ptr, const int ); - QString addInStudy ( GEOM::GEOM_Object_ptr, const char* theName ); +// QString addInStudy ( GEOM::GEOM_Object_ptr, const char* theName ); bool openCommand (); bool abortCommand (); diff --git a/src/HEXABLOCKGUI/MyGEOMBase_Skeleton.cxx b/src/HEXABLOCKGUI/MyGEOMBase_Skeleton.cxx index b67d1f9..48955fa 100755 --- a/src/HEXABLOCKGUI/MyGEOMBase_Skeleton.cxx +++ b/src/HEXABLOCKGUI/MyGEOMBase_Skeleton.cxx @@ -19,6 +19,7 @@ #include "MyGEOMBase_Skeleton.hxx" #include "GEOMBase.h" +#include "HEXABLOCKGUI_VtkDocumentGraphicView.hxx" #include "MyDlgRef.hxx" #include @@ -54,7 +55,6 @@ MyGEOMBase_Skeleton::MyGEOMBase_Skeleton( GeometryGUI* theGeometryGUI, QWidget* // setAttribute( Qt::WA_DeleteOnClose ); setModal( modal ); - MESSAGE("MyGEOMBase_Skeleton::MyGEOMBase_Skeleton()"); myMainFrame = new MyDlgRef_Skeleton( this ); QVBoxLayout* topLayout = new QVBoxLayout( this ); @@ -208,11 +208,12 @@ void MyGEOMBase_Skeleton::close() { // _currentObj = NULL; - //Clear VTK selection -// clearVTKSelection(); + //Clear VTK selection //no need to test if the graphic view exist + HEXABLOCKGUI::currentDocGView->clearSelection(); //Clear OCC selection -// clearOCCSelection(); + if (HEXABLOCKGUI::currentOccGView != NULL) + HEXABLOCKGUI::currentOccGView->clearSelection(); //Close the dialog box if (parentWidget()) parentWidget()->close(); @@ -248,7 +249,7 @@ void MyGEOMBase_Skeleton::LineEditReturnPressed() void MyGEOMBase_Skeleton::DeactivateActiveDialog() { this->setEnabled( false ); - globalSelection(); + globalSelection(HEXABLOCKGUI::currentOccGView->getViewWindow()); if ( myGeomGUI ) { myGeomGUI->SetActiveDialogBox( 0 ); disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 ); diff --git a/src/HEXABLOCKGUI/MyGEOMBase_Skeleton.hxx b/src/HEXABLOCKGUI/MyGEOMBase_Skeleton.hxx index ebbdf76..3d1a6ea 100755 --- a/src/HEXABLOCKGUI/MyGEOMBase_Skeleton.hxx +++ b/src/HEXABLOCKGUI/MyGEOMBase_Skeleton.hxx @@ -22,6 +22,8 @@ #include "GEOM_GEOMBase.hxx" #include "MyGEOMBase_Helper.hxx" +#include "HEXABLOCKGUI_OccGraphicView.hxx" +#include "HEXABLOCKGUI.hxx" #include diff --git a/src/HEXABLOCKGUI/PrismQuad_QTD.ui b/src/HEXABLOCKGUI/PrismQuad_QTD.ui index 7be90fb..357108d 100644 --- a/src/HEXABLOCKGUI/PrismQuad_QTD.ui +++ b/src/HEXABLOCKGUI/PrismQuad_QTD.ui @@ -6,8 +6,8 @@ 0 0 - 254 - 500 + 260 + 376 @@ -18,7 +18,7 @@ - 5 + 0 0 @@ -33,248 +33,276 @@ - - - - 5 - 0 - + + + true - - Arguments - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Quad(s) - - - - - - - 0 - 0 - - - - - - - - - - - - 16777215 - 50 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Direction - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - - - - - - 0 - 0 - - - - Layer(s) - - - - - - - - regular - - - true - - - - - - - irregular - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - nb - - - - - - - 1000000 - - - 1 - - - - - - - - - - - 16777215 - 169 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - 0 - 0 - - - - 0 - - - - height - - + + + + 0 + 0 + 267 + 500 + + + + + + + + 0 + 0 + + + + Arguments + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Quad(s) + + + + + + + 0 + 0 + + + + + + + + + + + + 16777215 + 50 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + 0 + + + + Direction + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + false + + + + + + + + + + + 0 + 0 + + + + Layer(s) + + + + + + + + regular + + + true + + + + + + + irregular + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + - - - true - - - - 0 - 0 - - + - + + nb - - - - - 0 - 0 - + + + + 1 + + + 1000000 + + + 1 - - + + + + + + + + 16777215 + 169 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + - + 0 0 - - - + + 0 + + + height + + + + + + true + + + + 0 + 0 + + + + + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + - + + + + + + + Qt::Vertical + + + + 20 + 139 + + + + + + - - - - Qt::Vertical - - - - 20 - 139 - - - - - - - - - - - - - + + + + + + + + + diff --git a/src/HEXABLOCKGUI/QuadAssoc_QTD.ui b/src/HEXABLOCKGUI/QuadAssoc_QTD.ui index 43fe6df..2d5d150 100644 --- a/src/HEXABLOCKGUI/QuadAssoc_QTD.ui +++ b/src/HEXABLOCKGUI/QuadAssoc_QTD.ui @@ -65,7 +65,7 @@ - Quad + Quad of the model @@ -93,7 +93,7 @@ - Face(s) + Face(s) of the geometry diff --git a/src/HEXABLOCKGUI/QuadRevolution_QTD.ui b/src/HEXABLOCKGUI/QuadRevolution_QTD.ui index 0f90bec..55452fe 100644 --- a/src/HEXABLOCKGUI/QuadRevolution_QTD.ui +++ b/src/HEXABLOCKGUI/QuadRevolution_QTD.ui @@ -20,44 +20,6 @@ Quad(s) Revolution - - - - - 5 - 0 - - - - Result Name - - - - - - Name : - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - diff --git a/src/HEXABLOCKGUI/ReplaceHexa_QTD.ui b/src/HEXABLOCKGUI/ReplaceHexa_QTD.ui index 038cf13..08a9399 100644 --- a/src/HEXABLOCKGUI/ReplaceHexa_QTD.ui +++ b/src/HEXABLOCKGUI/ReplaceHexa_QTD.ui @@ -6,13 +6,13 @@ 0 0 - 234 - 461 + 227 + 255 - 5 + 0 0 @@ -21,297 +21,271 @@ - - - - 0 - 0 - + + + true - - - 0 - 0 - - - - Result Name - - - - - - Name - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Arguments - - - - - - - 0 - 0 - - - - Quad(s) source - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - Select hexa - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Point a - - - - - - - - 0 - 0 - - - - Select vertex - - - - - - false - - - - - - - Point b - - - - - - - - 0 - 0 - - - - Select vertex - - - - - - false - - - - - - - Point c - - - - - - - - 0 - 0 - - - - Select vertex - - - - - - false - - - - - - - - - - - - - - 0 - 0 - - - - Quad destination - - - - - - Point a - - - - - - - - 0 - 0 - - - - Select vertex - - - - - - false - - - - - - - Point b - - - - - - - - 0 - 0 - - - - Select vertex - - - - - - false - - - - - - - Point c - - - - - - - - 0 - 0 - - - - Select vertex - - - - - - false - - - - - - - + + + + 0 + 0 + 234 + 397 + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Arguments + + + + + + + 0 + 0 + + + + Quad(s) source + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Select hexa + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + Point a + + + + + + + + 0 + 0 + + + + Select vertex + + + + + + false + + + + + + + Point b + + + + + + + + 0 + 0 + + + + Select vertex + + + + + + false + + + + + + + Point c + + + + + + + + 0 + 0 + + + + Select vertex + + + + + + false + + + + + + + + + + + + + + 0 + 0 + + + + Quad destination + + + + + + Point a + + + + + + + + 0 + 0 + + + + Select vertex + + + + + + false + + + + + + + Point b + + + + + + + + 0 + 0 + + + + Select vertex + + + + + + false + + + + + + + Point c + + + + + + + + 0 + 0 + + + + Select vertex + + + + + + false + + + + + + + + + + + - name_le quads_lw p1_le p2_le diff --git a/src/HEXABLOCKGUI/Symmetry_QTD.ui b/src/HEXABLOCKGUI/Symmetry_QTD.ui index 80e4e7f..4719b89 100644 --- a/src/HEXABLOCKGUI/Symmetry_QTD.ui +++ b/src/HEXABLOCKGUI/Symmetry_QTD.ui @@ -85,7 +85,7 @@ - Plan + Plane diff --git a/src/HEXABLOCKGUI/Vector_QTD.ui b/src/HEXABLOCKGUI/Vector_QTD.ui index f09de3f..df482f8 100644 --- a/src/HEXABLOCKGUI/Vector_QTD.ui +++ b/src/HEXABLOCKGUI/Vector_QTD.ui @@ -139,7 +139,7 @@ 1000000000.000000000000000 - 0.000000000000000 + 1.000000000000000 diff --git a/src/HEXABLOCKGUI/klinkitemselectionmodel.cxx b/src/HEXABLOCKGUI/klinkitemselectionmodel.cxx index d41011c..8304b3d 100644 --- a/src/HEXABLOCKGUI/klinkitemselectionmodel.cxx +++ b/src/HEXABLOCKGUI/klinkitemselectionmodel.cxx @@ -85,7 +85,7 @@ void KLinkItemSelectionModel::select(const QModelIndex &index, QItemSelectionMod void KLinkItemSelectionModel::select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command) { - std::cout<<"KLinkItemSelectionModel::select(const QItemSelection &selection"<"< " << i.data().toString().toStdString() << std::endl; - } else { - std::cout<<"range NOT VALID"<"< " << i.data().toString().toStdString() << std::endl; +// } else { +// std::cout<<"range NOT VALID"< " << i.data().toString().toStdString() << std::endl; - } +// Q_FOREACH(const QModelIndex &i, range.indexes ()) +// { +//// std::cout<< " =====> " << i.data().toString().toStdString() << std::endl; +// } if (!range.isValid()) continue; // std::cout<< " is VALID !!"<< std::endl; diff --git a/src/HEXABLOCKGUI/resources/HEXABLOCK_icons.ts b/src/HEXABLOCKGUI/resources/HEXABLOCK_icons.ts index 69dafca..7526304 100755 --- a/src/HEXABLOCKGUI/resources/HEXABLOCK_icons.ts +++ b/src/HEXABLOCKGUI/resources/HEXABLOCK_icons.ts @@ -203,6 +203,10 @@ ICO_WIRE build_wire.png + + ICO_MODULE_HEXABLOCK_SMALL + ModuleHexablock15x15.png + diff --git a/src/HEXABLOCKGUI/resources/HEXABLOCK_msg_en.ts b/src/HEXABLOCKGUI/resources/HEXABLOCK_msg_en.ts index 9cc0fc8..d358d48 100755 --- a/src/HEXABLOCKGUI/resources/HEXABLOCK_msg_en.ts +++ b/src/HEXABLOCKGUI/resources/HEXABLOCK_msg_en.ts @@ -45,6 +45,41 @@ Cannot disconnect + + HEXABLOCKGUI + + CLEAR_ASSOCIATIONS + Clear associations + + + CLEAR_ALL_ASSOCIATIONS_ON + Clear all associations on + + + TREE_ITEM_VERTEX + Vertices + + + TREE_ITEM_EDGE + Edges + + + TREE_ITEM_QUAD + Quadrangles + + + MODEL_INFO + Model Information + + + ADD_SHAPE + Add geometry + + + ADD_SHAPE_FAILED + Add geometry failed! + + HEXABLOCK::GUI::DocumentModel @@ -83,6 +118,18 @@ TREE_ITEM_CROSSELEMENT Cross Elements + + TREE_ITEM_EXPSHAPE + Explicit geometries + + + TREE_ITEM_IMPSHAPE + Implicit geometries + + + TREE_ITEM_CLOUD_OF_POINT + Cloud of points + TREE_ITEM_GROUP Groups @@ -96,6 +143,17 @@ Propagations + + HEXABLOCK::GUI::QuadAssocDialog + + ERR_ERROR + Error + + + CANNOT MAKE QUAD ASSOCIATION + Cannot make quad association + + HEXABLOCK::GUI::EdgeAssocDialog @@ -183,6 +241,22 @@ CROSSELEMENTS Cross Elements + + GEOMSHAPE + Geom Shape + + + GEOMPOINT + Geom Vertex + + + GEOMEDGE + Geom Edge + + + GEOMFACE + Geom Face + GROUP Group @@ -214,6 +288,10 @@ HEXA_INFO HexaBlock + + + UNKNOWN_GEOMETRY + Unknown Geometry! %1: Bad type selected diff --git a/src/HEXABLOCKGUI/resources/HEXABLOCK_msg_fr.ts b/src/HEXABLOCKGUI/resources/HEXABLOCK_msg_fr.ts index 6432157..2b2307c 100755 --- a/src/HEXABLOCKGUI/resources/HEXABLOCK_msg_fr.ts +++ b/src/HEXABLOCKGUI/resources/HEXABLOCK_msg_fr.ts @@ -45,6 +45,29 @@ Impossible de déconnecter + + HEXABLOCKGUI + + CLEAR_ASSOCIATIONS + Suppression des associations + + + CLEAR_ALL_ASSOCIATIONS_ON + Supprimer toutes les associations sur les + + + TREE_ITEM_VERTEX + Sommets + + + TREE_ITEM_EDGE + Arêtes + + + TREE_ITEM_QUAD + Quadrangles + + HEXABLOCK::GUI::DocumentModel @@ -83,6 +106,18 @@ TREE_ITEM_CROSSELEMENT Eléments de croix + + TREE_ITEM_EXPSHAPE + Géométries explicites + + + TREE_ITEM_IMPSHAPE + Géométries implicites + + + TREE_ITEM_CLOUD_OF_POINT + Nuage de points + TREE_ITEM_GROUP Groupes @@ -107,6 +142,17 @@ Impossible d'associer les arêtes + + HEXABLOCK::GUI::QuadAssocDialog + + ERR_ERROR + Erreur + + + CANNOT MAKE QUAD ASSOCIATION + Impossible d'associer les faces + + HEXABLOCK::GUI::EdgeDialog @@ -183,6 +229,22 @@ CROSSELEMENTS Eléments de croix + + GEOMSHAPE + Geométrie + + + GEOMPOINT + Sommet Geom + + + GEOMEDGE + Arête Geom + + + GEOMFACE + Face Geom + GROUP Groupe @@ -215,6 +277,10 @@ HEXA_INFO HexaBlock + + UNKNOWN_GEOMETRY + Geométrie inconnue! + %1: Bad type selected Please select a %2. @@ -1240,6 +1306,18 @@ Choisissez un(e) %2. MEN_FILE + + MODEL_INFO + Info du model + + + ADD_SHAPE + Ajout d'une géométrie + + + ADD_SHAPE_FAILED + L'ajout de la géométrie a échoué! + MyGEOMBase_Skeleton diff --git a/src/HEXABLOCKGUI/resources/LightApp.xml b/src/HEXABLOCKGUI/resources/LightApp.xml new file mode 100644 index 0000000..c04b2ac --- /dev/null +++ b/src/HEXABLOCKGUI/resources/LightApp.xml @@ -0,0 +1,32 @@ + + +
      + + + +
      +
      + + +
      +
      diff --git a/src/HEXABLOCKGUI/resources/ModuleHexablock15x15.png b/src/HEXABLOCKGUI/resources/ModuleHexablock15x15.png new file mode 100644 index 0000000000000000000000000000000000000000..cd7e21243c636d586ef05fb89fedfb8beb6ab010 GIT binary patch literal 1143 zcmeAS@N?(olHy`uVBq!ia0vp^{2!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3wtH#mZ6>W;j=(7;&b^{SJ{%Vsc#lN%WPI^7+>>B1@r86; zlm0R9DG94O1$|A9uq&%=J6Lpa$~2+1qTae!mR;ETx~zQn^SYVF#c9XH|K77_VOTJw z>Ea{v4NG%p?|X8#^va^A>{)@8yI+Qu7aXkGR{faYK-|aL1;)?BQ(VI$pg3>wEoa-|5wwshQB~G$) z-|)>$cw-!w*zv53pO!P0FSmJh#x~HxC;i_nyZX%~wJp-wVh)R@_k=uaSoZRL_?%1I zRUYtt+POIOYuL|#-+C7|8h-Rh|Nq3L(&g#p*R#*`g+6HO-|TjK?X2io{C^VCAFSp3 zS$4&T>D|xbXZp`}`Fx)l<6Ji(;qC9wN7vgIME<>A`FgwT+?l+0`AnDj8n>K||Bty^wa9{D%LVej?sXHG)iQrk<{=Vo2CKAwH;D1YO` zmu*|7mCuywtX*dyey0C0i#wmU|Gj-*mV0$h|G!Ru+Pf)Y`kH;;esRBg$E7NB{QA?y@aS=egP>^f6i5z>R^! z6qsfl1pQR_BUMC7Cm-{lw`W4u_4jWl#h9jixwG%|<-_(O|08d$S>AK}edgUSCGigf znG_5e6f|9ZW-JPHYQ1x7@88z-&+gT3e5C)KV`_=jy1knMdg|D9_FuSm!tvmb^tzkx z%rCw4Y{?1WQdy|9!8~`*`E%y$Wp_mGwA=bfcdpZ!ig{HvIq!{k_n)~pE6C?qda_%8 z(*buuCw4WCGHi9OPgzvcNgOS@8rgY|uXZ5Rq4HP5@Y>s9x`m#60Jb}Xp$Qz>H6{BnF_WAM8R zFS0*8w!Zvd{D-*h|1VS4q`LM4^P6gkYeY#(Vo9o1a#1RfVlXl=G}1LR&^0g&F*LR^ zHMBA|&^9o#GB9BMu+s!ZLvDUbW?CgggMo#vkx7UVP@ScfDOAH|vEr{l4Gf;HelF{r G5}E+Yh4Kgh literal 0 HcmV?d00001 diff --git a/src/HEXABLOCKGUI/resources/ModuleHexablock20x20.png b/src/HEXABLOCKGUI/resources/ModuleHexablock20x20.png new file mode 100644 index 0000000000000000000000000000000000000000..66d4886aabfdc7f35632bf69607147af772a6bf9 GIT binary patch literal 1652 zcmV-)28;QLP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;wH)0002_L%V+f000SaNLh0L02dMf02dMgXP?qi00009 zc5p#w0000K0000K0HZr9(EtDiR7pfZR5;6Rm04(BWgdtB?|a^J&bKA``lU%4liJ!f zq+)GT>$KKV?S%^}Xh%isf{0s1LD7LQLcP(8DOg-kkQr1cxG%VYN~_ed+O(xjqlu=; zOih|E`S!Cf@AjXIL1sqgxqp6_&yT?Gh(rhnCilU%-s`MtbgsuuYl9wdZFb}4HmUi= z89O_M08bMjM-WjzbkQ^a_N_IyUQT0Z`9|(lA(dCVyR$5)xj4S=Epl*Af zm)IFHWRZ8I}Z3HvJn@@guBb9t*19=_<=e-9pA_-eI9?R$mho66xo)-;pK5|`Ia zH*Ex-XiddDJduRy-_P$@BN9ivTye{8|LPvjh`G`-GNT4%`vJ)N8fCDexB-~bav(+h zh(TEn0CY30eA!GYA1EzP0l;)yrqkKE>`I-p3hPJD9)%g_%&{;H{wyJVlxVs;$J$@b z+PPgoaosIyp>ipqb4lQo=2DDmUS4EP50$jo$z^6uPtqWL$kMmWn`giQ8)BK zFCFaK-15`rhc$nGfQ$4BFLkf?oM0&S_-;lC4QBmG6-s|*b#Z-*0NIi;^6v)x#48fT z3y4_#eCCZdN{m(A`FLHt<6o`7ucYSp-E23=tEdxjySnOm}7b z_E^+@#OJNMGb}&MsCoIDzdZM2E2#}pVhjv+UQ)=@VqtV)B+nB*CAmJ1iX2CT`$Vh; zv_!=abSktEsYu$sKlf$%npJl^)`-i8!^Gd~1dZ*p&FSr-@cE)_S8MH}4IN#%z7Z|p zNut?=nc9v1t$BO$+qs)XqKKA=Oo5D*&?ygPh61vW$6n_bF5UQc#?0%gJO5UtR{4dR zQIFvU0|LJFCRQ0FM28A22Q5Kt)U zk}H*ZvOG3D`qd3Xx38NI&tg3;gVG3$G9ZM2mdFSpHUKC>X-X9lsgf!ck+hQ_v0^^~ zg#si9CAmToYWDc44jO6QNxF(K2XiDRwI;*E2Qg1tWJp#Z)qALP_ zr|$N(YMv1~NgxybGXeSuAXdn4Vch$}UGVg!Z@}=8T{{Vo=iBYlx~b_iP?_}VTX$UY zQ05UK!GA%JMEif@uF*7ppnF)}SMI4v?XR5CI;FgZFkFe@-JIxsM^7IXCg0000 #include #include @@ -68,12 +63,13 @@ static bool db = false; #include "HEXABLOCK.hxx" +#include "HEXABLOCK_version.h" #include "utilities.h" #include "HexDocument_impl.hxx" #include -// #include "SALOMEDS_Tool.hxx" +#include "SALOMEDS_Tool.hxx" // #include "SALOMEDSImpl_TMPFile.hxx" using namespace HEXABLOCK_ORB; @@ -101,15 +97,14 @@ HEXABLOCK_Gen_i::HEXABLOCK_Gen_i(CORBA::ORB_ptr orb, const char *interfaceName) : Engines_Component_i(orb, poa, contId, instanceName, interfaceName) { - MESSAGE("activate object"); _thisObj = this ; _poa = PortableServer::POA::_duplicate(poa); _orb = CORBA::ORB::_duplicate(orb); _id = _poa->activate_object(_thisObj); - _engine_cpp = new HEXA_NS::Hex; +//_engine_cpp = new HEXA_NS::Hex; + _engine_cpp = HEXA_NS::Hex::getInstance (); _geomClient = NULL; _HEXABLOCKGen = this; - MESSAGE("ALRRRRRIGHTTTTT"); } //============================================================================= @@ -143,9 +138,6 @@ HEXABLOCK_Gen_i::~HEXABLOCK_Gen_i() { } - - - //============================================================================= /*! * DumpPython @@ -156,7 +148,6 @@ Engines::TMPFile* HEXABLOCK_Gen_i::DumpPython(CORBA::Object_ptr theStudy, CORBA::Boolean /*isMultiFile*/, CORBA::Boolean& isValidScript) { - MESSAGE("DumpPython DumpPython DumpPython DumpPython"); std::cout << "DumpPython DumpPython DumpPython DumpPython" << std::endl; isValidScript = true; // to avoid dump python operation failing Engines::TMPFile_var aStreamFile = new Engines::TMPFile(0); @@ -245,7 +236,6 @@ Engines::TMPFile* HEXABLOCK_Gen_i::DumpPython(CORBA::Object_ptr theStudy, void HEXABLOCK_Gen_i::test() { - MESSAGE("HEEEEEEEEEEEEEEYYYYYYYYYYY"); } CORBA::Long HEXABLOCK_Gen_i::countDocument() @@ -258,7 +248,9 @@ CORBA::Long HEXABLOCK_Gen_i::countDocument() Document_ptr HEXABLOCK_Gen_i::getDocument(CORBA::Long i) { HEXA_NS::Document *doc=_engine_cpp->getDocument(i); - if ( doc == NULL ) return Document::_nil(); + if ( doc == NULL ) + return Document::_nil(); + Document_impl *servantCorba = new Document_impl( GetPOA(), doc ); return servantCorba->_this(); } @@ -273,6 +265,16 @@ void HEXABLOCK_Gen_i::removeDocument(HEXABLOCK_ORB::Document_ptr docIn) } } +Document_ptr HEXABLOCK_Gen_i::findDocument(const char* name) +{ + HEXA_NS::Document *doc=_engine_cpp->findDocument (name); + + if (doc==NULL) + return Document::_nil(); + + Document_impl *servantCorba=new Document_impl( GetPOA(), doc); + return servantCorba->_this(); +} Document_ptr HEXABLOCK_Gen_i::addDocument(const char* name) { @@ -498,60 +500,30 @@ int HEXABLOCK_Gen_i::RegisterObject(CORBA::Object_ptr theObject) } -// SMESH::SMESH_Mesh_ptr SMESH_Gen_i::createMesh() -// throw ( SALOME::SALOME_Exception ) - - char* HEXABLOCK_Gen_i::ComponentDataType() { -// if(MYDEBUG) MESSAGE( "HEXABLOCK_Gen_i::ComponentDataType" ); return CORBA::string_dup( "HEXABLOCK" ); } - -// SMESH_Mesh* SMESH_Gen::CreateMesh(int theStudyId, bool theIsEmbeddedMode) -// throw(SALOME_Exception) -// { -// Unexpect aCatch(SalomeException); -// MESSAGE("SMESH_Gen::CreateMesh"); -// -// // Get studyContext, create it if it does'nt exist, with a SMESHDS_Document -// StudyContextStruct *aStudyContext = GetStudyContext(theStudyId); -// -// // create a new SMESH_mesh object -// SMESH_Mesh *aMesh = new SMESH_Mesh(_localId++, -// theStudyId, -// this, -// theIsEmbeddedMode, -// aStudyContext->myDocument); -// aStudyContext->mapMesh[_localId] = aMesh; -// -// return aMesh; -// } - - - - Document_ptr HEXABLOCK_Gen_i::createDoc (const char* name) throw ( SALOME::SALOME_Exception ) { Unexpect aCatch(SALOME_SalomeException); -// if(MYDEBUG) MESSAGE( "SMESH_Gen_i::createMesh" ); // Get or create the GEOM_Client instance try { - HEXA_NS::Document *d = _engine_cpp->addDocument (name); - Document_impl *docImpl = new Document_impl( GetPOA(), d ); + HEXA_NS::Document *doc = NULL; + doc = _engine_cpp->addDocument (name); + Document_impl *docImpl = new Document_impl( GetPOA(), doc ); // activate the CORBA servant of Mesh Document_var docServant = Document::_narrow( docImpl->_this() ); /* int nextId = */ RegisterObject( docServant ); -// if(MYDEBUG) MESSAGE( "Add mesh to map with id = "<< nextId); + return docServant._retn(); } catch (SALOME_Exception& S_ex) { -// THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), SALOME::BAD_PARAM ); } return Document::_nil(); } @@ -560,7 +532,6 @@ Document_ptr HEXABLOCK_Gen_i::createDocInStudy (const char* name) throw ( SALOME::SALOME_Exception ) { Unexpect aCatch(SALOME_SalomeException); -// if(MYDEBUG) MESSAGE( "SMESH_Gen_i::CreateMesh" ); // create mesh Document_var doc = this->createDoc (name); @@ -570,10 +541,6 @@ Document_ptr HEXABLOCK_Gen_i::createDocInStudy (const char* name) aStudyBuilder->NewCommand(); // There is a transaction SALOMEDS::SObject_var aSO = PublishDoc( myCurrentStudy, doc.in() ); aStudyBuilder->CommitCommand(); -// if ( !aSO->_is_nil() ) { -// // Update Python script -// TPythonDump() << aSO << " = " << this << ".CreateEmptyMesh()"; -// } } return doc._retn(); @@ -644,23 +611,14 @@ void HEXABLOCK_Gen_i::SetCurrentStudy( SALOMEDS::Study_ptr theStudy ) } - - - - TopoDS_Shape string2shape( const string& brep ) { TopoDS_Shape shape; -// istringstream streamBrep(brep.c_str()); istringstream streamBrep(brep); -// char* chaine = new char[brep.size()]; -// strcpy(chaine, brep.c_str()); -// istringstream streamBrep( chaine ); BRep_Builder aBuilder; BRepTools::Read(shape, streamBrep, aBuilder); -// BRepTools::Read(shape, brep, aBuilder); return shape; } @@ -677,9 +635,7 @@ TopoDS_Shape string2shape( const string& brep ) string shape2string( const TopoDS_Shape& aShape ) { ostringstream streamShape; -// string strShape; BRepTools::Write(aShape, streamShape); -// BRepTools::Write(aShape, strShape); return streamShape.str(); } @@ -693,7 +649,6 @@ extern "C" const char *instanceName, const char *interfaceName) { - MESSAGE("PortableServer::ObjectId * HEXABLOCKEngine_factory()"); SCRUTE(interfaceName); HEXABLOCK_Gen_i *myHEXABLOCK = new HEXABLOCK_Gen_i(orb, poa, contId, instanceName, interfaceName); @@ -745,9 +700,8 @@ char* HEXABLOCK_Gen_i::IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject, { if (db) cout << " +++++++ Je suis passe par HEXABLOCK_Gen_i::" << "IORToLocalPersistentID" << endl; - /// static char empty [8] = ""; - char* empty = strdup (""); - return empty; + const char* empty = ""; + return CORBA::string_dup (empty); } // =================================================== LocalPersistentIDToIOR char* HEXABLOCK_Gen_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, @@ -757,8 +711,9 @@ char* HEXABLOCK_Gen_i::LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject, { if (db) cout << " +++++++ Je suis passe par HEXABLOCK_Gen_i::" << "LocalPersistentIDToIOR" << endl; - static char empty [8] = ""; - return empty; + + const char* empty = ""; + return CORBA::string_dup (empty); } // // =========================================================== CanCopy @@ -793,11 +748,6 @@ SALOMEDS::SObject_ptr HEXABLOCK_Gen_i::PasteInto(const SALOMEDS::TMPFile& fic, << "PasteInto" << endl; return NULL; } -// ======================================================== CanPublishInStudy -// bool HEXABLOCK_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR) -// { - // return NULL; -// } // =========================================================== CanPaste SALOMEDS::SObject_ptr HEXABLOCK_Gen_i::PublishInStudy (SALOMEDS::Study_ptr stud, SALOMEDS::SObject_ptr theSObject, @@ -810,23 +760,102 @@ SALOMEDS::SObject_ptr HEXABLOCK_Gen_i::PublishInStudy (SALOMEDS::Study_ptr stud, return NULL; } // =========================================================== Save -SALOMEDS::TMPFile* HEXABLOCK_Gen_i::Save( - const SALOMEDS::SComponent_ptr compo, - const char* theURL, - bool isMultiFile) +SALOMEDS::TMPFile* HEXABLOCK_Gen_i::Save(const SALOMEDS::SComponent_ptr compo, + const char* theURL, + bool isMultiFile) { if (db) cout << " +++++++ Je suis passe par HEXABLOCK_Gen_i::" << "Save" << endl; - return NULL; + + string tmp_fic = SALOMEDS_Tool::GetTmpDir(); +// tmp_fic += "hexablock.xml"; + tmp_fic = "hexablock.xml"; + cpchar fic_study = tmp_fic.c_str(); + + int len_buffer = 4; + char* ch_buffer = NULL; + int ier = _engine_cpp->saveAllDocs (fic_study); + if (ier==HOK) + ch_buffer = Hex::read_file (fic_study, len_buffer); + else + ch_buffer = strdup ("<0>"); + + CORBA::Octet* oct_buffer = (CORBA::Octet*) ch_buffer; + SALOMEDS::TMPFile* oct_stream = new SALOMEDS::TMPFile (len_buffer, + len_buffer, oct_buffer, 1); + return oct_stream; } // =========================================================== Load CORBA::Boolean HEXABLOCK_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent, - const SALOMEDS::TMPFile& theStream, + const SALOMEDS::TMPFile& stream, const char* theURL, bool isMultiFile) { if (db) cout << " +++++++ Je suis passe par HEXABLOCK_Gen_i::" << "Load" << endl; - return false; + char *ch_buffer = (char*) stream.NP_data(); + + int ier = _engine_cpp->loadAllDocs (ch_buffer); + return ier==HOK; +} + +// =========================================================== addDocInStudy +CORBA::Long HEXABLOCK_Gen_i::addDocInStudy (Document_ptr doc_in) + throw ( SALOME::SALOME_Exception ) +{ + if (CORBA::is_nil(myCurrentStudy)) + return 986; + + Document_impl* doc_servant = ::DownCast (doc_in); + if (doc_servant == NULL) + return 987; + + HEXA_NS::Document* doc = doc_servant->GetImpl(); + if (doc == NULL) + return 988; + + cpchar name = doc->getName(); + PutData (name); + + SALOMEDS::StudyBuilder_var study_builder = myCurrentStudy->NewBuilder(); + // study_builder->NewCommand(); // There is a transaction ??? + + + SALOMEDS::SObject_var obj = ObjectToSObject( myCurrentStudy, doc_in ); + if ( obj->_is_nil() ) + { + SALOMEDS::SComponent_var father = PublishComponent( myCurrentStudy ); + if ( father->_is_nil() ) + return 989; + + // SALOMEDS::SObject_var + // s_obj = HEXABLOCK_Gen_i::ObjectToSObject( my_current_study, doc_in ); ??? + // if ( obj->_is_nil() ) --> C'est le cas + + SALOMEDS::SObject_var s_obj = study_builder->NewObject (father); + obj = s_obj._retn(); + if ( obj->_is_nil() ) + return 981; + } + + SALOMEDS::GenericAttribute_var attrib; + SALOMEDS::AttributeName_var attname; + + attrib = study_builder->FindOrCreateAttribute( obj, "AttributeName" ); + attname = SALOMEDS::AttributeName::_narrow( attrib ); + attname->SetValue (name); + /// ----------- Fin de SetName + // study_builder->CommitCommand(); ??? + return HOK; +} +// =========================================================== Version information + +char* HEXABLOCK_Gen_i::getVersion() +{ +#if HEXABLOCK_DEVELOPMENT + return CORBA::string_dup(HEXABLOCK_VERSION_STR"dev"); +#else + return CORBA::string_dup(HEXABLOCK_VERSION_STR); +#endif } diff --git a/src/HEXABLOCK_I/HEXABLOCK.hxx b/src/HEXABLOCK_I/HEXABLOCK.hxx index 6a7b164..23b68cb 100755 --- a/src/HEXABLOCK_I/HEXABLOCK.hxx +++ b/src/HEXABLOCK_I/HEXABLOCK.hxx @@ -141,6 +141,7 @@ public: Document_ptr getDocument(::CORBA::Long i); void removeDocument(Document_ptr d); //CS_TODO Document_ptr addDocument (const char* name); + Document_ptr findDocument (const char* name); Document_ptr loadDocument (const char* xmlFilename); GEOM_Client* getGeomClient(); @@ -178,9 +179,11 @@ public: - Document_ptr createDoc(const char* name) + Document_ptr createDoc (const char* name) throw ( SALOME::SALOME_Exception ); - Document_ptr createDocInStudy(const char* name) + Document_ptr createDocInStudy (const char* name) + throw ( SALOME::SALOME_Exception ); + CORBA::Long addDocInStudy (Document_ptr doc) throw ( SALOME::SALOME_Exception ); //-----------------------------------------------------------------------// @@ -234,6 +237,7 @@ public : CORBA::Boolean isMultiFile, CORBA::Boolean isASCII); + char* getVersion(); #if 0 virtual std::string GetIOR(); @@ -325,6 +329,8 @@ private : map myStudyContextMap; // Map of study context objects SALOMEDS::Study_var myCurrentStudy; // Current study + bool first_document; + }; extern "C" diff --git a/src/HEXABLOCK_I/HEXABLOCK_1.cxx b/src/HEXABLOCK_I/HEXABLOCK_1.cxx index 26491b5..75fcaa9 100644 --- a/src/HEXABLOCK_I/HEXABLOCK_1.cxx +++ b/src/HEXABLOCK_I/HEXABLOCK_1.cxx @@ -19,11 +19,6 @@ #include "HEXABLOCK.hxx" -// #include "SMESH_Mesh_i.hxx" -// #include "SMESH_Hypothesis_i.hxx" -// #include "SMESH_Algo_i.hxx" -// #include "SMESH_Group_i.hxx" -// #include "SMESH_subMesh_i.hxx" #include "SALOME_NamingService.hxx" @@ -34,114 +29,11 @@ #include -// #ifdef _DEBUG_ -// static int MYDEBUG = 0; -// static int VARIABLE_DEBUG = 0; -// #else -// static int MYDEBUG = 0; -// static int VARIABLE_DEBUG = 0; -// #endif - static int MYDEBUG = 1; using namespace HEXABLOCK_ORB; - -//============================================================================= -/*! - * Get...Tag [ static ] - * - * Methods which determine SMESH data model structure - */ -//============================================================================= - -// long SMESH_Gen_i::GetHypothesisRootTag() -// { -// return SMESH::Tag_HypothesisRoot; -// } -// -// long SMESH_Gen_i::GetAlgorithmsRootTag() -// { -// return SMESH::Tag_AlgorithmsRoot; -// } -// -// long SMESH_Gen_i::GetRefOnShapeTag() -// { -// return SMESH::Tag_RefOnShape; -// } -// -// long SMESH_Gen_i::GetRefOnAppliedHypothesisTag() -// { -// return SMESH::Tag_RefOnAppliedHypothesis; -// } -// -// long SMESH_Gen_i::GetRefOnAppliedAlgorithmsTag() -// { -// return SMESH::Tag_RefOnAppliedAlgorithms; -// } -// -// long SMESH_Gen_i::GetSubMeshOnVertexTag() -// { -// return SMESH::Tag_SubMeshOnVertex; -// } -// -// long SMESH_Gen_i::GetSubMeshOnEdgeTag() -// { -// return SMESH::Tag_SubMeshOnEdge; -// } -// -// long SMESH_Gen_i::GetSubMeshOnFaceTag() -// { -// return SMESH::Tag_SubMeshOnFace; -// } -// -// long SMESH_Gen_i::GetSubMeshOnSolidTag() -// { -// return SMESH::Tag_SubMeshOnSolid; -// } -// -// long SMESH_Gen_i::GetSubMeshOnCompoundTag() -// { -// return SMESH::Tag_SubMeshOnCompound; -// } -// -// long SMESH_Gen_i::GetSubMeshOnWireTag() -// { -// return SMESH::Tag_SubMeshOnWire; -// } -// -// long SMESH_Gen_i::GetSubMeshOnShellTag() -// { -// return SMESH::Tag_SubMeshOnShell; -// } -// -// long SMESH_Gen_i::GetNodeGroupsTag() -// { -// return SMESH::Tag_NodeGroups; -// } -// -// long SMESH_Gen_i::GetEdgeGroupsTag() -// { -// return SMESH::Tag_EdgeGroups; -// } -// -// long SMESH_Gen_i::GetFaceGroupsTag() -// { -// return SMESH::Tag_FaceGroups; -// } -// -// long SMESH_Gen_i::GetVolumeGroupsTag() -// { -// return SMESH::Tag_VolumeGroups; -// } -// -// long SMESH_Gen_i::Get0DElementsGroupsTag() -// { -// return SMESH::Tag_0DElementsGroups; -// } - - //============================================================================= /*! * SMESH_Gen_i::CanPublishInStudy @@ -151,7 +43,6 @@ using namespace HEXABLOCK_ORB; //============================================================================= bool HEXABLOCK_Gen_i::CanPublishInStudy(CORBA::Object_ptr theIOR) { - if(MYDEBUG) MESSAGE("CanPublishInStudy - "<_is_nil() ) return true; -// SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow(theIOR); -// if( !aSubMesh->_is_nil() ) -// return true; -// -// SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow(theIOR); -// if( !aHyp->_is_nil() ) -// return true; -// -// SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(theIOR); -// if( !aGroup->_is_nil() ) -// return true; - if(MYDEBUG) MESSAGE("CanPublishInStudy--CANT"); return false; } @@ -192,65 +71,6 @@ SALOMEDS::SObject_ptr HEXABLOCK_Gen_i::ObjectToSObject( SALOMEDS::Study_ptr theS return aSO._retn(); } -//======================================================================= -//function : objectToServant -//purpose : -//======================================================================= - -// template static inline T* objectToServant( CORBA::Object_ptr theIOR ) -// { -// return dynamic_cast( SMESH_Gen_i::GetServant( theIOR ).in() ); -// } - -//======================================================================= -//function : ShapeToGeomObject -//purpose : -//======================================================================= - -// GEOM::GEOM_Object_ptr SMESH_Gen_i::ShapeToGeomObject (const TopoDS_Shape& theShape ) -// { -// GEOM::GEOM_Object_var aShapeObj; -// if ( !theShape.IsNull() ) { -// GEOM_Client* aClient = GetShapeReader(); -// TCollection_AsciiString IOR; -// if ( aClient && aClient->Find( theShape, IOR )) -// { -// CORBA::Object_var obj = GetORB()->string_to_object( IOR.ToCString() ); -// aShapeObj = GEOM::GEOM_Object::_narrow ( obj ); -// } -// } -// return aShapeObj._retn(); -// } - -//======================================================================= -//function : GeomObjectToShape -//purpose : -//======================================================================= - -// TopoDS_Shape SMESH_Gen_i::GeomObjectToShape(GEOM::GEOM_Object_ptr theGeomObject) -// { -// TopoDS_Shape S; -// if ( !theGeomObject->_is_nil() ) { -// GEOM_Client* aClient = GetShapeReader(); -// GEOM::GEOM_Gen_ptr aGeomEngine = GetGeomEngine(); -// if ( aClient && !aGeomEngine->_is_nil () ) -// S = aClient->GetShape( aGeomEngine, theGeomObject ); -// } -// return S; -// } - - - - - - - - - - - - - //======================================================================= @@ -287,10 +107,6 @@ static SALOMEDS::SObject_ptr publish(SALOMEDS::Study_ptr theStudy, pm->SetPixMap( thePixMap ); } -// if ( !theSelectable ) { -// anAttr = aStudyBuilder->FindOrCreateAttribute( SO, "AttributeSelectable" ); -// SALOMEDS::AttributeSelectable::_narrow( anAttr )->SetSelectable( false ); -// } return SO._retn(); } @@ -304,139 +120,27 @@ std::string HEXABLOCK_Gen_i::SetName( SALOMEDS::SObject_ptr theSObject, const char* theDefaultName ) { std::string attrName; - if ( !theSObject->_is_nil() ) { - SALOMEDS::StudyBuilder_var aStudyBuilder = theSObject->GetStudy()->NewBuilder(); - SALOMEDS::GenericAttribute_var anAttr = + if (theSObject->_is_nil() ) + return attrName; + + SALOMEDS::StudyBuilder_var aStudyBuilder = theSObject->GetStudy()->NewBuilder(); + SALOMEDS::GenericAttribute_var anAttr = aStudyBuilder->FindOrCreateAttribute( theSObject, "AttributeName" ); - SALOMEDS::AttributeName_var aNameAttr = SALOMEDS::AttributeName::_narrow( anAttr ); + SALOMEDS::AttributeName_var aNameAttr = SALOMEDS::AttributeName::_narrow( anAttr ); if ( theName && strlen( theName ) != 0 ) -// aNameAttr->SetValue( theName ); attrName = theName; else { CORBA::String_var curName = CORBA::string_dup( aNameAttr->Value() ); if ( strlen( curName ) == 0 ) { TCollection_AsciiString aName( (char*) theDefaultName ); - aName += TCollection_AsciiString("_") + TCollection_AsciiString( theSObject->Tag() ); attrName = aName.ToCString(); -// aNameAttr->SetValue( aName.ToCString() ); } } - aNameAttr->SetValue( attrName.c_str() ); - } + + aNameAttr->SetValue( attrName.c_str() ); return attrName; } -//======================================================================= -//function : SetPixMap -//purpose : -//======================================================================= -// void SMESH_Gen_i::SetPixMap(SALOMEDS::SObject_ptr theSObject, -// const char* thePixMap) -// { -// if ( !theSObject->_is_nil() && thePixMap && strlen( thePixMap )) -// { -// SALOMEDS::Study_var aStudy = theSObject->GetStudy(); -// SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder(); -// SALOMEDS::GenericAttribute_var anAttr = -// aStudyBuilder->FindOrCreateAttribute( theSObject, "AttributePixMap" ); -// SALOMEDS::AttributePixMap_var aPMAttr = SALOMEDS::AttributePixMap::_narrow( anAttr ); -// aPMAttr->SetPixMap( thePixMap ); -// } -// } - -//======================================================================= -//function : addReference -//purpose : -//======================================================================= - -// static void addReference (SALOMEDS::Study_ptr theStudy, -// SALOMEDS::SObject_ptr theSObject, -// CORBA::Object_ptr theToObject, -// int theTag = 0) -// { -// SALOMEDS::SObject_var aToObjSO = SMESH_Gen_i::ObjectToSObject( theStudy, theToObject ); -// if ( !aToObjSO->_is_nil() && !theSObject->_is_nil() ) { -// SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); -// SALOMEDS::SObject_var aReferenceSO; -// if ( !theTag ) { -// // check if the reference to theToObject already exists -// // and find a free label for the reference object -// bool isReferred = false; -// int tag = 1; -// SALOMEDS::ChildIterator_var anIter = theStudy->NewChildIterator( theSObject ); -// for ( ; !isReferred && anIter->More(); anIter->Next(), ++tag ) { -// if ( anIter->Value()->ReferencedObject( aReferenceSO )) { -// if ( strcmp( aReferenceSO->GetID(), aToObjSO->GetID() ) == 0 ) -// isReferred = true; -// } -// else if ( !theTag ) { -// SALOMEDS::GenericAttribute_var anAttr; -// if ( !anIter->Value()->FindAttribute( anAttr, "AttributeIOR" )) -// theTag = tag; -// } -// } -// if ( isReferred ) -// return; -// if ( !theTag ) -// theTag = tag; -// } -// if ( !theSObject->FindSubObject( theTag, aReferenceSO )) -// aReferenceSO = aStudyBuilder->NewObjectToTag( theSObject, theTag ); -// aStudyBuilder->Addreference( aReferenceSO, aToObjSO ); -// } -// } - -//============================================================================= -/*! - * SMESH_Gen_i::PublishInStudy - * - * Publish object in the study - */ -//============================================================================= - -// SALOMEDS::SObject_ptr HEXABLOCK_Gen_i::PublishInStudy( SALOMEDS::Study_ptr theStudy, -// SALOMEDS::SObject_ptr theSObject, -// CORBA::Object_ptr theIOR, -// const char* theName ) -// throw (SALOME::SALOME_Exception) -// { -// Unexpect aCatch(SALOME_SalomeException); -// SALOMEDS::SObject_var aSO; -// if ( CORBA::is_nil( theStudy ) || CORBA::is_nil( theIOR )) -// return aSO._retn(); -// if(MYDEBUG) MESSAGE("PublishInStudy"); -// -// // Publishing a mesh -// // SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( theIOR ); -// HEXABLOCK_Gen_i::Document_var aDoc = HEXABLOCK_Gen_i::Document::_narrow( theIOR ); -// if( !aDoc->_is_nil() ) -// aSO = PublishDoc( theStudy, aDoc, theName ); -// -// // // Publishing a sub-mesh -// // SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow( theIOR ); -// // if( aSO->_is_nil() && !aSubMesh->_is_nil() ) { -// // GEOM::GEOM_Object_var aShapeObject = aSubMesh->GetSubShape(); -// // aMesh = aSubMesh->GetFather(); -// // aSO = PublishSubMesh( theStudy, aMesh, aSubMesh, aShapeObject, theName ); -// // } -// // -// // // Publishing a hypothesis or algorithm -// // SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( theIOR ); -// // if ( aSO->_is_nil() && !aHyp->_is_nil() ) -// // aSO = PublishHypothesis( theStudy, aHyp ); -// // -// // // Publishing a group -// // SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(theIOR); -// // if ( aSO->_is_nil() && !aGroup->_is_nil() ) { -// // GEOM::GEOM_Object_var aShapeObject; -// // aMesh = aGroup->GetMesh(); -// // aSO = PublishGroup( theStudy, aMesh, aGroup, aShapeObject, theName ); -// // } -// if(MYDEBUG) MESSAGE("PublishInStudy_END"); -// -// return aSO._retn(); -// } - // ======================================================================= // function : PublishComponent // purpose : @@ -445,24 +149,20 @@ SALOMEDS::SComponent_ptr HEXABLOCK_Gen_i::PublishComponent(SALOMEDS::Study_ptr t { if ( CORBA::is_nil( theStudy )) return SALOMEDS::SComponent::_nil(); - if(MYDEBUG) MESSAGE("PublishComponent"); SALOMEDS::SComponent_var father = SALOMEDS::SComponent::_narrow( theStudy->FindComponent( ComponentDataType() ) ); if ( !CORBA::is_nil( father ) ) return father._retn(); - MESSAGE("AAAAAAAAAAA"); SALOME_ModuleCatalog::ModuleCatalog_var aCat = SALOME_ModuleCatalog::ModuleCatalog::_narrow( GetNS()->Resolve("/Kernel/ModulCatalog") ); if ( CORBA::is_nil( aCat ) ) return father._retn(); - MESSAGE("BBBBBBBBBBB"); SALOME_ModuleCatalog::Acomponent_var aComp = aCat->GetComponent( ComponentDataType() ); if ( CORBA::is_nil( aComp ) ) return father._retn(); - MESSAGE("CCCCCCCCCCC"); SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); SALOMEDS::GenericAttribute_var anAttr; @@ -470,16 +170,12 @@ SALOMEDS::SComponent_ptr HEXABLOCK_Gen_i::PublishComponent(SALOMEDS::Study_ptr t father = aStudyBuilder->NewComponent( ComponentDataType() ); aStudyBuilder->DefineComponentInstance( father, HEXABLOCK_Gen_i::_this() ); -// aStudyBuilder->DefineComponentInstance( father, _orb->object_to_string( HEXABLOCK_Gen_i::_this() ) ); -// MESSAGE("PublishComponent-- _orb->object_to_string( this ) =>"<< _orb->object_to_string( this ) ); - MESSAGE("PublishComponent-- HEXABLOCK_Gen_i::_this() =>"<< HEXABLOCK_Gen_i::_this() ); anAttr = aStudyBuilder->FindOrCreateAttribute( father, "AttributePixMap" ); aPixmap = SALOMEDS::AttributePixMap::_narrow( anAttr ); aPixmap ->SetPixMap( "ICON_OBJBROWSER_HEXABLOCK" ); SetName( father, aComp->componentusername(), "HEXABLOCK" ); - if(MYDEBUG) MESSAGE("PublishComponent--END"); return father._retn(); } @@ -521,173 +217,6 @@ SALOMEDS::SComponent_ptr HEXABLOCK_Gen_i::PublishComponent(SALOMEDS::Study_ptr t - - - - - - - - - - - - - - -// SALOMEDS::SObject_ptr GEOM_Gen_i::PublishInStudy(SALOMEDS::Study_ptr theStudy, -// SALOMEDS::SObject_ptr theSObject, -// CORBA::Object_ptr theObject, -// const char* theName) throw (SALOME::SALOME_Exception) -// { -// Unexpect aCatch(SALOME_SalomeException); -// SALOMEDS::SObject_var aResultSO; -// if(CORBA::is_nil(theObject) || theStudy->_is_nil()) return aResultSO; -// -// -// GEOM::GEOM_Object_var aShape = GEOM::GEOM_Object::_narrow(theObject); -// if(aShape->_is_nil()) return aResultSO; -// -// SALOMEDS::GenericAttribute_var anAttr; -// SALOMEDS::StudyBuilder_var aStudyBuilder = theStudy->NewBuilder(); -// -// SALOMEDS::SComponent_var aFather = theStudy->FindComponent("GEOM"); -// if (aFather->_is_nil()) { -// aFather = aStudyBuilder->NewComponent("GEOM"); -// anAttr = aStudyBuilder->FindOrCreateAttribute(aFather, "AttributeName"); -// SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr); -// aName->SetValue("Geometry"); -// aName->UnRegister(); -// anAttr = aStudyBuilder->FindOrCreateAttribute(aFather, "AttributePixMap"); -// SALOMEDS::AttributePixMap_var aPixMap=SALOMEDS::AttributePixMap::_narrow(anAttr); -// aPixMap->SetPixMap("ICON_OBJBROWSER_Geometry"); -// aPixMap->UnRegister(); -// aStudyBuilder->DefineComponentInstance(aFather, (GEOM::GEOM_Gen_var)GEOM_Gen::_this()); -// } -// if (aFather->_is_nil()) return aResultSO; -// -// if (CORBA::is_nil(theSObject)) { -// aResultSO = aStudyBuilder->NewObject(aFather); -// } else { -// if (!theSObject->ReferencedObject(aResultSO)) -// aResultSO = SALOMEDS::SObject::_duplicate(theSObject); //SRN: Added Aug 24,2004 : for the method AddInStudy with theFather argumenet != NULL -// //THROW_SALOME_CORBA_EXCEPTION("Publish in study supervision graph error",SALOME::BAD_PARAM); -// } -// CORBA::String_var aGeomObjIOR = _orb->object_to_string(theObject); -// aResultSO->SetAttrString("AttributeIOR",aGeomObjIOR); -// -// TCollection_AsciiString aShapeName("Shape_"); -// -// CORBA::Long mytype=aShape->GetType(); -// if ( mytype == GEOM_GROUP ) { -// GEOM::GEOM_IGroupOperations_var anOp = GetIGroupOperations( theStudy->StudyId() ); -// switch ( (TopAbs_ShapeEnum)anOp->GetType( aShape ) ) { -// case TopAbs_VERTEX: -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_PNT" ); -// aShapeName = "Group_Of_Vertices_"; -// break; -// case TopAbs_EDGE: -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_EDGE"); -// aShapeName = "Group_Of_Edges_"; -// break; -// case TopAbs_FACE: -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_FACE"); -// aShapeName = "Group_Of_Faces_"; -// break; -// case TopAbs_SOLID: -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_GROUP_SOLID"); -// aShapeName = "Group_Of_Solids_"; -// break; -// } -// } else if ( mytype == GEOM_MARKER ) { -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_LCS"); -// aShapeName = "LocalCS_"; -// } else if ( mytype > ADVANCED_BASE ) { -// char buf[20]; -// sprintf( buf, "%d", aShape->GetType() ); -// std::string advId = "ICON_OBJBROWSER_ADVANCED_"; advId += buf; -// aResultSO->SetAttrString("AttributePixMap",advId.c_str()); -// aShapeName = "Advanced_"; -// } else { -// GEOM::shape_type myshapetype=aShape->GetShapeType(); -// if ( myshapetype == GEOM::COMPOUND ) { -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_COMPOUND" ); -// aShapeName = "Compound_"; -// } else if ( myshapetype == GEOM::COMPSOLID ) { -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_COMPSOLID"); -// aShapeName = "Compsolid_"; -// } else if ( myshapetype == GEOM::SOLID ) { -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_SOLID"); -// aShapeName = "Solid_"; -// } else if ( myshapetype == GEOM::SHELL ) { -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_SHELL"); -// aShapeName = "Shell_"; -// } else if ( myshapetype == GEOM::FACE ) { -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_FACE"); -// aShapeName = "Face_"; -// } else if ( myshapetype == GEOM::WIRE ) { -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_WIRE"); -// aShapeName = "Wire_"; -// } else if ( myshapetype == GEOM::EDGE ) { -// aResultSO->SetAttrString("AttributePixMap", "ICON_OBJBROWSER_EDGE"); -// aShapeName = "Edge_"; -// } else if ( myshapetype == GEOM::VERTEX ) { -// aResultSO->SetAttrString("AttributePixMap","ICON_OBJBROWSER_VERTEX" ); -// aShapeName = "Vertex_"; -// } -// } -// //if (strlen(theName) == 0) aShapeName += TCollection_AsciiString(aResultSO->Tag()); -// //else aShapeName = TCollection_AsciiString(CORBA::string_dup(theName)); -// -// // BEGIN: try to find existed name for current shape -// bool HasName = false; -// // recieve current TopoDS shape -// CORBA::String_var entry = aShape->GetEntry(); -// Handle(GEOM_Object) aGShape = _impl->GetObject(aShape->GetStudyID(), entry); -// TopoDS_Shape TopoSh = aGShape->GetValue(); -// // find label of main shape -// GEOM::GEOM_Object_var aMainSh = aShape; -// while( !aMainSh->IsMainShape() ) { -// aMainSh = aMainSh->GetMainShape(); -// } -// entry = aMainSh->GetEntry(); -// Handle(GEOM_Object) anObj = _impl->GetObject(aMainSh->GetStudyID(), entry); -// TDF_Label aMainLbl = anObj->GetFunction(1)->GetNamingEntry(); -// -// // check all named shapes using iterator -// TDF_ChildIDIterator anIt (aMainLbl, TNaming_NamedShape::GetID(), Standard_True); -// -// for (; anIt.More() && !HasName; anIt.Next()) { -// Handle(TNaming_NamedShape) anAttr = -// Handle(TNaming_NamedShape)::DownCast(anIt.Value()); -// if (anAttr.IsNull()) continue; -// TopoDS_Shape S = anAttr->Get(); -// if (S.IsEqual(TopoSh)) { -// TDF_Label L = anAttr->Label(); -// Handle(TDataStd_Name) aName; -// if (L.FindAttribute(TDataStd_Name::GetID(), aName)) { -// aShapeName = aName->Get(); -// HasName = true; -// } -// } -// } -// // END: try to find existed name for current shape -// -// -// aResultSO->SetAttrString("AttributeString",aVars.ToCString()); -// -// aFather->UnRegister(); -// -// //Set a name of the GEOM object -// aShape->SetName(aShapeName.ToCString()); -// -// return aResultSO._retn(); -// } - - - - - //============================================================================= /*! * findMaxChildTag [ static internal ] @@ -724,7 +253,6 @@ SALOMEDS::SObject_ptr HEXABLOCK_Gen_i::PublishDoc ( SALOMEDS::Study_ptr theS if ( CORBA::is_nil( theStudy ) || CORBA::is_nil( theDoc )) return SALOMEDS::SComponent::_nil(); - if(MYDEBUG) MESSAGE("PublishMesh--IN"); // find or publish a mesh @@ -737,532 +265,16 @@ SALOMEDS::SObject_ptr HEXABLOCK_Gen_i::PublishDoc ( SALOMEDS::Study_ptr theS // Find correct free tag long aTag = findMaxChildTag( father.in() ); -// if ( aTag <= GetAlgorithmsRootTag() ) -// aTag = GetAlgorithmsRootTag() + 1; -// else -// aTag++; aTag++; - aDocSO = publish (theStudy, theDoc, father, aTag);//, "ICON_DOC_TREE_MESH_WARN" ); + aDocSO = publish (theStudy, theDoc, father, aTag); if ( aDocSO->_is_nil() ) return aDocSO._retn(); } std::string docName = SetName( aDocSO, theName, theDoc->getName()); // Bph - // theDoc->setName( docName.c_str() ); // Abu // Add shape reference -// GEOM::GEOM_Object_var aShapeObject = theMesh->GetShapeToMesh(); -// if ( !CORBA::is_nil( aShapeObject )) { -// addReference( theStudy, aMeshSO, aShapeObject, GetRefOnShapeTag() ); -// -// // Publish global hypotheses -// -// SMESH::ListOfHypothesis_var hypList = theMesh->GetHypothesisList( aShapeObject ); -// for ( int i = 0; i < hypList->length(); i++ ) { -// SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( hypList[ i ]); -// PublishHypothesis( theStudy, aHyp ); -// AddHypothesisToShape( theStudy, theMesh, aShapeObject, aHyp ); -// } -// } -// -// // Publish submeshes -// -// SMESH_Mesh_i* mesh_i = objectToServant( theMesh ); -// if ( !mesh_i ) -// return aMeshSO._retn(); -// map& subMap = mesh_i->_mapSubMesh_i; -// map::iterator subIt = subMap.begin(); -// for ( ; subIt != subMap.end(); subIt++ ) { -// SMESH::SMESH_subMesh_ptr aSubMesh = (*subIt).second->_this(); -// if ( !CORBA::is_nil( aSubMesh )) { -// aShapeObject = aSubMesh->GetSubShape(); -// PublishSubMesh( theStudy, theMesh, aSubMesh, aShapeObject ); -// } -// } -// -// // Publish groups -// const map& grMap = mesh_i->getGroups(); -// map::const_iterator it = grMap.begin(); -// for ( ; it != grMap.end(); it++ ) -// { -// SMESH::SMESH_GroupBase_ptr aGroup = (*it).second; -// if ( !aGroup->_is_nil() ) { -// GEOM::GEOM_Object_var aShapeObj; -// SMESH::SMESH_GroupOnGeom_var aGeomGroup = -// SMESH::SMESH_GroupOnGeom::_narrow( aGroup ); -// if ( !aGeomGroup->_is_nil() ) -// aShapeObj = aGeomGroup->GetShape(); -// PublishGroup( theStudy, theMesh, aGroup, aShapeObj ); -// } -// } - if(MYDEBUG) MESSAGE("PublishDoc_END"); return aDocSO._retn(); } -//======================================================================= -//function : PublishSubMesh -//purpose : -//======================================================================= - -// SALOMEDS::SObject_ptr SMESH_Gen_i::PublishSubMesh (SALOMEDS::Study_ptr theStudy, -// SMESH::SMESH_Mesh_ptr theMesh, -// SMESH::SMESH_subMesh_ptr theSubMesh, -// GEOM::GEOM_Object_ptr theShapeObject, -// const char* theName) -// { -// if (theStudy->_is_nil() || theMesh->_is_nil() || -// theSubMesh->_is_nil() || theShapeObject->_is_nil() ) -// return SALOMEDS::SObject::_nil(); -// -// SALOMEDS::SObject_var aSubMeshSO = ObjectToSObject( theStudy, theSubMesh ); -// if ( aSubMeshSO->_is_nil() ) -// { -// SALOMEDS::SObject_var aMeshSO = ObjectToSObject( theStudy, theMesh ); -// if ( aMeshSO->_is_nil() ) { -// aMeshSO = PublishMesh( theStudy, theMesh ); -// if ( aMeshSO->_is_nil()) -// return SALOMEDS::SObject::_nil(); -// } -// // Find submesh sub-tree tag -// long aRootTag; -// const char* aRootName = ""; -// switch ( theShapeObject->GetShapeType() ) { -// case GEOM::VERTEX: -// aRootTag = GetSubMeshOnVertexTag(); -// aRootName = "SubMeshes on Vertex"; -// break; -// case GEOM::EDGE: -// aRootTag = GetSubMeshOnEdgeTag(); -// aRootName = "SubMeshes on Edge"; -// break; -// case GEOM::WIRE: -// aRootTag = GetSubMeshOnWireTag(); -// aRootName = "SubMeshes on Wire"; -// break; -// case GEOM::FACE: -// aRootTag = GetSubMeshOnFaceTag(); -// aRootName = "SubMeshes on Face"; -// break; -// case GEOM::SHELL: -// aRootTag = GetSubMeshOnShellTag(); -// aRootName = "SubMeshes on Shell"; -// break; -// case GEOM::SOLID: -// aRootTag = GetSubMeshOnSolidTag(); -// aRootName = "SubMeshes on Solid"; -// break; -// default: -// aRootTag = GetSubMeshOnCompoundTag(); -// aRootName = "SubMeshes on Compound"; -// break; -// } -// -// // Find or create submesh root -// SALOMEDS::SObject_var aRootSO = publish (theStudy, CORBA::Object::_nil(), -// aMeshSO, aRootTag, 0, false ); -// SetName( aRootSO, aRootName ); -// -// // Add new submesh to corresponding sub-tree -// aSubMeshSO = publish (theStudy, theSubMesh, aRootSO, 0, "ICON_SMESH_TREE_MESH_WARN"); -// if ( aSubMeshSO->_is_nil() ) -// return aSubMeshSO._retn(); -// } -// SetName( aSubMeshSO, theName, "SubMesh" ); -// -// // Add reference to theShapeObject -// -// addReference( theStudy, aSubMeshSO, theShapeObject, 1 ); -// -// // Publish hypothesis -// -// SMESH::ListOfHypothesis * hypList = theMesh->GetHypothesisList( theShapeObject ); -// if ( hypList ) -// for ( int i = 0; i < hypList->length(); i++ ) { -// SMESH::SMESH_Hypothesis_var aHyp = SMESH::SMESH_Hypothesis::_narrow( (*hypList)[ i ]); -// PublishHypothesis( theStudy, aHyp ); -// AddHypothesisToShape( theStudy, theMesh, theShapeObject, aHyp ); -// } -// -// return aSubMeshSO._retn(); -// } - -//======================================================================= -//function : PublishGroup -//purpose : -//======================================================================= - -// SALOMEDS::SObject_ptr SMESH_Gen_i::PublishGroup (SALOMEDS::Study_ptr theStudy, -// SMESH::SMESH_Mesh_ptr theMesh, -// SMESH::SMESH_GroupBase_ptr theGroup, -// GEOM::GEOM_Object_ptr theShapeObject, -// const char* theName) -// { -// if (theStudy->_is_nil() || theMesh->_is_nil() || theGroup->_is_nil() ) -// return SALOMEDS::SObject::_nil(); -// -// SALOMEDS::SObject_var aGroupSO = ObjectToSObject( theStudy, theGroup ); -// if ( aGroupSO->_is_nil() ) -// { -// SALOMEDS::SObject_var aMeshSO = ObjectToSObject( theStudy, theMesh ); -// if ( aMeshSO->_is_nil() ) { -// aMeshSO = PublishInStudy( theStudy, SALOMEDS::SObject::_nil(), theMesh, ""); -// if ( aMeshSO->_is_nil()) -// return SALOMEDS::SObject::_nil(); -// } -// int aType = (int)theGroup->GetType(); -// const char* aRootNames[] = { -// "Compound Groups", "Groups of Nodes", "Groups of Edges", -// "Groups of Faces", "Groups of Volumes", "Groups of 0D Elements" }; -// -// // Currently, groups with heterogenous content are not supported -// if ( aType != SMESH::ALL ) { -// long aRootTag = GetNodeGroupsTag() + aType - 1; -// -// // Find or create groups root -// SALOMEDS::SObject_var aRootSO = publish (theStudy, CORBA::Object::_nil(), -// aMeshSO, aRootTag, 0, false ); -// if ( aType < 6 ) -// SetName( aRootSO, aRootNames[aType] ); -// -// // Add new group to corresponding sub-tree -// aGroupSO = publish (theStudy, theGroup, aRootSO, 0, "ICON_SMESH_TREE_GROUP" ); -// } -// if ( aGroupSO->_is_nil() ) -// return aGroupSO._retn(); -// } -// -// SetName( aGroupSO, theName, "Group" ); -// -// //Add reference to geometry -// if ( !theShapeObject->_is_nil() ) -// addReference( theStudy, aGroupSO, theShapeObject, 1 ); -// -// return aGroupSO._retn(); -// } - -//======================================================================= -//function : PublishHypothesis -//purpose : -//======================================================================= - -// SALOMEDS::SObject_ptr -// SMESH_Gen_i::PublishHypothesis (SALOMEDS::Study_ptr theStudy, -// SMESH::SMESH_Hypothesis_ptr theHyp, -// const char* theName) -// { -// if(MYDEBUG) MESSAGE("PublishHypothesis") -// if (theStudy->_is_nil() || theHyp->_is_nil()) -// return SALOMEDS::SObject::_nil(); -// -// SALOMEDS::SObject_var aHypSO = ObjectToSObject( theStudy, theHyp ); -// if ( aHypSO->_is_nil() ) -// { -// SALOMEDS::SComponent_var father = PublishComponent( theStudy ); -// if ( father->_is_nil() ) -// return aHypSO._retn(); -// -// //Find or Create Hypothesis root -// bool isAlgo = ( !SMESH::SMESH_Algo::_narrow( theHyp )->_is_nil() ); -// int aRootTag = isAlgo ? GetAlgorithmsRootTag() : GetHypothesisRootTag(); -// SALOMEDS::SObject_var aRootSO = -// publish (theStudy, CORBA::Object::_nil(),father, aRootTag, -// isAlgo ? "ICON_SMESH_TREE_ALGO" : "ICON_SMESH_TREE_HYPO", false); -// SetName( aRootSO, isAlgo ? "Algorithms" : "Hypotheses" ); -// -// // Add New Hypothesis -// string aPmName = isAlgo ? "ICON_SMESH_TREE_ALGO_" : "ICON_SMESH_TREE_HYPO_"; -// aPmName += theHyp->GetName(); -// // prepend plugin name to pixmap name -// string pluginName = myHypCreatorMap[string(theHyp->GetName())]->GetModuleName(); -// if ( pluginName != "StdMeshers" ) -// aPmName = pluginName + "::" + aPmName; -// aHypSO = publish( theStudy, theHyp, aRootSO, 0, aPmName.c_str() ); -// } -// -// if ( !aHypSO->_is_nil() ) { -// CORBA::String_var aHypName = CORBA::string_dup( theHyp->GetName() ); -// SetName( aHypSO, theName, aHypName ); -// } -// -// if(MYDEBUG) MESSAGE("PublishHypothesis--END") -// return aHypSO._retn(); -// } - -//======================================================================= -//function : GetMeshOrSubmeshByShape -//purpose : -//======================================================================= - -// SALOMEDS::SObject_ptr -// SMESH_Gen_i::GetMeshOrSubmeshByShape (SALOMEDS::Study_ptr theStudy, -// SMESH::SMESH_Mesh_ptr theMesh, -// GEOM::GEOM_Object_ptr theShape) -// { -// if(MYDEBUG) MESSAGE("GetMeshOrSubmeshByShape") -// SALOMEDS::SObject_var aMeshOrSubMesh; -// if (theMesh->_is_nil() || ( theShape->_is_nil() && theMesh->HasShapeToMesh())) -// return aMeshOrSubMesh._retn(); -// -// TopoDS_Shape aShape; -// if(theMesh->HasShapeToMesh()) -// aShape = GeomObjectToShape( theShape ); -// else -// aShape = SMESH_Mesh::PseudoShape(); -// -// SMESH_Mesh_i* mesh_i = objectToServant( theMesh ); -// -// if ( !aShape.IsNull() && mesh_i && mesh_i->GetImpl().GetMeshDS() ) { -// SMESHDS_Mesh* meshDS = mesh_i->GetImpl().GetMeshDS(); -// if ( aShape.IsSame( meshDS->ShapeToMesh() )) -// aMeshOrSubMesh = ObjectToSObject( theStudy, theMesh ); -// else { -// int shapeID = meshDS->ShapeToIndex( aShape ); -// SMESH::SMESH_subMesh_var aSubMesh = mesh_i->getSubMesh(shapeID); -// if ( !aSubMesh->_is_nil() ) -// aMeshOrSubMesh = ObjectToSObject( theStudy, aSubMesh ); -// } -// } -// if(MYDEBUG) MESSAGE("GetMeshOrSubmeshByShape--END") -// return aMeshOrSubMesh._retn(); -// } - -//======================================================================= -//function : AddHypothesisToShape -//purpose : -//======================================================================= - -// bool SMESH_Gen_i::AddHypothesisToShape(SALOMEDS::Study_ptr theStudy, -// SMESH::SMESH_Mesh_ptr theMesh, -// GEOM::GEOM_Object_ptr theShape, -// SMESH::SMESH_Hypothesis_ptr theHyp) -// { -// if(MYDEBUG) MESSAGE("AddHypothesisToShape") -// if (theStudy->_is_nil() || theMesh->_is_nil() || -// theHyp->_is_nil() || (theShape->_is_nil() -// && theMesh->HasShapeToMesh()) ) -// return false; -// -// SALOMEDS::SObject_var aMeshSO = ObjectToSObject( theStudy, theMesh ); -// if ( aMeshSO->_is_nil() ) -// aMeshSO = PublishMesh( theStudy, theMesh ); -// SALOMEDS::SObject_var aHypSO = PublishHypothesis( theStudy, theHyp ); -// if ( aMeshSO->_is_nil() || aHypSO->_is_nil()) -// return false; -// -// // Find a mesh or submesh refering to theShape -// SALOMEDS::SObject_var aMeshOrSubMesh = -// GetMeshOrSubmeshByShape( theStudy, theMesh, theShape ); -// if ( aMeshOrSubMesh->_is_nil() ) -// { -// // publish submesh -// TopoDS_Shape aShape = GeomObjectToShape( theShape ); -// SMESH_Mesh_i* mesh_i = objectToServant( theMesh ); -// if ( !aShape.IsNull() && mesh_i && mesh_i->GetImpl().GetMeshDS() ) { -// SMESHDS_Mesh* meshDS = mesh_i->GetImpl().GetMeshDS(); -// int shapeID = meshDS->ShapeToIndex( aShape ); -// SMESH::SMESH_subMesh_var aSubMesh = mesh_i->getSubMesh(shapeID); -// aMeshOrSubMesh = PublishSubMesh( theStudy, theMesh, aSubMesh, theShape ); -// } -// if ( aMeshOrSubMesh->_is_nil() ) -// return false; -// } -// -// //Find or Create Applied Hypothesis root -// bool aIsAlgo = !SMESH::SMESH_Algo::_narrow( theHyp )->_is_nil(); -// SALOMEDS::SObject_var AHR = -// publish (theStudy, CORBA::Object::_nil(), aMeshOrSubMesh, -// aIsAlgo ? GetRefOnAppliedAlgorithmsTag() : GetRefOnAppliedHypothesisTag(), -// aIsAlgo ? "ICON_SMESH_TREE_ALGO" : "ICON_SMESH_TREE_HYPO", false); -// SetName( AHR, aIsAlgo ? "Applied algorithms" : "Applied hypotheses" ); -// if ( AHR->_is_nil() ) -// return false; -// -// addReference( theStudy, AHR, theHyp ); -// if(MYDEBUG) MESSAGE("AddHypothesisToShape--END") -// return true; -// } - -//======================================================================= -//function : RemoveHypothesisFromShape -//purpose : -//======================================================================= - -// bool SMESH_Gen_i::RemoveHypothesisFromShape(SALOMEDS::Study_ptr theStudy, -// SMESH::SMESH_Mesh_ptr theMesh, -// GEOM::GEOM_Object_ptr theShape, -// SMESH::SMESH_Hypothesis_ptr theHyp) -// { -// if (theStudy->_is_nil() || theMesh->_is_nil() || -// theHyp->_is_nil() || (theShape->_is_nil() -// && theMesh->HasShapeToMesh())) -// return false; -// -// SALOMEDS::SObject_var aHypSO = ObjectToSObject( theStudy, theHyp ); -// if ( aHypSO->_is_nil() ) -// return false; -// -// // Find a mesh or submesh refering to theShape -// SALOMEDS::SObject_var aMeshOrSubMesh = -// GetMeshOrSubmeshByShape( theStudy, theMesh, theShape ); -// if ( aMeshOrSubMesh->_is_nil() ) -// return false; -// -// // Find and remove a reference to aHypSO -// SALOMEDS::SObject_var aRef, anObj; -// CORBA::String_var anID = CORBA::string_dup( aHypSO->GetID() ); -// SALOMEDS::ChildIterator_var it = theStudy->NewChildIterator( aMeshOrSubMesh ); -// for ( it->InitEx( true ); it->More(); it->Next() ) { -// anObj = it->Value(); -// if (anObj->ReferencedObject( aRef ) && strcmp( aRef->GetID(), anID ) == 0 ) { -// theStudy->NewBuilder()->RemoveObject( anObj ); -// break; -// } -// } -// return true; -// } - -//======================================================================= -//function : UpdateParameters -//purpose : -//======================================================================= -// void SMESH_Gen_i::UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters) -// { -// -// if(VARIABLE_DEBUG) -// cout<<"UpdateParameters : "<_is_nil() || CORBA::is_nil(theObject)) -// return; -// -// SALOMEDS::SObject_var aSObj = ObjectToSObject(aStudy,theObject); -// if(aSObj->_is_nil()) -// return; -// -// SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder(); -// -// SALOMEDS::GenericAttribute_var aFindAttr; -// bool hasAttr = aSObj->FindAttribute(aFindAttr, "AttributeString"); -// if(VARIABLE_DEBUG) -// cout<<"Find Attribute "<FindOrCreateAttribute( aSObj, "AttributeString"); -// SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr); -// -// CORBA::String_var oldparVar = aStringAttr->Value(); -// CORBA::String_var inpparVar = ParseParameters(theParameters); -// TCollection_AsciiString aNewParams; -// TCollection_AsciiString aOldParameters(oldparVar.inout()); -// TCollection_AsciiString anInputParams(inpparVar.inout()); -// if(!hasAttr) -// aNewParams = anInputParams; -// else -// { -// int pos = aOldParameters.SearchFromEnd("|"); -// if(pos==-1) pos = 0; -// TCollection_AsciiString previousParamFull(aOldParameters.Split(pos)); -// TCollection_AsciiString previousParam(previousParamFull); -// TCollection_AsciiString theRepet("1"); -// pos = previousParam.SearchFromEnd(";*="); -// if(pos >= 0) -// { -// theRepet = previousParam.Split(pos+2); -// pos = pos-1; -// if(pos==-1) pos = 0; -// previousParam.Split(pos); -// } -// if(previousParam == anInputParams) -// { -// theRepet = theRepet.IntegerValue()+1; -// aNewParams = aOldParameters + previousParam + ";*=" + theRepet; -// } -// else -// { -// aNewParams = aOldParameters + previousParamFull + "|" + anInputParams; -// } -// } -// -// if(VARIABLE_DEBUG) -// { -// cout<<"Input Parameters : "<SetValue( aNewParams.ToCString() ); -// } - -//======================================================================= -//function : ParseParameters -//purpose : -//======================================================================= -// char* SMESH_Gen_i::ParseParameters(const char* theParameters) -// { -// //const char* aParameters = theParameters; -// // const char* aParameters = CORBA::string_dup(theParameters); -// TCollection_AsciiString anInputParams; -// SALOMEDS::Study_var aStudy = GetCurrentStudy(); -// if( !aStudy->_is_nil() ) { -// // SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(theParameters); -// // for(int j=0;jlength();j++) { -// // SALOMEDS::ListOfStrings aVars= aSections[j]; -// // for(int i=0;iIsVariable(aVars[i].in()) ? -// // TCollection_AsciiString(aVars[i].in()) : TCollection_AsciiString(""); -// // if(i != aVars.length()-1) -// // anInputParams+=":"; -// // } -// // if(j!=aSections->length()-1) -// // anInputParams+="|"; -// // } -// TCollection_AsciiString paramStr( theParameters ); -// static TCollection_AsciiString separators(":|"); -// int beg = 0, end; -// char sep, *pParams = (char*)paramStr.ToCString(); -// while ( beg < paramStr.Length() ) -// { -// end = beg-1; -// while ( ++end < paramStr.Length() ) -// if ( pParams[end] == ':' || pParams[end] == '|') -// break; -// if ( end < paramStr.Length()) -// { -// sep = pParams[end]; -// pParams[end] = '\0'; -// } -// if ( aStudy->IsVariable( pParams+beg )) -// anInputParams += pParams+beg; -// if ( end < paramStr.Length() ) -// anInputParams += sep; -// else -// break; -// beg = end + 1; -// } -// } -// return CORBA::string_dup(anInputParams.ToCString()); -// } - -//======================================================================= -//function : GetParameters -//purpose : -//======================================================================= -// char* SMESH_Gen_i::GetParameters(CORBA::Object_ptr theObject) -// { -// TCollection_AsciiString aResult; -// -// SALOMEDS::Study_ptr aStudy = GetCurrentStudy(); -// SALOMEDS::SObject_var aSObj = ObjectToSObject(aStudy,theObject); -// -// if(!aStudy->_is_nil() && -// !CORBA::is_nil(theObject) && -// !aSObj->_is_nil()){ -// -// SALOMEDS::GenericAttribute_var anAttr; -// if ( aSObj->FindAttribute(anAttr, "AttributeString")) { -// aResult = TCollection_AsciiString(SALOMEDS::AttributeString::_narrow(anAttr)->Value()); -// } -// } -// -// return CORBA::string_dup( aResult.ToCString() ); -// } diff --git a/src/HEXABLOCK_I/HexBiCylinder_impl.cxx b/src/HEXABLOCK_I/HexBiCylinder_impl.cxx new file mode 100755 index 0000000..d7cce2c --- /dev/null +++ b/src/HEXABLOCK_I/HexBiCylinder_impl.cxx @@ -0,0 +1,170 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +using namespace std; +#include "hexa_base.hxx" +#include "HexVertex_impl.hxx" +#include "HexEdge_impl.hxx" +#include "HexQuad_impl.hxx" +#include "HexHexa_impl.hxx" +#include "HexCylinder_impl.hxx" +#include "HexBiCylinder_impl.hxx" +#include "HEXABLOCK.hxx" + + +BiCylinder_impl::BiCylinder_impl( HEXA_NS::BiCylinder *ptrCpp ) +{ + bi_cylinder_cpp = ptrCpp; +} + + +HEXA_NS::BiCylinder* BiCylinder_impl::GetImpl() +{ + return bi_cylinder_cpp; +} + + +Vertex_ptr BiCylinder_impl::getVertexIJK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception) +{ + Vertex_ptr result = Vertex::_nil(); + HEXA_NS::Vertex* v = bi_cylinder_cpp->getVertexIJK(part, x, y, z); + if ( v != NULL ){ + Vertex_impl* servantCorba = new Vertex_impl(v); + result = servantCorba->_this(); + } + return result; +} + + +Edge_ptr BiCylinder_impl::getEdgeI(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception) +{ + Edge_ptr result = Edge::_nil(); + HEXA_NS::Edge* e = bi_cylinder_cpp->getEdgeI(part, x, y, z); + if ( e != NULL ){ + Edge_impl* servantCorba = new Edge_impl(e); + result = servantCorba->_this(); + } + return result; +} + + +Edge_ptr BiCylinder_impl::getEdgeJ(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception) +{ + Edge_ptr result = Edge::_nil(); + HEXA_NS::Edge* e = bi_cylinder_cpp->getEdgeJ(part, x, y, z); + if ( e != NULL ){ + Edge_impl* servantCorba = new Edge_impl(e); + result = servantCorba->_this(); + } + return result; +} + + +Edge_ptr BiCylinder_impl::getEdgeK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception) +{ + Edge_ptr result = Edge::_nil(); + HEXA_NS::Edge* e = bi_cylinder_cpp->getEdgeK(part, x, y, z); + if ( e != NULL ){ + Edge_impl* servantCorba = new Edge_impl(e); + result = servantCorba->_this(); + } + return result; +} + +Quad_ptr BiCylinder_impl::getQuadIJ(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception) +{ + Quad_ptr result = Quad::_nil(); + HEXA_NS::Quad* q = bi_cylinder_cpp->getQuadIJ(part, x, y, z); + if ( q != NULL ){ + Quad_impl* servantCorba = new Quad_impl(q); + result = servantCorba->_this(); + } + return result; +} + + +Quad_ptr BiCylinder_impl::getQuadIK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception) +{ + Quad_ptr result = Quad::_nil(); + HEXA_NS::Quad* q = bi_cylinder_cpp->getQuadIK(part, x, y, z); + if ( q != NULL ){ + Quad_impl* servantCorba = new Quad_impl(q); + result = servantCorba->_this(); + } + return result; +} + + +Quad_ptr BiCylinder_impl::getQuadJK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception) +{ + Quad_ptr result = Quad::_nil(); + HEXA_NS::Quad* q = bi_cylinder_cpp->getQuadJK(part, x, y, z); + if ( q != NULL ){ + Quad_impl* servantCorba = new Quad_impl(q); + result = servantCorba->_this(); + } + return result; +} + + +Hexa_ptr BiCylinder_impl::getHexaIJK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) throw (SALOME::SALOME_Exception) +{ + Hexa_ptr result = Hexa::_nil(); + HEXA_NS::Hexa* h = bi_cylinder_cpp->getHexaIJK(part, x, y, z); + if ( h != NULL ){ + Hexa_impl* servantCorba = new Hexa_impl(h); + result = servantCorba->_this(); + } + return result; +} +::CORBA::Long BiCylinder_impl::saveVtk(const char* fname) throw (SALOME::SALOME_Exception) +{ + ::CORBA::Long ret = bi_cylinder_cpp->saveVtk( fname ); + return ret; +} + +void BiCylinder_impl::dump() throw (SALOME::SALOME_Exception) +{ + bi_cylinder_cpp->dump(); +} + + +void BiCylinder_impl::printName() throw (SALOME::SALOME_Exception) +{ + bi_cylinder_cpp->printName(); +} + +char* BiCylinder_impl::getName() throw (SALOME::SALOME_Exception) +{ + return CORBA::string_dup( bi_cylinder_cpp->getName() ); +} + +// ========================================================= setName +void BiCylinder_impl::setName(const char* name) + throw (SALOME::SALOME_Exception) +{ + bi_cylinder_cpp->setName (name); +} + diff --git a/src/HEXABLOCK_I/HexBiCylinder_impl.hxx b/src/HEXABLOCK_I/HexBiCylinder_impl.hxx new file mode 100755 index 0000000..93e9e97 --- /dev/null +++ b/src/HEXABLOCK_I/HexBiCylinder_impl.hxx @@ -0,0 +1,68 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef __HexBiCylinder_impl__ +#define __HexBiCylinder_impl__ + +#include +#include CORBA_SERVER_HEADER(BiCylinder) +#include "SALOME_GenericObj_i.hh" + +#include "hexa_base.hxx" +#include "HexBiCylinder.hxx" + +using namespace HEXABLOCK_ORB; + +class BiCylinder_impl : public POA_HEXABLOCK_ORB::BiCylinder, + public SALOME::GenericObj_i +{ +public: + BiCylinder_impl(HEXA_NS::BiCylinder *ptrCpp); + HEXA_NS::BiCylinder* GetImpl(); + + Vertex_ptr getVertexIJK(::CORBA::Long part,::CORBA::Long x,::CORBA::Long y,::CORBA::Long z) + throw (SALOME::SALOME_Exception); + + Edge_ptr getEdgeI(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception); + Edge_ptr getEdgeJ(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception); + Edge_ptr getEdgeK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception); + + Quad_ptr getQuadIJ(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception); + Quad_ptr getQuadIK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception); + Quad_ptr getQuadJK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception); + + Hexa_ptr getHexaIJK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) + throw (SALOME::SALOME_Exception); + + ::CORBA::Long saveVtk(const char* fname) throw (SALOME::SALOME_Exception); + void dump() throw (SALOME::SALOME_Exception); + void printName() throw (SALOME::SALOME_Exception); + char* getName() throw (SALOME::SALOME_Exception); + void setName (const char* name) throw (SALOME::SALOME_Exception); + +private: + HEXA_NS::BiCylinder* bi_cylinder_cpp; +}; + +#endif diff --git a/src/HEXABLOCK_I/HexCrossElements_impl.cxx b/src/HEXABLOCK_I/HexCrossElements_impl.cxx index f89765c..4201313 100755 --- a/src/HEXABLOCK_I/HexCrossElements_impl.cxx +++ b/src/HEXABLOCK_I/HexCrossElements_impl.cxx @@ -139,36 +139,12 @@ Hexa_ptr CrossElements_impl::getHexaIJK(::CORBA::Long part, ::CORBA::Long x, ::C return result; } -::CORBA::Long CrossElements_impl::crossCylinders(Cylinder_ptr c1In, Cylinder_ptr c2In) -throw (SALOME::SALOME_Exception) -{ - ::CORBA::Long result; - Cylinder_impl* c1InServant = ::DownCast( c1In ); - Cylinder_impl* c2InServant = ::DownCast( c2In ); - - ASSERT( c1InServant ); - ASSERT( c2InServant ); - - if ( c1InServant && c2InServant ) { - HEXA_NS::Cylinder* c1 = c1InServant->GetImpl(); - HEXA_NS::Cylinder* c2 = c2InServant->GetImpl(); - - result = _crossElements_cpp->crossCylinders(c1,c2); - } - return result; - -} - - - ::CORBA::Long CrossElements_impl::saveVtk(const char* fname) throw (SALOME::SALOME_Exception) { ::CORBA::Long ret = _crossElements_cpp->saveVtk( fname ); return ret; } - - void CrossElements_impl::dump() throw (SALOME::SALOME_Exception) { _crossElements_cpp->dump(); diff --git a/src/HEXABLOCK_I/HexCrossElements_impl.hxx b/src/HEXABLOCK_I/HexCrossElements_impl.hxx index 87b9438..2f21a74 100755 --- a/src/HEXABLOCK_I/HexCrossElements_impl.hxx +++ b/src/HEXABLOCK_I/HexCrossElements_impl.hxx @@ -47,8 +47,6 @@ public: Hexa_ptr getHexaIJK(::CORBA::Long part, ::CORBA::Long x, ::CORBA::Long y, ::CORBA::Long z) throw (SALOME::SALOME_Exception); - ::CORBA::Long crossCylinders(Cylinder_ptr cyl1, Cylinder_ptr cyl2) throw (SALOME::SALOME_Exception); - ::CORBA::Long saveVtk(const char* fname) throw (SALOME::SALOME_Exception); void dump() throw (SALOME::SALOME_Exception); void printName() throw (SALOME::SALOME_Exception); diff --git a/src/HEXABLOCK_I/HexDocument_impl.cxx b/src/HEXABLOCK_I/HexDocument_impl.cxx index f9b5215..cc706ae 100755 --- a/src/HEXABLOCK_I/HexDocument_impl.cxx +++ b/src/HEXABLOCK_I/HexDocument_impl.cxx @@ -24,7 +24,7 @@ using namespace std; #include "HEXABLOCK.hxx" #include "HexDocument_impl.hxx" -// +// #include "HexVertex_impl.hxx" #include "HexEdge_impl.hxx" @@ -40,7 +40,8 @@ using namespace std; #include "HexGroup_impl.hxx" #include "HexPipe_impl.hxx" -#include "HexShape.hxx" +#include "HexBiCylinder.hxx" +#include "HexNewShape_impl.hxx" using namespace HEXABLOCK_ORB; @@ -83,7 +84,7 @@ HEXA_NS::Document* Document_impl::GetImpl() throw (SALOME::SALOME_Exception) return ret; } -::CORBA::Long Document_impl::setName(const char* name) +::CORBA::Long Document_impl::setName(const char* name) throw (SALOME::SALOME_Exception) { ::CORBA::Long ret = _document_cpp->setName(name); @@ -145,7 +146,7 @@ Vertex_ptr Document_impl::findVertex(::CORBA::Double x, ::CORBA::Double y, ::COR return result; } - +// ======================================================== addEdge Edge_ptr Document_impl::addEdge(Vertex_ptr v0In, Vertex_ptr v1In) throw(SALOME::SALOME_Exception) { @@ -166,6 +167,27 @@ Edge_ptr Document_impl::addEdge(Vertex_ptr v0In, Vertex_ptr v1In) } return result; } +// ======================================================== addEdgeVector +Edge_ptr Document_impl::addEdgeVector (Vertex_ptr v0In, Vector_ptr w1In) + throw(SALOME::SALOME_Exception) +{ + Edge_ptr result = Edge::_nil(); + + Vertex_impl* v0InServant = ::DownCast( v0In ); + Vector_impl* w1InServant = ::DownCast( w1In ); + ASSERT( v0InServant ); + ASSERT( w1InServant ); + if ( v0InServant && w1InServant ) { + HEXA_NS::Vertex* v0 = v0InServant->GetImpl(); + HEXA_NS::Vector* w1 = w1InServant->GetImpl(); + HEXA_NS::Edge* e = _document_cpp->addEdgeVector ( v0, w1 ); + if ( e != NULL ){ + Edge_impl* servantCorba = new Edge_impl(e); + result = servantCorba->_this(); + } + } + return result; +} ::CORBA::Long Document_impl::countEdge() throw (SALOME::SALOME_Exception) @@ -466,7 +488,7 @@ Vector_ptr Document_impl::addVectorVertices( Vertex_ptr v0In, Vertex_ptr v1In ) { return _document_cpp->countVector(); } - + Vector_ptr Document_impl::getVector(::CORBA::Long i) throw (SALOME::SALOME_Exception) { HEXA_NS::Vector* h = _document_cpp->getVector(i); @@ -503,7 +525,7 @@ throw (SALOME::SALOME_Exception) { return _document_cpp->countCylinder(); } - + Cylinder_ptr Document_impl::getCylinder(::CORBA::Long i) throw (SALOME::SALOME_Exception) { HEXA_NS::Cylinder* c = _document_cpp->getCylinder(i); @@ -541,7 +563,7 @@ throw (SALOME::SALOME_Exception) { return _document_cpp->countPipe(); } - + Pipe_ptr Document_impl::getPipe(::CORBA::Long i) throw (SALOME::SALOME_Exception) { HEXA_NS::Pipe* p = _document_cpp->getPipe(i); @@ -576,7 +598,7 @@ Pipe_ptr Document_impl::getPipe(::CORBA::Long i) throw (SALOME::SALOME_Exception if ( ok == HOK ) return true; else - return false; + return false; } } @@ -603,12 +625,12 @@ Elements_ptr Document_impl::makeCartesian( Vertex_ptr ptIn, HEXA_NS::Vector* vy = vyInServant->GetImpl(); HEXA_NS::Vector* vz = vzInServant->GetImpl(); - HEXA_NS::Elements* l = _document_cpp->makeCartesian( + HEXA_NS::Elements* grid = _document_cpp->makeCartesian( pt, vx, vy, vz, nx, ny, nz ); - if ( l != NULL ){ - Elements_impl* servantCorba = new Elements_impl(l); + if ( grid != NULL ){ + Elements_impl* servantCorba = new Elements_impl(grid); result = servantCorba->_this(); } } @@ -619,7 +641,7 @@ Elements_ptr Document_impl::makeCartesian( Vertex_ptr ptIn, Elements_ptr Document_impl::makeCartesian1( - Vertex_ptr vxIn, + Vertex_ptr vxIn, Vector_ptr vr1In, ::CORBA::Long px, ::CORBA::Long py, ::CORBA::Long pz, ::CORBA::Long mx, ::CORBA::Long my, ::CORBA::Long mz ) @@ -636,14 +658,14 @@ Elements_ptr Document_impl::makeCartesian1( HEXA_NS::Vertex* vx = vxInServant->GetImpl(); HEXA_NS::Vector* vr1 = vr1InServant->GetImpl(); - HEXA_NS::Elements* l = _document_cpp->makeCartesian( + HEXA_NS::Elements* grid = _document_cpp->makeCartesian( vx, vr1, px, py, pz, mx, my, mz ); - if ( l != NULL ){ - Elements_impl* servantCorba = new Elements_impl(l); + if ( grid != NULL ){ + Elements_impl* servantCorba = new Elements_impl(grid); result = servantCorba->_this(); } } @@ -671,11 +693,11 @@ Elements_ptr Document_impl::makeCylindrical( Vertex_ptr ptIn, HEXA_NS::Vertex* pt = ptServant->GetImpl(); HEXA_NS::Vector* vex = vexServant->GetImpl(); HEXA_NS::Vector* vez = vezServant->GetImpl(); - HEXA_NS::Elements* l = _document_cpp->makeCylindrical( pt, + HEXA_NS::Elements* grid = _document_cpp->makeCylindrical( pt, vex, vez, dr, da, dl, nr, na, nl, fill ); - if ( l != NULL ){ - Elements_impl* servantCorba = new Elements_impl(l); + if ( grid != NULL ){ + Elements_impl* servantCorba = new Elements_impl(grid); result = servantCorba->_this(); } } @@ -683,7 +705,7 @@ Elements_ptr Document_impl::makeCylindrical( Vertex_ptr ptIn, } // =================================================== makeCylindricals -Elements_ptr Document_impl::makeCylindricals (Vertex_ptr ptin, +Elements_ptr Document_impl::makeCylindricals (Vertex_ptr ptin, Vector_ptr vexin, Vector_ptr vezin, const RealVector& tdr, const RealVector& tda, const RealVector& tdl, ::CORBA::Boolean fill) @@ -703,19 +725,19 @@ Elements_ptr Document_impl::makeCylindricals (Vertex_ptr ptin, return result; std::vector cdr, cda, cdl; - for ( int nro = 0; nro < tdr.length(); nro++) + for ( int nro = 0; nro < tdr.length(); nro++) cdr.push_back (tdr[nro]); - for ( int nro = 0; nro < tda.length(); nro++) + for ( int nro = 0; nro < tda.length(); nro++) cda.push_back (tda[nro]); - for ( int nro = 0; nro < tdl.length(); nro++) + for ( int nro = 0; nro < tdl.length(); nro++) cdl.push_back (tdl[nro]); HEXA_NS::Vertex* pt = ptServant->GetImpl(); HEXA_NS::Vector* vex = vexServant->GetImpl(); HEXA_NS::Vector* vez = vezServant->GetImpl(); - HEXA_NS::Elements* grid = _document_cpp->makeCylindricals ( pt, vex, vez, + HEXA_NS::Elements* grid = _document_cpp->makeCylindricals ( pt, vex, vez, cdr, cda, cdl, fill ); if ( grid != NULL ) { @@ -735,7 +757,7 @@ Elements_ptr Document_impl::makeCylindricals (Vertex_ptr ptin, // { // Vertex_impl* ptServant = ::DownCast( ptIn ); // ASSERT( ptServant ); -// +// // if ( ptServant ) { // HEXA_NS::Vertex* pt = ptServant->GetImpl(); // HEXA_NS::Elements* l = _document_cpp->makeSpherical( pt, dx, dy, dz, n ); @@ -769,7 +791,7 @@ Elements_ptr Document_impl::makeSpherical( - + // Elements_ptr Document_impl::makeCylinder(Cylinder_ptr cylIn, ::CORBA::Long nr, ::CORBA::Long na, ::CORBA::Long nl) @@ -795,14 +817,14 @@ Elements_ptr Document_impl::makeCylinder(Cylinder_ptr cylIn, Vector_ptr vrIn, :: return result; } -Elements_ptr Document_impl::makePipe( Pipe_ptr pIn, Vector_ptr vrIn, +Elements_ptr Document_impl::makePipe( Pipe_ptr pIn, Vector_ptr vrIn, ::CORBA::Long nr, ::CORBA::Long na, ::CORBA::Long nl) throw (SALOME::SALOME_Exception) { Pipe_impl* pServant = ::DownCast( pIn ); Vector_impl* vrServant = ::DownCast( vrIn ); ASSERT( pServant ); - + if ( pServant ) { HEXA_NS::Pipe* p = pServant ->GetImpl(); HEXA_NS::Vector* vr = vrServant->GetImpl(); @@ -836,20 +858,20 @@ CrossElements_ptr Document_impl::makeCylinders(Cylinder_ptr c1In, Cylinder_ptr c return result; } -Elements_ptr Document_impl::makePipes( Pipe_ptr p1In, Pipe_ptr p2In) +CrossElements_ptr Document_impl::makePipes( Pipe_ptr p1In, Pipe_ptr p2In) throw (SALOME::SALOME_Exception) { Pipe_impl* p1Servant = ::DownCast( p1In ); Pipe_impl* p2Servant = ::DownCast( p2In ); ASSERT( p1Servant ); ASSERT( p2Servant ); - + if ( p1Servant && p2Servant ) { HEXA_NS::Pipe* p1= p1Servant->GetImpl(); HEXA_NS::Pipe* p2= p2Servant->GetImpl(); - - HEXA_NS::Elements* l = _document_cpp->makePipes( p1, p2); - Elements_impl* servantCorba = new Elements_impl(l); + + HEXA_NS::CrossElements* l = _document_cpp->makePipes( p1, p2); + CrossElements_impl* servantCorba = new CrossElements_impl(l); return servantCorba->_this(); } } @@ -980,7 +1002,6 @@ Elements_ptr Document_impl::joinQuads(const Quads& qdsIn, Quad_ptr qbIn, Vertex_ HEXA_NS::Vertex* va2 = va2Servant->GetImpl(); HEXA_NS::Vertex* vb2 = vb2Servant->GetImpl(); -// MESSAGE("joinQuads AAAAAAAAAAAAA"); HEXA_NS::Quads qds; for ( int i = 0; i < qdsIn.length(); i++) { Quad_impl* qServant = ::DownCast( qdsIn[i] ); @@ -1016,7 +1037,7 @@ Elements_ptr Document_impl::joinQuads(const Quads& qdsIn, Quad_ptr qbIn, Vertex_ ASSERT( qaServant ); ASSERT( qbServant ); - // ASSERT( va1Servant ); Controle supprime Abu + // ASSERT( va1Servant ); Controle supprime Abu // ASSERT( vb1Servant ); // ASSERT( va2Servant ); // ASSERT( vb2Servant ); @@ -1096,7 +1117,7 @@ Elements_ptr Document_impl::joinQuads(const Quads& qdsIn, Quad_ptr qbIn, Vertex_ } -Elements_ptr Document_impl::disconnectQuad(Hexa_ptr hexIn, Quad_ptr quadIn) +Elements_ptr Document_impl::disconnectQuad(Hexa_ptr hexIn, Quad_ptr quadIn) throw (SALOME::SALOME_Exception) { Elements_ptr result = Elements::_nil(); @@ -1120,7 +1141,7 @@ Elements_ptr Document_impl::disconnectQuad(Hexa_ptr hexIn, Quad_ptr quadIn) return result; } -Elements_ptr Document_impl::disconnectEdge(Hexa_ptr hexIn, Edge_ptr edgeIn) +Elements_ptr Document_impl::disconnectEdge(Hexa_ptr hexIn, Edge_ptr edgeIn) throw (SALOME::SALOME_Exception) { Elements_ptr result = Elements::_nil(); @@ -1144,7 +1165,7 @@ Elements_ptr Document_impl::disconnectEdge(Hexa_ptr hexIn, Edge_ptr edgeIn) return result; } -Elements_ptr Document_impl::disconnectVertex(Hexa_ptr hexIn, Vertex_ptr vxIn) +Elements_ptr Document_impl::disconnectVertex(Hexa_ptr hexIn, Vertex_ptr vxIn) throw (SALOME::SALOME_Exception) { Elements_ptr result = Elements::_nil(); @@ -1169,14 +1190,14 @@ Elements_ptr Document_impl::disconnectVertex(Hexa_ptr hexIn, Vertex_ptr vxIn) return result; } // ====================================================== disconnectEdges -Elements_ptr Document_impl::disconnectEdges (const Hexas& hexas_in, - const Edges& edges_in) +Elements_ptr Document_impl::disconnectEdges (const Hexas& hexas_in, + const Edges& edges_in) throw (SALOME::SALOME_Exception) { Elements_ptr result = Elements::_nil(); std::vector tab_hexas; - for (int i = 0; i < hexas_in.length(); i++) + for (int i = 0; i < hexas_in.length(); i++) { Hexa_impl* im_hexa = ::DownCast ( hexas_in[i] ); ASSERT( im_hexa ); @@ -1185,7 +1206,7 @@ Elements_ptr Document_impl::disconnectEdges (const Hexas& hexas_in, } std::vector tab_edges; - for (int i = 0; i < edges_in.length(); i++) + for (int i = 0; i < edges_in.length(); i++) { Edge_impl* im_edge = ::DownCast ( edges_in[i] ); ASSERT( im_edge ); @@ -1204,7 +1225,7 @@ Elements_ptr Document_impl::disconnectEdges (const Hexas& hexas_in, return result; } // ====================================================== cut -Elements_ptr Document_impl::cut(Edge_ptr eIn, ::CORBA::Long nb_of_cuts) +Elements_ptr Document_impl::cut(Edge_ptr eIn, ::CORBA::Long nb_of_cuts) throw (SALOME::SALOME_Exception) { Elements_ptr result = Elements::_nil(); @@ -1410,7 +1431,7 @@ Group_ptr Document_impl::getGroup(::CORBA::Long i) throw (SALOME::SALOME_Excepti { Group_ptr result = Group::_nil(); HEXA_NS::Group* g = _document_cpp->getGroup(i); - if ( g != NULL ){ //CS_TODO + if ( g != NULL ){ //CS_TODO Group_impl* servantCorba = new Group_impl(g); result = servantCorba->_this(); } @@ -1422,7 +1443,7 @@ Group_ptr Document_impl::findGroup(const char* name) throw (SALOME::SALOME_Excep { Group_ptr result = Group::_nil(); HEXA_NS::Group* g = _document_cpp->findGroup(name); - if ( g != NULL ){ //CS_TODO + if ( g != NULL ){ //CS_TODO Group_impl* servantCorba = new Group_impl(g); result = servantCorba->_this(); } @@ -1437,7 +1458,7 @@ Law_ptr Document_impl::addLaw(const char* name, ::CORBA::Long nb_nodes) throw (S HEXA_NS::Law* l = _document_cpp->addLaw(name, nb_nodes); if ( l != NULL ){ Law_impl* servantCorba = new Law_impl(l); - result = servantCorba->_this(); + result = servantCorba->_this(); } return result; @@ -1500,9 +1521,9 @@ Propagation_ptr Document_impl::getPropagation(::CORBA::Long i) throw (SALOME::SA HEXA_NS::Propagation* p = _document_cpp->getPropagation(i); // //CS_Test -// +// // const HEXA_NS::Edges& edges_cpp = p->getEdges(); -// +// // // HEXA_NS::Edges::const_iterator itertest = edges_cpp.begin(); // // itertest != edges_cpp.end(); // for ( HEXA_NS::Edges::const_iterator iter = edges_cpp.begin(); @@ -1538,184 +1559,6 @@ Propagation_ptr Document_impl::findPropagation(Edge_ptr eIn) throw (SALOME::SALO return result; } -// ======================================================= associateOpenedLine -::CORBA::Long Document_impl::associateOpenedLine (Edge_ptr mstart, - const Edges& mline, - GEOM::GEOM_Object_ptr gstart, - ::CORBA::Double pstart, - const Shapes& gline, - ::CORBA::Double pend) - throw (SALOME::SALOME_Exception) -{ - Edge_impl* im_start = ::DownCast( mstart ); - - ASSERT ( im_start ); - if (im_start == NULL) - return HERR; - - std::vector md_line; - for (int i = 0; i < mline.length(); i++) - { - Edge_impl* im_edge = ::DownCast ( mline[i] ); - ASSERT( im_edge ); - HEXA_NS::Edge* un_edge = im_edge->GetImpl(); - md_line.push_back (un_edge); - } - - TopoDS_Shape shape = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->geomObjectToShape(gstart); - string b_rep = shape2string( shape ); - HEXA_NS::Shape* gg_start = new HEXA_NS::Shape( b_rep ); - - std::vector gg_line; - for (int i = 0; i < gline.length(); i++) - { - shape = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->geomObjectToShape(gline[i]); - b_rep = shape2string( shape ); - HEXA_NS::Shape* gg_edge = new HEXA_NS::Shape( b_rep ); - gg_line.push_back (gg_edge); - } - - // Call model - - HEXA_NS::Edge* md_start = im_start->GetImpl(); - - ::CORBA::Long ier = _document_cpp->associateOpenedLine (md_start, md_line, - gg_start, pstart, gg_line, pend); - return ier; -} - -// ======================================================= associateClosedLine -::CORBA::Long Document_impl::associateClosedLine (Vertex_ptr mfirst, - Edge_ptr mstart, - const Edges& mline, - GEOM::GEOM_Object_ptr gstart, - ::CORBA::Double pstart, - ::CORBA::Boolean inv, - const Shapes& gline) - throw (SALOME::SALOME_Exception) -{ - std::vector md_line; - for (int i = 0; i < mline.length(); i++) - { - Edge_impl* im_edge = ::DownCast ( mline[i] ); - ASSERT( im_edge ); - HEXA_NS::Edge* un_edge = im_edge->GetImpl(); - md_line.push_back (un_edge); - } - - TopoDS_Shape shape = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->geomObjectToShape(gstart); - string b_rep = shape2string( shape ); - HEXA_NS::Shape* gg_start = new HEXA_NS::Shape( b_rep ); - - std::vector gg_line; - for (int i = 0; i < gline.length(); i++) - { - shape = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->geomObjectToShape(gline[i]); - b_rep = shape2string( shape ); - HEXA_NS::Shape* gg_edge = new HEXA_NS::Shape( b_rep ); - gg_line.push_back (gg_edge); - } - - // Call model - - Edge_impl* im_start = ::DownCast ( mstart ); - Vertex_impl* im_first = ::DownCast( mfirst ); - - HEXA_NS::Vertex* md_first = im_first->GetImpl(); - HEXA_NS::Edge* md_start = im_start->GetImpl(); - - printf (" +++ HexDocument_impl.cxx : Appel de associateClosedLine \n"); - - ::CORBA::Long ier = _document_cpp->associateClosedLine (md_first, md_start, - md_line, gg_start, pstart, inv, gg_line); - HexDisplay (ier); - return ier; -} -// ---------------------------------------------- Ajouts Abu Sept 2011 -// ===================================================== setShape -void Document_impl::setShape (GEOM::GEOM_Object_ptr geom_object) - throw(SALOME::SALOME_Exception) -{ - TopoDS_Shape shape = HEXABLOCK_Gen_i::GetHEXABLOCKGen() - ->geomObjectToShape(geom_object); - CORBA::String_var anIOR = HEXABLOCK_Gen_i::GetORB()->object_to_string( geom_object); - - string strBrep = shape2string( shape ); - std::cout << "setShape ---------> len(strBrep) = " - << strBrep.size() << std::endl; - HEXA_NS::Shape* s = new HEXA_NS::Shape( strBrep ); - - s->ior = anIOR.in(); - s->ident = geom_object->GetStudyEntry(); - - std::cout << " ............ Shape creee" << std::endl; - _document_cpp->setShape (s); - std::cout << " ............ Shape associee" << std::endl; -} -// ===================================================== getShape -GEOM::GEOM_Object_ptr Document_impl::getShape () - throw (SALOME::SALOME_Exception) -{ - HEXA_NS::Shape* s = _document_cpp->getShape (); - CORBA::Object_var corbaObj; - GEOM::GEOM_Object_var geomObj; // = new GEOM::GEOM_Object; - - if (s != NULL) - { - if ( !s->ior.empty() ) - { // geom object from current session - corbaObj = HEXABLOCK_Gen_i::GetORB()->string_to_object( s->ior.c_str() ); - if ( !CORBA::is_nil( corbaObj ) ) - { - geomObj = GEOM::GEOM_Object::_narrow( corbaObj ); - } - } - else // no geom object => we have to built it - { - geomObj = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->brepToGeomObject( s->getBrep() ); - } - } - return geomObj._retn(); -} - - -/* *********************************************************** - GEOM::GEOM_Object_var result; // = new GEOM::GEOM_Object; - - HEXA_NS::Shape* s = _document_cpp->getShape(); - - std::cout << "getShape ->" << s << std::endl; - - if (s != NULL) - { - string strBrep = s->getBrep(); - std::cout << "getShape -->len (getBrep) = " - << strBrep.size() << std::endl; - TopoDS_Shape shape = string2shape( strBrep ); - std::cout << "getShape -->string2shape->" << std::endl; - result = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->shapeToGeomObject(shape); - std::cout << "getShape -->GetHEXABLOCKGen--" << std::endl; - } - - return result._retn(); - **************************************************************** */ -// ===================================================== getBrep -char* Document_impl::getBrep () throw (SALOME::SALOME_Exception) -{ - const char* brep = NULL; - - HEXA_NS::Shape* shape = _document_cpp->getShape(); - if (shape != NULL) - { - string b_rep = shape->getBrep(); - brep = b_rep.c_str(); - // brep = shape->getBrep().c_str(); - } - - if (brep == NULL) - brep = ""; - return CORBA::string_dup (brep); -} // ===================================================== getName char* Document_impl::getName () throw (SALOME::SALOME_Exception) { @@ -1723,13 +1566,13 @@ char* Document_impl::getName () throw (SALOME::SALOME_Exception) return CORBA::string_dup (name); } // ===================================================== countUsedVertex -::CORBA::Long Document_impl::countUsedVertex() +::CORBA::Long Document_impl::countUsedVertex() throw (SALOME::SALOME_Exception) { return _document_cpp->countUsedVertex(); } // ===================================================== getUsedVertex -Vertex_ptr Document_impl::getUsedVertex(::CORBA::Long i) +Vertex_ptr Document_impl::getUsedVertex(::CORBA::Long i) throw (SALOME::SALOME_Exception) { Vertex_ptr result = Vertex::_nil(); @@ -1743,13 +1586,13 @@ Vertex_ptr Document_impl::getUsedVertex(::CORBA::Long i) return result; } // ===================================================== countUsedEdge -::CORBA::Long Document_impl::countUsedEdge() +::CORBA::Long Document_impl::countUsedEdge() throw (SALOME::SALOME_Exception) { return _document_cpp->countUsedEdge(); } // ===================================================== getUsedEdge -Edge_ptr Document_impl::getUsedEdge(::CORBA::Long i) +Edge_ptr Document_impl::getUsedEdge(::CORBA::Long i) throw (SALOME::SALOME_Exception) { Edge_ptr result = Edge::_nil(); @@ -1763,13 +1606,13 @@ Edge_ptr Document_impl::getUsedEdge(::CORBA::Long i) return result; } // ===================================================== countUsedQuad -::CORBA::Long Document_impl::countUsedQuad() +::CORBA::Long Document_impl::countUsedQuad() throw (SALOME::SALOME_Exception) { return _document_cpp->countUsedQuad(); } // ===================================================== getUsedQuad -Quad_ptr Document_impl::getUsedQuad(::CORBA::Long i) +Quad_ptr Document_impl::getUsedQuad(::CORBA::Long i) throw (SALOME::SALOME_Exception) { Quad_ptr result = Quad::_nil(); @@ -1783,13 +1626,13 @@ Quad_ptr Document_impl::getUsedQuad(::CORBA::Long i) return result; } // ===================================================== countUsedHexa -::CORBA::Long Document_impl::countUsedHexa() +::CORBA::Long Document_impl::countUsedHexa() throw (SALOME::SALOME_Exception) { return _document_cpp->countUsedHexa(); } // ===================================================== getUsedHexa -Hexa_ptr Document_impl::getUsedHexa(::CORBA::Long i) +Hexa_ptr Document_impl::getUsedHexa(::CORBA::Long i) throw (SALOME::SALOME_Exception) { Hexa_ptr result = Hexa::_nil(); @@ -1803,7 +1646,7 @@ Hexa_ptr Document_impl::getUsedHexa(::CORBA::Long i) return result; } // ===================================================== addHexa5Quads -Hexa_ptr Document_impl::addHexa5Quads (Quad_ptr q1, Quad_ptr q2, Quad_ptr q3, +Hexa_ptr Document_impl::addHexa5Quads (Quad_ptr q1, Quad_ptr q2, Quad_ptr q3, Quad_ptr q4, Quad_ptr q5) throw (SALOME::SALOME_Exception) { @@ -1839,7 +1682,7 @@ Hexa_ptr Document_impl::addHexa5Quads (Quad_ptr q1, Quad_ptr q2, Quad_ptr q3, return result; } // ===================================================== addHexa4Quads -Hexa_ptr Document_impl::addHexa4Quads (Quad_ptr q1, Quad_ptr q2, Quad_ptr q3, +Hexa_ptr Document_impl::addHexa4Quads (Quad_ptr q1, Quad_ptr q2, Quad_ptr q3, Quad_ptr q4) throw (SALOME::SALOME_Exception) { @@ -1930,7 +1773,7 @@ Hexa_ptr Document_impl::addHexa2Quads (Quad_ptr q1, Quad_ptr q2) } // ===================================================== removeQuad -::CORBA::Boolean Document_impl::removeQuad(Quad_ptr quad) +::CORBA::Boolean Document_impl::removeQuad(Quad_ptr quad) throw (SALOME::SALOME_Exception) { Quad_impl* hServant = ::DownCast( quad ); @@ -1946,7 +1789,7 @@ Hexa_ptr Document_impl::addHexa2Quads (Quad_ptr q1, Quad_ptr q2) } } // ===================================================== removeElements -::CORBA::Boolean Document_impl::removeElements(Elements_ptr bloc) +::CORBA::Boolean Document_impl::removeElements(Elements_ptr bloc) throw (SALOME::SALOME_Exception) { Elements_impl* hServant = ::DownCast( bloc ); @@ -1962,8 +1805,8 @@ Hexa_ptr Document_impl::addHexa2Quads (Quad_ptr q1, Quad_ptr q2) } } // ===================================================== revolutionQuads -Elements_ptr Document_impl::revolutionQuads (const Quads& start, - Vertex_ptr center, Vector_ptr axis, +Elements_ptr Document_impl::revolutionQuads (const Quads& start, + Vertex_ptr center, Vector_ptr axis, const RealVector &angles) throw (SALOME::SALOME_Exception) { @@ -1979,7 +1822,7 @@ Elements_ptr Document_impl::revolutionQuads (const Quads& start, return result; HEXA_NS::Quads t_start; - for ( int nq = 0; nq < start.length(); nq++) + for ( int nq = 0; nq < start.length(); nq++) { Quad_impl* v_quad = ::DownCast (start[nq]); ASSERT( v_quad ); @@ -1988,7 +1831,7 @@ Elements_ptr Document_impl::revolutionQuads (const Quads& start, } std::vector t_angles; - for ( int na = 0; na < angles.length(); na++) + for ( int na = 0; na < angles.length(); na++) { CORBA::Double alpha = angles[na]; t_angles.push_back (alpha); @@ -1996,7 +1839,7 @@ Elements_ptr Document_impl::revolutionQuads (const Quads& start, HEXA_NS::Vector* i_axis = v_axis ->GetImpl(); HEXA_NS::Vertex* i_center = v_center->GetImpl(); - HEXA_NS::Elements* i_elts = _document_cpp->revolutionQuads (t_start, + HEXA_NS::Elements* i_elts = _document_cpp->revolutionQuads (t_start, i_center, i_axis, t_angles); if (i_elts != NULL) { @@ -2007,7 +1850,7 @@ Elements_ptr Document_impl::revolutionQuads (const Quads& start, return result; } // ===================================================== prismQuadsVec -Elements_ptr Document_impl::prismQuadsVec (const Quads& start, Vector_ptr dir, +Elements_ptr Document_impl::prismQuadsVec (const Quads& start, Vector_ptr dir, const RealVector &thaut, ::CORBA::Long opt) throw (SALOME::SALOME_Exception) { @@ -2020,7 +1863,7 @@ Elements_ptr Document_impl::prismQuadsVec (const Quads& start, Vector_ptr dir, return result; HEXA_NS::Quads t_start; - for ( int nq = 0; nq < start.length(); nq++) + for ( int nq = 0; nq < start.length(); nq++) { Quad_impl* v_quad = ::DownCast (start[nq]); ASSERT( v_quad ); @@ -2029,14 +1872,14 @@ Elements_ptr Document_impl::prismQuadsVec (const Quads& start, Vector_ptr dir, } std::vector t_haut; - for ( int na = 0; na < thaut.length(); na++) + for ( int na = 0; na < thaut.length(); na++) { CORBA::Double alpha = thaut[na]; t_haut.push_back (alpha); } HEXA_NS::Vector* i_dir = v_dir ->GetImpl(); - HEXA_NS::Elements* i_elts = _document_cpp->prismQuadsVec (t_start, + HEXA_NS::Elements* i_elts = _document_cpp->prismQuadsVec (t_start, i_dir, t_haut, opt); if (i_elts != NULL) { @@ -2048,8 +1891,8 @@ Elements_ptr Document_impl::prismQuadsVec (const Quads& start, Vector_ptr dir, } // ===================================================== makeSphere -Elements_ptr Document_impl::replace (const Quads& pattern, - Vertex_ptr p1, Vertex_ptr c1, +Elements_ptr Document_impl::replace (const Quads& pattern, + Vertex_ptr p1, Vertex_ptr c1, Vertex_ptr p2, Vertex_ptr c2, Vertex_ptr p3, Vertex_ptr c3) throw (SALOME::SALOME_Exception) @@ -2072,7 +1915,7 @@ Elements_ptr Document_impl::replace (const Quads& pattern, return result; HEXA_NS::Quads t_pattern; - for ( int nq = 0; nq < pattern.length(); nq++) + for ( int nq = 0; nq < pattern.length(); nq++) { Quad_impl* v_quad = ::DownCast (pattern[nq]); ASSERT( v_quad ); @@ -2089,7 +1932,7 @@ Elements_ptr Document_impl::replace (const Quads& pattern, HEXA_NS::Vertex* i_c2 = v_c2->GetImpl(); HEXA_NS::Vertex* i_c3 = v_c3->GetImpl(); - HEXA_NS::Elements* i_elts = _document_cpp->replace (t_pattern, + HEXA_NS::Elements* i_elts = _document_cpp->replace (t_pattern, i_p1, i_c1, i_p2, i_c2, i_p3, i_c3); if (i_elts != NULL) { @@ -2100,9 +1943,9 @@ Elements_ptr Document_impl::replace (const Quads& pattern, return result; } // ===================================================== makeSphere -Elements_ptr Document_impl::makeSphere (Vertex_ptr center, Vector_ptr vx, - Vector_ptr vz, ::CORBA::Double radius, - ::CORBA::Double radhole, Vertex_ptr plorig, +Elements_ptr Document_impl::makeSphere (Vertex_ptr center, Vector_ptr vx, + Vector_ptr vz, ::CORBA::Double radius, + ::CORBA::Double radhole, Vertex_ptr plorig, ::CORBA::Long nrad, ::CORBA::Long nang, ::CORBA::Long nhaut) throw (SALOME::SALOME_Exception) { @@ -2135,8 +1978,8 @@ Elements_ptr Document_impl::makeSphere (Vertex_ptr center, Vector_ptr vx, return result; } // ===================================================== makePartSphere -Elements_ptr Document_impl::makePartSphere (Vertex_ptr center, Vector_ptr vx, - Vector_ptr vz, ::CORBA::Double radius, +Elements_ptr Document_impl::makePartSphere (Vertex_ptr center, Vector_ptr vx, + Vector_ptr vz, ::CORBA::Double radius, ::CORBA::Double radhole, Vertex_ptr plorig, ::CORBA::Double angle, ::CORBA::Long nrad, ::CORBA::Long nang, ::CORBA::Long nhaut) @@ -2160,7 +2003,7 @@ Elements_ptr Document_impl::makePartSphere (Vertex_ptr center, Vector_ptr vx, HEXA_NS::Vector* i_x = v_x ->GetImpl(); HEXA_NS::Vector* i_z = v_z ->GetImpl(); - HEXA_NS::Elements* i_elts = _document_cpp->makePartSphere (i_center, i_x, + HEXA_NS::Elements* i_elts = _document_cpp->makePartSphere (i_center, i_x, i_z, radius, radhole, i_orig, angle, nrad, nang, nhaut); if (i_elts != NULL) @@ -2172,10 +2015,10 @@ Elements_ptr Document_impl::makePartSphere (Vertex_ptr center, Vector_ptr vx, return result; } // ===================================================== makeRind -Elements_ptr Document_impl::makeRind (Vertex_ptr center, Vector_ptr vx, - Vector_ptr vz, - ::CORBA::Double radext, ::CORBA::Double radint, - ::CORBA::Double radhole, Vertex_ptr plorig, +Elements_ptr Document_impl::makeRind (Vertex_ptr center, Vector_ptr vx, + Vector_ptr vz, + ::CORBA::Double radext, ::CORBA::Double radint, + ::CORBA::Double radhole, Vertex_ptr plorig, ::CORBA::Long nrad, ::CORBA::Long nang, ::CORBA::Long nhaut) throw (SALOME::SALOME_Exception) { @@ -2196,7 +2039,7 @@ Elements_ptr Document_impl::makeRind (Vertex_ptr center, Vector_ptr vx, HEXA_NS::Vector* i_x = v_x ->GetImpl(); HEXA_NS::Vector* i_z = v_z ->GetImpl(); - HEXA_NS::Elements* i_elts = _document_cpp->makeRind (i_center, i_x, i_z, + HEXA_NS::Elements* i_elts = _document_cpp->makeRind (i_center, i_x, i_z, radext, radint, radhole, i_orig, nrad, nang, nhaut); if (i_elts != NULL) @@ -2208,9 +2051,9 @@ Elements_ptr Document_impl::makeRind (Vertex_ptr center, Vector_ptr vx, return result; } // ===================================================== makePartRind -Elements_ptr Document_impl::makePartRind (Vertex_ptr center, Vector_ptr vx, - Vector_ptr vz, - ::CORBA::Double radext, ::CORBA::Double radint, +Elements_ptr Document_impl::makePartRind (Vertex_ptr center, Vector_ptr vx, + Vector_ptr vz, + ::CORBA::Double radext, ::CORBA::Double radint, ::CORBA::Double radhole, Vertex_ptr plorig, ::CORBA::Double angle, ::CORBA::Long nrad, ::CORBA::Long nang, ::CORBA::Long nhaut) @@ -2245,7 +2088,7 @@ Elements_ptr Document_impl::makePartRind (Vertex_ptr center, Vector_ptr vx, return result; } // ================================================== makeScale -Elements_ptr Document_impl::makeScale (Elements_ptr lIn, Vertex_ptr pIn, +Elements_ptr Document_impl::makeScale (Elements_ptr lIn, Vertex_ptr pIn, ::CORBA::Double k) throw (SALOME::SALOME_Exception) { @@ -2350,8 +2193,8 @@ Elements_ptr Document_impl::makeSymmetryPoint (Elements_ptr lIn, Vertex_ptr pIn) return result; } // ================================================== performScale -void Document_impl::performScale (Elements_ptr lIn, Vertex_ptr pIn, - ::CORBA::Double k) +void Document_impl::performScale (Elements_ptr lIn, Vertex_ptr pIn, + ::CORBA::Double k) throw (SALOME::SALOME_Exception) { Elements_impl* lServant = ::DownCast( lIn ); @@ -2367,8 +2210,8 @@ void Document_impl::performScale (Elements_ptr lIn, Vertex_ptr pIn, } } // ================================================== performSymmetryPlane -void Document_impl::performSymmetryPlane (Elements_ptr lIn, Vertex_ptr pIn, - Vector_ptr vecIn) +void Document_impl::performSymmetryPlane (Elements_ptr lIn, Vertex_ptr pIn, + Vector_ptr vecIn) throw (SALOME::SALOME_Exception) { Elements_impl* lServant = ::DownCast( lIn ); @@ -2387,8 +2230,8 @@ void Document_impl::performSymmetryPlane (Elements_ptr lIn, Vertex_ptr pIn, } } // ================================================== performSymmetryLine -void Document_impl::performSymmetryLine (Elements_ptr lIn, Vertex_ptr pIn, - Vector_ptr vecIn) +void Document_impl::performSymmetryLine (Elements_ptr lIn, Vertex_ptr pIn, + Vector_ptr vecIn) throw (SALOME::SALOME_Exception) { Elements_impl* lServant = ::DownCast( lIn ); @@ -2434,3 +2277,173 @@ void Document_impl::clearAssociation () { _document_cpp->clearAssociation (); } +// ---------------------------------------------- Ajouts Hexa5 (nov 2012) +// ===================================================== addShape +NewShape_ptr Document_impl::addShape (GEOM::GEOM_Object_ptr gobject, + const char* name) + throw (SALOME::SALOME_Exception) +{ + TopoDS_Shape shape = HEXABLOCK_Gen_i::GetHEXABLOCKGen() + ->geomObjectToShape(gobject); + + HEXA_NS::NewShape* new_shape = _document_cpp->addShape (shape, name); + + NewShape_ptr result = NewShape::_nil(); + if (new_shape != NULL) + { + NewShape_impl* servantCorba = new NewShape_impl (new_shape); + result = servantCorba->_this(); + } + + return result; +} +// ===================================================== countShape +::CORBA::Long Document_impl::countShape () + throw (SALOME::SALOME_Exception) +{ + return _document_cpp->countShape(); +} +// ========================================================= getShape +NewShape_ptr Document_impl::getShape (::CORBA::Long nro) + throw (SALOME::SALOME_Exception) +{ + HEXA_NS::NewShape* new_shape = _document_cpp->getShape (nro); + + NewShape_ptr result = NewShape::_nil(); + if (new_shape != NULL) + { + NewShape_impl* servantCorba = new NewShape_impl (new_shape); + result = servantCorba->_this(); + } + + return result; +} +// ==================================================== associateOpenedLine +::CORBA::Long Document_impl::associateOpenedLine (const Edges& mline, + const Shapes& gline, + const IntVector& subid, + ::CORBA::Double pstart, + ::CORBA::Double pend) + throw (SALOME::SALOME_Exception) +{ + Hex::Edges md_line; + Hex::NewShapes geo_line; + Hex::IntVector sub_ids; + + for (int nro = 0; nro < mline.length(); nro++) + { + Edge_impl* im_edge = ::DownCast (mline[nro]); + ASSERT (im_edge); + HEXA_NS::Edge* un_edge = im_edge->GetImpl(); + md_line.push_back (un_edge); + } + + for (int nro = 0; nro < gline.length(); nro++) + { + NewShape_impl* im_shape = ::DownCast (gline[nro]); + ASSERT (im_shape); + HEXA_NS::NewShape* la_shape = im_shape->GetImpl(); + geo_line.push_back (la_shape); + } + + for (int nro = 0; nro < subid.length(); nro++) + { + int alpha = subid [nro]; + sub_ids.push_back (alpha); + } + + ::CORBA::Long ier = _document_cpp->associateOpenedLine (md_line, geo_line, + sub_ids, pstart, pend); + return ier; +} +// ====================================================== associateClosedLine +::CORBA::Long Document_impl::associateClosedLine (Vertex_ptr mfirst, + const Edges& mline, + const Shapes& gline, + const IntVector& subid, + ::CORBA::Double pstart, + ::CORBA::Boolean inv) + throw (SALOME::SALOME_Exception) +{ + Hex::Edges md_line; + Hex::NewShapes geo_line; + Hex::IntVector sub_ids; + + Vertex_impl* im_first = ::DownCast( mfirst ); + HEXA_NS::Vertex* md_first = im_first->GetImpl(); + + for (int nro = 0; nro < mline.length(); nro++) + { + Edge_impl* im_edge = ::DownCast (mline[nro]); + ASSERT (im_edge); + HEXA_NS::Edge* un_edge = im_edge->GetImpl(); + md_line.push_back (un_edge); + } + + for (int nro = 0; nro < gline.length(); nro++) + { + NewShape_impl* im_shape = ::DownCast (gline[nro]); + ASSERT (im_shape); + HEXA_NS::NewShape* la_shape = im_shape->GetImpl(); + geo_line.push_back (la_shape); + } + + for (int nro = 0; nro < subid.length(); nro++) + { + int alpha = subid [nro]; + sub_ids.push_back (alpha); + } + + ::CORBA::Long ier = _document_cpp->associateClosedLine (md_first, md_line, + geo_line, sub_ids, pstart, inv); + return ier; +} +//--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 +// =========================================================== MakeBiCylinder +Elements_ptr Document_impl::makeBiCylinder (Cylinder_ptr c1In, + Cylinder_ptr c2In) + throw (SALOME::SALOME_Exception) +{ + Elements_ptr result = Elements::_nil(); + + Cylinder_impl* c1Servant = ::DownCast( c1In ); + Cylinder_impl* c2Servant = ::DownCast( c2In ); + + ASSERT( c1Servant ); + ASSERT( c2Servant ); + + if ( c1Servant && c2Servant ) { + HEXA_NS::Cylinder* c1= c1Servant->GetImpl(); + HEXA_NS::Cylinder* c2= c2Servant->GetImpl(); + + HEXA_NS::Elements* grid = _document_cpp->makeBiCylinder (c1,c2); + Elements_impl* servantCorba = new Elements_impl(grid); + result = servantCorba->_this(); + } + return result; +} +// ================================================================ MakeBiPipe +Elements_ptr Document_impl::makeBiPipe (Pipe_ptr p1In, Pipe_ptr p2In) + throw (SALOME::SALOME_Exception) +{ + Pipe_impl* p1Servant = ::DownCast( p1In ); + Pipe_impl* p2Servant = ::DownCast( p2In ); + + ASSERT( p1Servant ); + ASSERT( p2Servant ); + + Elements_ptr result = Elements::_nil(); + + if ( p1Servant && p2Servant ) + { + HEXA_NS::Pipe* p1= p1Servant->GetImpl(); + HEXA_NS::Pipe* p2= p2Servant->GetImpl(); + + HEXA_NS::Elements* grid = _document_cpp->makeBiPipe ( p1, p2); + Elements_impl* servantCorba = new Elements_impl(grid); + result = servantCorba->_this(); + } + + return result; +} + diff --git a/src/HEXABLOCK_I/HexDocument_impl.hxx b/src/HEXABLOCK_I/HexDocument_impl.hxx index 4f5e54a..04089d3 100755 --- a/src/HEXABLOCK_I/HexDocument_impl.hxx +++ b/src/HEXABLOCK_I/HexDocument_impl.hxx @@ -56,7 +56,10 @@ public: ::CORBA::Long countVertex() throw (SALOME::SALOME_Exception); Vertex_ptr getVertex(::CORBA::Long i) throw (SALOME::SALOME_Exception); Vertex_ptr findVertex(::CORBA::Double x, ::CORBA::Double y, ::CORBA::Double z) throw (SALOME::SALOME_Exception); - Edge_ptr addEdge(Vertex_ptr v0, Vertex_ptr v1) throw (SALOME::SALOME_Exception); + Edge_ptr addEdge(Vertex_ptr v0, Vertex_ptr v1) + throw (SALOME::SALOME_Exception); + Edge_ptr addEdgeVector (Vertex_ptr v0, Vector_ptr w1) + throw (SALOME::SALOME_Exception); ::CORBA::Long countEdge() throw (SALOME::SALOME_Exception); Edge_ptr getEdge(::CORBA::Long i) throw (SALOME::SALOME_Exception); Edge_ptr findEdge(Vertex_ptr p1, Vertex_ptr p2) throw (SALOME::SALOME_Exception); @@ -93,25 +96,26 @@ Pipe_ptr getPipe(::CORBA::Long i) throw (SALOME::SALOME_Exception); throw (SALOME::SALOME_Exception); Elements_ptr makeSpherical( Vertex_ptr ptIn, - ::CORBA::Double rayon, + ::CORBA::Double rayon, ::CORBA::Long n, ::CORBA::Double k ) throw (SALOME::SALOME_Exception); Elements_ptr makeCylinder(Cylinder_ptr cyl, Vector_ptr vr, ::CORBA::Long nr, ::CORBA::Long na, ::CORBA::Long nl) throw (SALOME::SALOME_Exception); - Elements_ptr makePipe(Pipe_ptr p, Vector_ptr vr, ::CORBA::Long nr, - ::CORBA::Long na, ::CORBA::Long nl) + Elements_ptr makePipe(Pipe_ptr p, Vector_ptr vr, ::CORBA::Long nr, + ::CORBA::Long na, ::CORBA::Long nl) throw (SALOME::SALOME_Exception); // Elements_ptr makeCylinders(Cylinder_ptr c1, Cylinder_ptr c2) throw (SALOME::SALOME_Exception); - CrossElements_ptr makeCylinders(Cylinder_ptr cyl1, Cylinder_ptr cyl2) throw (SALOME::SALOME_Exception); - - Elements_ptr makePipes(Pipe_ptr p1, Pipe_ptr p2) throw (SALOME::SALOME_Exception); + CrossElements_ptr makeCylinders(Cylinder_ptr cyl1, Cylinder_ptr cyl2) + throw (SALOME::SALOME_Exception); + CrossElements_ptr makePipes(Pipe_ptr p1, Pipe_ptr p2) + throw (SALOME::SALOME_Exception); Elements_ptr prismQuad(Quad_ptr qd, Vector_ptr v, ::CORBA::Long nb) throw (SALOME::SALOME_Exception); Elements_ptr prismQuads(const Quads& qds, Vector_ptr v, ::CORBA::Long nb) throw (SALOME::SALOME_Exception); - Elements_ptr prismQuadsVec(const Quads& qds, Vector_ptr v, + Elements_ptr prismQuadsVec(const Quads& qds, Vector_ptr v, const RealVector &thaut, ::CORBA::Long opt) throw (SALOME::SALOME_Exception); @@ -122,29 +126,29 @@ Pipe_ptr getPipe(::CORBA::Long i) throw (SALOME::SALOME_Exception); ::CORBA::Long mergeEdges(Edge_ptr e1, Edge_ptr e2, Vertex_ptr v1, Vertex_ptr v2) throw (SALOME::SALOME_Exception); ::CORBA::Long mergeVertices(Vertex_ptr v1, Vertex_ptr v2) throw (SALOME::SALOME_Exception); - Elements_ptr disconnectQuad(Hexa_ptr h, Quad_ptr q) + Elements_ptr disconnectQuad(Hexa_ptr h, Quad_ptr q) throw (SALOME::SALOME_Exception); - Elements_ptr disconnectEdge(Hexa_ptr h, Edge_ptr e) + Elements_ptr disconnectEdge(Hexa_ptr h, Edge_ptr e) throw (SALOME::SALOME_Exception); - Elements_ptr disconnectVertex(Hexa_ptr h, Vertex_ptr v) + Elements_ptr disconnectVertex(Hexa_ptr h, Vertex_ptr v) throw (SALOME::SALOME_Exception); - Elements_ptr disconnectEdges(const Hexas& th, const Edges& e) + Elements_ptr disconnectEdges(const Hexas& th, const Edges& e) throw (SALOME::SALOME_Exception); Elements_ptr cut(Edge_ptr e, ::CORBA::Long nb_of_cuts) throw (SALOME::SALOME_Exception); Elements_ptr makeTranslation(Elements_ptr e, Vector_ptr vec) throw (SALOME::SALOME_Exception); -Elements_ptr makeRotation(Elements_ptr l, Vertex_ptr ver, Vector_ptr vec, - ::CORBA::Double angle) +Elements_ptr makeRotation(Elements_ptr l, Vertex_ptr ver, Vector_ptr vec, + ::CORBA::Double angle) throw (SALOME::SALOME_Exception); -Elements_ptr makeScale (Elements_ptr e, Vertex_ptr ver, ::CORBA::Double k) +Elements_ptr makeScale (Elements_ptr e, Vertex_ptr ver, ::CORBA::Double k) throw (SALOME::SALOME_Exception); -Elements_ptr makeSymmetryPoint (Elements_ptr e, Vertex_ptr ver) +Elements_ptr makeSymmetryPoint (Elements_ptr e, Vertex_ptr ver) throw (SALOME::SALOME_Exception); -Elements_ptr makeSymmetryLine (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) +Elements_ptr makeSymmetryLine (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) throw (SALOME::SALOME_Exception); Elements_ptr makeSymmetryPlane (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) throw (SALOME::SALOME_Exception); @@ -154,13 +158,13 @@ Elements_ptr makeSymmetryPlane (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) void performRotation(Elements_ptr l, Vertex_ptr ver, Vector_ptr vec, ::CORBA::Double angle) throw (SALOME::SALOME_Exception); -void performScale (Elements_ptr e, Vertex_ptr ver, ::CORBA::Double k) +void performScale (Elements_ptr e, Vertex_ptr ver, ::CORBA::Double k) throw (SALOME::SALOME_Exception); -void performSymmetryPoint (Elements_ptr e, Vertex_ptr ver) +void performSymmetryPoint (Elements_ptr e, Vertex_ptr ver) throw (SALOME::SALOME_Exception); -void performSymmetryLine (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) +void performSymmetryLine (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) throw (SALOME::SALOME_Exception); -void performSymmetryPlane (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) +void performSymmetryPlane (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) throw (SALOME::SALOME_Exception); Group_ptr addHexaGroup(const char* name) throw (SALOME::SALOME_Exception); @@ -186,28 +190,6 @@ void performSymmetryPlane (Elements_ptr e, Vertex_ptr ver, Vector_ptr vec) // Evols 13/12/2010 - ::CORBA::Long associateOpenedLine (Edge_ptr mstart, - const Edges& mline, - GEOM::GEOM_Object_ptr gstart, - ::CORBA::Double pstart, - const Shapes& gline, - ::CORBA::Double pend) - throw (SALOME::SALOME_Exception); - ::CORBA::Long associateClosedLine (Vertex_ptr mfirst, - Edge_ptr mstart, - const Edges& mline, - GEOM::GEOM_Object_ptr gstart, - ::CORBA::Double pstart, - ::CORBA::Boolean inv, - const Shapes& gline) - throw (SALOME::SALOME_Exception); - -void setShape (GEOM::GEOM_Object_ptr geom_object) - throw (SALOME::SALOME_Exception); -GEOM::GEOM_Object_ptr getShape () - throw (SALOME::SALOME_Exception); -char* getBrep () throw (SALOME::SALOME_Exception); - // Evols 05/09/2011 // ::CORBA::Long countUsedVertex () throw (SALOME::SALOME_Exception); @@ -220,7 +202,7 @@ char* getBrep () throw (SALOME::SALOME_Exception); Quad_ptr getUsedQuad (::CORBA::Long i) throw (SALOME::SALOME_Exception); Hexa_ptr getUsedHexa (::CORBA::Long i) throw (SALOME::SALOME_Exception); - Hexa_ptr addHexa5Quads (Quad_ptr q1, Quad_ptr q2, Quad_ptr q3, Quad_ptr q4, + Hexa_ptr addHexa5Quads (Quad_ptr q1, Quad_ptr q2, Quad_ptr q3, Quad_ptr q4, Quad_ptr q5) throw (SALOME::SALOME_Exception); Hexa_ptr addHexa4Quads (Quad_ptr q1, Quad_ptr q2, Quad_ptr q3, Quad_ptr q4) @@ -230,48 +212,76 @@ char* getBrep () throw (SALOME::SALOME_Exception); Hexa_ptr addHexa2Quads (Quad_ptr q1, Quad_ptr q2) throw (SALOME::SALOME_Exception); - Elements_ptr revolutionQuads (const Quads& start, Vertex_ptr center, + Elements_ptr revolutionQuads (const Quads& start, Vertex_ptr center, Vector_ptr axis, const RealVector &angles) throw (SALOME::SALOME_Exception); - Elements_ptr replace (const Quads& pattern, Vertex_ptr p1, Vertex_ptr c1, + Elements_ptr replace (const Quads& pattern, Vertex_ptr p1, Vertex_ptr c1, Vertex_ptr p2, Vertex_ptr c2, Vertex_ptr p3, Vertex_ptr c3) throw (SALOME::SALOME_Exception); - Elements_ptr makeSphere (Vertex_ptr center, Vector_ptr vx, Vector_ptr vz, + Elements_ptr makeSphere (Vertex_ptr center, Vector_ptr vx, Vector_ptr vz, ::CORBA::Double radius, ::CORBA::Double radhole, - Vertex_ptr plorig, + Vertex_ptr plorig, ::CORBA::Long nrad, ::CORBA::Long nang, ::CORBA::Long nhaut) throw (SALOME::SALOME_Exception); - Elements_ptr makePartSphere (Vertex_ptr center, Vector_ptr vx, Vector_ptr vz, + Elements_ptr makePartSphere (Vertex_ptr center, Vector_ptr vx, Vector_ptr vz, ::CORBA::Double radius, ::CORBA::Double radhole, Vertex_ptr plorig, ::CORBA::Double angle, ::CORBA::Long nrad, ::CORBA::Long nang, ::CORBA::Long nhaut) throw (SALOME::SALOME_Exception); - Elements_ptr makeRind (Vertex_ptr center, Vector_ptr vx, Vector_ptr vz, - ::CORBA::Double radext, ::CORBA::Double radint, - ::CORBA::Double radhole, Vertex_ptr plorig, + Elements_ptr makeRind (Vertex_ptr center, Vector_ptr vx, Vector_ptr vz, + ::CORBA::Double radext, ::CORBA::Double radint, + ::CORBA::Double radhole, Vertex_ptr plorig, ::CORBA::Long nrad, ::CORBA::Long nang, ::CORBA::Long nhaut) throw (SALOME::SALOME_Exception); - Elements_ptr makePartRind (Vertex_ptr center, Vector_ptr vx, Vector_ptr vz, - ::CORBA::Double radext, ::CORBA::Double radint, + Elements_ptr makePartRind (Vertex_ptr center, Vector_ptr vx, Vector_ptr vz, + ::CORBA::Double radext, ::CORBA::Double radint, ::CORBA::Double radhole, Vertex_ptr plorig, ::CORBA::Double angle, ::CORBA::Long nrad, ::CORBA::Long nang, ::CORBA::Long nhaut) throw (SALOME::SALOME_Exception); public: - ::CORBA::Boolean removeQuad (Quad_ptr quad) + ::CORBA::Boolean removeQuad (Quad_ptr quad) throw (SALOME::SALOME_Exception); - ::CORBA::Boolean removeElements (Elements_ptr bloc) + ::CORBA::Boolean removeElements (Elements_ptr bloc) throw (SALOME::SALOME_Exception); void setLevel(::CORBA::Long level) throw (SALOME::SALOME_Exception); void clearAssociation () throw (SALOME::SALOME_Exception); + // Hexa5 + + NewShape_ptr addShape (GEOM::GEOM_Object_ptr geom_object, const char* name) + throw (SALOME::SALOME_Exception); + ::CORBA::Long countShape () throw (SALOME::SALOME_Exception); + NewShape_ptr getShape (::CORBA::Long nro) + throw (SALOME::SALOME_Exception); + + ::CORBA::Long associateOpenedLine (const Edges& mline, + const Shapes& gline, + const IntVector& subid, + ::CORBA::Double pstart, + ::CORBA::Double pend) + throw (SALOME::SALOME_Exception); + + ::CORBA::Long associateClosedLine (Vertex_ptr mfirst, + const Edges& mline, + const Shapes& gline, + const IntVector& subid, + ::CORBA::Double pstart, + ::CORBA::Boolean inv) + throw (SALOME::SALOME_Exception); + // Hexa5 + Elements_ptr makeBiCylinder (Cylinder_ptr cyl1, Cylinder_ptr cyl2) + throw (SALOME::SALOME_Exception); + Elements_ptr makeBiPipe (Pipe_ptr p1, Pipe_ptr p2) + throw (SALOME::SALOME_Exception); + private: HEXA_NS::Document *_document_cpp; }; diff --git a/src/HEXABLOCK_I/HexEdge_impl.cxx b/src/HEXABLOCK_I/HexEdge_impl.cxx index 1f4faea..4426ff8 100755 --- a/src/HEXABLOCK_I/HexEdge_impl.cxx +++ b/src/HEXABLOCK_I/HexEdge_impl.cxx @@ -25,7 +25,7 @@ using namespace std; #include "HexVertex_impl.hxx" #include "HexEdge_impl.hxx" -#include "HexShape.hxx" +#include "HexNewShape_impl.hxx" using namespace HEXABLOCK_ORB; @@ -43,12 +43,6 @@ HEXA_NS::Edge* Edge_impl::GetImpl() ::CORBA::Boolean Edge_impl::getWay() throw (SALOME::SALOME_Exception) { -// bool way = _edge_cpp->getWay(); -// if ( way == true ) { -// return CORBA::TRUE; -// else { -// return CORBA::FALSE; -// } return _edge_cpp->getWay(); } @@ -84,132 +78,41 @@ char* Edge_impl::getName() throw (SALOME::SALOME_Exception) } // ========================================================= setName -void Edge_impl::setName(const char* name) +void Edge_impl::setName(const char* name) throw (SALOME::SALOME_Exception) { _edge_cpp->setName (name); } +// ========================================================= setColor void Edge_impl::setColor (::CORBA::Double val) throw (SALOME::SALOME_Exception) { _edge_cpp->setColor (val); } -void Edge_impl::setScalar( ::CORBA::Double val )throw (SALOME::SALOME_Exception) -{ - _edge_cpp->setScalar(val); -} - - -::CORBA::Long Edge_impl::addAssociation( GEOM::GEOM_Object_ptr geom_object_1D, double debut, double fin ) - throw (SALOME::SALOME_Exception) -{ - ::CORBA::Long ok; - TopoDS_Shape aShape = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->geomObjectToShape( geom_object_1D ); - string strBrep = shape2string( aShape ); - CORBA::String_var anIOR = HEXABLOCK_Gen_i::GetORB()->object_to_string( geom_object_1D ); - HEXA_NS::Shape* s = new HEXA_NS::Shape( strBrep ); - s->ior = anIOR.in(); //geom_object_1D->GetStudyEntry(); GetEntry() - s->ident = geom_object_1D->GetStudyEntry(); - s->debut = debut; - s->fin = fin; - ok = _edge_cpp->addAssociation( s ); - -// Edge_impl::Assoc assoc; -// assoc.geomObj = GEOM::GEOM_Object::_duplicate( geom_object_1D ); -// assoc.debut = debut; -// assoc.fin = fin; -// _associations.push_back(assoc); - - return ok; -} - +// ========================================================= clearAssociation void Edge_impl::clearAssociation() throw (SALOME::SALOME_Exception) { _edge_cpp->clearAssociation (); } - - -// EdgeAssociations* Edge_impl::getAssociations() //CS_NOT_SPEC -// throw (SALOME::SALOME_Exception) -// { -// HEXABLOCK_ORB::EdgeAssociations* result = new HEXABLOCK_ORB::EdgeAssociations; -// result->length( _associations.size() ); -// -// HEXABLOCK_ORB::EdgeAssociation assoc; -// CORBA::ULong i = 0; -// for ( std::vector::const_iterator iter = _associations.begin(); -// iter != _associations.end(); -// ++iter){ -// // assoc.geomObj = (*iter).geomObj; -// assoc.geomObj = GEOM::GEOM_Object::_duplicate( (*iter).geomObj ); -// assoc.debut = (*iter).debut; -// assoc.fin = (*iter).fin; -// (*result)[i++] = assoc; -// } -// return result; -// } - - - - -EdgeAssociations* Edge_impl::getAssociations () +// =========================================================== countAssociation +::CORBA::Long Edge_impl::countAssociation () throw (SALOME::SALOME_Exception) { - HEXABLOCK_ORB::EdgeAssociations* result = new HEXABLOCK_ORB::EdgeAssociations; -// HEXABLOCK_ORB::GEOM_Object_ptr ge; -// GEOM::GEOM_Object_ptr ge; - TopoDS_Shape aShape; - const std::vector shapes = _edge_cpp->getAssociations(); - - result->length( shapes.size() ); - HEXABLOCK_ORB::EdgeAssociation assoc; - CORBA::ULong i = 0; - CORBA::Object_var corbaObj; - GEOM::GEOM_Object_var geomObj; - -// std::cout << "XXXXXXXX shapes "<< shapes.size() << std::endl; - for ( std::vector::const_iterator iter = shapes.begin(); - iter != shapes.end(); - ++iter ){ -// ge = GEOM::GEOM_Object::_duplicate(HEXABLOCK::GetHEXABLOCKGen()->shapeToGeomObject( aShape )); -// ge = HEXABLOCK_ORB::GEOM_Edge::_duplicate(HEXABLOCK::GetHEXABLOCKGen()->shapeToGeomObject( aShape )); -// ge = HEXABLOCK::GetHEXABLOCKGen()->shapeToGeomObject( aShape ); -// ge->debut( (*iter)->debut ); -// ge->fin( (*iter)->fin ); -// assoc.geomObj = GEOM::GEOM_Object::_duplicate( (*iter).geomObj ); -// aShape = string2shape( (*iter)->getBrep()); -// assoc.geomObj = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->shapeToGeomObject( aShape ); - -// if ( !(*iter)->ior.empty() ){ -// corbaObj = HEXABLOCK_Gen_i::GetORB()->string_to_object( (*iter)->ior.c_str() ); -// if ( !CORBA::is_nil( corbaObj ) ){ -// geomObj = GEOM::GEOM_Object::_narrow( corbaObj ); -// assoc.geomObj = geomObj._retn(); -// assoc.debut = (*iter)->debut; -// assoc.fin = (*iter)->fin; -// (*result)[ i++ ] = assoc; -// } -// } - assoc.debut = (*iter)->debut; - assoc.fin = (*iter)->fin; - - if ( !(*iter)->ior.empty() ){ // geom object from current session - corbaObj = HEXABLOCK_Gen_i::GetORB()->string_to_object( (*iter)->ior.c_str() ); - if ( !CORBA::is_nil( corbaObj ) ){ - geomObj = GEOM::GEOM_Object::_narrow( corbaObj ); - assoc.geomObj = geomObj._retn(); - } - } else { // no geom object => we have to built it - assoc.geomObj = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->brepToGeomObject( (*iter)->getBrep() ); - } - - (*result)[ i++ ] = assoc; - } - return result; + return _edge_cpp->countAssociation (); } +// ========================================================= addAssociation +::CORBA::Long Edge_impl::addAssociation (NewShape_ptr geom, + ::CORBA::Long subid, + double debut, double fin ) + throw (SALOME::SALOME_Exception) +{ + NewShape_impl* im_shape = ::DownCast (geom ); + HEXA_NS::NewShape* md_shape = im_shape->GetImpl(); - + ::CORBA::Long ier = _edge_cpp->addAssociation (md_shape, subid, debut, fin); + return ier; +} diff --git a/src/HEXABLOCK_I/HexEdge_impl.hxx b/src/HEXABLOCK_I/HexEdge_impl.hxx index a0c349c..069511f 100755 --- a/src/HEXABLOCK_I/HexEdge_impl.hxx +++ b/src/HEXABLOCK_I/HexEdge_impl.hxx @@ -25,6 +25,7 @@ #include "hexa_base.hxx" #include "HexEdge.hxx" +#include "HexNewShape_impl.hxx" using namespace HEXABLOCK_ORB; @@ -43,25 +44,23 @@ public: ::CORBA::Boolean getWay() throw (SALOME::SALOME_Exception); Vertex_ptr getVertex(::CORBA::Long n) throw (SALOME::SALOME_Exception); -// void setAssociation(GEOM::GEOM_Object_ptr geom_object_1D) throw (SALOME::SALOME_Exception); -// GEOM::GEOM_Object_ptr getAssociation() throw (SALOME::SALOME_Exception); - ::CORBA::Long addAssociation( GEOM::GEOM_Object_ptr geom_object_1D, double debut, double fin ) //CS_NOT_SPEC - throw (SALOME::SALOME_Exception); void clearAssociation() throw (SALOME::SALOME_Exception); - EdgeAssociations* getAssociations () //CS_NOT_SPEC + ::CORBA::Long countAssociation () throw (SALOME::SALOME_Exception); void setColor (::CORBA::Double val) throw (SALOME::SALOME_Exception); - void setScalar( ::CORBA::Double val )throw (SALOME::SALOME_Exception); void dump() throw (SALOME::SALOME_Exception); void printName() throw (SALOME::SALOME_Exception); char* getName() throw (SALOME::SALOME_Exception); void setName (const char* name) throw (SALOME::SALOME_Exception); + ::CORBA::Long addAssociation (NewShape_ptr geom, ::CORBA::Long subid, + double debut, double fin ) + throw (SALOME::SALOME_Exception); + private: HEXA_NS::Edge* _edge_cpp; - std::vector _associations; }; #endif diff --git a/src/HEXABLOCK_I/HexNewShape_impl.cxx b/src/HEXABLOCK_I/HexNewShape_impl.cxx new file mode 100755 index 0000000..c222803 --- /dev/null +++ b/src/HEXABLOCK_I/HexNewShape_impl.cxx @@ -0,0 +1,113 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#include "HEXABLOCK.hxx" +#include "utilities.h" + +#include + +#include "HexNewShape_impl.hxx" + +// ============================================================== Constructeur +NewShape_impl::NewShape_impl( HEXA_NS::NewShape *ptrCpp ) +{ + _shape_cpp = ptrCpp; +} +// ============================================================== GetImpl +HEXA_NS::NewShape* NewShape_impl::GetImpl() + throw (SALOME::SALOME_Exception) +{ + return _shape_cpp; +} +// ========================================================= countVertex +::CORBA::Long NewShape_impl::countVertex () + throw (SALOME::SALOME_Exception) +{ + return _shape_cpp->countVertex (); +} +// ========================================================= countEdge +::CORBA::Long NewShape_impl::countEdge () + throw (SALOME::SALOME_Exception) +{ + return _shape_cpp->countEdge (); +} +// ========================================================= countFace +::CORBA::Long NewShape_impl::countFace () + throw (SALOME::SALOME_Exception) +{ + return _shape_cpp->countFace (); +} +// --------------------------------------------------------------------- +// ========================================================= getVertex +::CORBA::Long NewShape_impl::getVertex (::CORBA::Long nro) + throw (SALOME::SALOME_Exception) +{ + return _shape_cpp->getVertex (nro); +} +// ========================================================= getEdge +::CORBA::Long NewShape_impl::getEdge (::CORBA::Long nro) + throw (SALOME::SALOME_Exception) +{ + return _shape_cpp->getEdge (nro); +} +// ========================================================= getFace +::CORBA::Long NewShape_impl::getFace (::CORBA::Long nro) + throw (SALOME::SALOME_Exception) +{ + return _shape_cpp->getFace (nro); +} +// --------------------------------------------------------------------- +// ========================================================= getNameVertex +char* NewShape_impl::getNameVertex (::CORBA::Long nro) + throw (SALOME::SALOME_Exception) +{ + return CORBA::string_dup (_shape_cpp->getNameVertex (nro)); +} +// ========================================================= getNameEdge +char* NewShape_impl::getNameEdge (::CORBA::Long nro) + throw (SALOME::SALOME_Exception) +{ + return CORBA::string_dup (_shape_cpp->getNameEdge (nro)); +} +// ========================================================= getNameFace +char* NewShape_impl::getNameFace (::CORBA::Long nro) + throw (SALOME::SALOME_Exception) +{ + return CORBA::string_dup (_shape_cpp->getNameFace (nro)); +} +// ========================================================= dump +void NewShape_impl::dump() throw (SALOME::SALOME_Exception) +{ + +} +// ========================================================= setName +void NewShape_impl::printName() throw (SALOME::SALOME_Exception) +{ + _shape_cpp->printName(); +} +// ========================================================= setName +char* NewShape_impl::getName() throw (SALOME::SALOME_Exception) +{ + return CORBA::string_dup( _shape_cpp->getName() ); +} +// ========================================================= setName +void NewShape_impl::setName(const char* name) + throw (SALOME::SALOME_Exception) +{ + _shape_cpp->setName (name); +} diff --git a/src/HEXABLOCK_I/HexNewShape_impl.hxx b/src/HEXABLOCK_I/HexNewShape_impl.hxx new file mode 100755 index 0000000..cacb715 --- /dev/null +++ b/src/HEXABLOCK_I/HexNewShape_impl.hxx @@ -0,0 +1,70 @@ +// Copyright (C) 2009-2012 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. +// +// This library 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +#ifndef __HexNewShape_impl__ +#define __HexNewShape_impl__ + +#include +#include CORBA_SERVER_HEADER(NewShape) +#include "SALOME_GenericObj_i.hh" + +#include "hexa_base.hxx" +#include "HexNewShape.hxx" + +using namespace HEXABLOCK_ORB; + +class NewShape_impl : public POA_HEXABLOCK_ORB::NewShape, + public SALOME::GenericObj_i +{ +public: + NewShape_impl (HEXA_NS::NewShape *ptrCpp); + HEXA_NS::NewShape* GetImpl() throw (SALOME::SALOME_Exception); + + + ::CORBA::Long countVertex () + throw (SALOME::SALOME_Exception); + ::CORBA::Long countEdge () + throw (SALOME::SALOME_Exception); + ::CORBA::Long countFace () + throw (SALOME::SALOME_Exception); + + ::CORBA::Long getVertex (::CORBA::Long nro) + throw (SALOME::SALOME_Exception); + ::CORBA::Long getEdge (::CORBA::Long nro) + throw (SALOME::SALOME_Exception); + ::CORBA::Long getFace (::CORBA::Long nro) + throw (SALOME::SALOME_Exception); + + char* getNameVertex (::CORBA::Long nro) + throw (SALOME::SALOME_Exception); + char* getNameEdge (::CORBA::Long nro) + throw (SALOME::SALOME_Exception); + char* getNameFace (::CORBA::Long nro) + throw (SALOME::SALOME_Exception); + + void dump() throw (SALOME::SALOME_Exception); + void printName() throw (SALOME::SALOME_Exception); + char* getName() throw (SALOME::SALOME_Exception); + void setName (const char* name) throw (SALOME::SALOME_Exception); + + +private: + HEXA_NS::NewShape* _shape_cpp; +}; + +#endif diff --git a/src/HEXABLOCK_I/HexPropagation_impl.cxx b/src/HEXABLOCK_I/HexPropagation_impl.cxx index 49af3b5..ddb1849 100755 --- a/src/HEXABLOCK_I/HexPropagation_impl.cxx +++ b/src/HEXABLOCK_I/HexPropagation_impl.cxx @@ -45,19 +45,12 @@ HEXABLOCK_ORB::Edges* Propagation_impl::getEdges() throw (SALOME::SALOME_Excepti HEXABLOCK_ORB::Edges* result = new HEXABLOCK_ORB::Edges; const HEXA_NS::Edges& edges_cpp = _propagation_cpp->getEdges(); -// HEXA_NS::Edges edges_cpp = _propagation_cpp->getEdges(); - std::cout<<"XX edges_cpp.size() ->"<length( edges_cpp.size() ); -// HEXA_NS::Edges::const_iterator itertest = edges_cpp.begin(); -// itertest != edges_cpp.end(); for ( HEXA_NS::Edges::const_iterator iter = edges_cpp.begin(); iter != edges_cpp.end(); ++iter){ -// printf (" ("); -// (*iter)->getVertex (0)->printName (", "); -// (*iter)->getVertex (1)->printName (")\n"); Edge_impl *servantEdge = new Edge_impl( *iter ); (*result)[ i++ ] = servantEdge->_this(); @@ -66,26 +59,6 @@ HEXABLOCK_ORB::Edges* Propagation_impl::getEdges() throw (SALOME::SALOME_Excepti } -// HEXABLOCK_ORB::Ways* Propagation_impl::getWays() throw (SALOME::SALOME_Exception) -// { -// HEXABLOCK_ORB::Ways* result = new HEXABLOCK_ORB::Ways; -// const vector& ways_cpp = _propagation_cpp->getWays(); -// -// CORBA::ULong i = 0; -// result->length( ways_cpp.size() ); -// for ( vector::const_iterator iter = ways_cpp.begin(); -// iter != ways_cpp.end(); ++iter ){ -// (*result)[ i++ ] = *iter; -// // if (*iter == true ) { -// // (*result)[ i++ ] = ::CORBA::TRUE; -// // } else { -// // (*result)[ i++ ] = ::CORBA::FALSE; -// // } -// } -// return result; -// -// } - void Propagation_impl::setLaw(HEXABLOCK_ORB::Law_ptr lawIn) throw (SALOME::SALOME_Exception) { Law_impl* lawInServant = ::DownCast( lawIn ); diff --git a/src/HEXABLOCK_I/HexQuad_impl.cxx b/src/HEXABLOCK_I/HexQuad_impl.cxx index c647ecd..b640ad1 100755 --- a/src/HEXABLOCK_I/HexQuad_impl.cxx +++ b/src/HEXABLOCK_I/HexQuad_impl.cxx @@ -26,7 +26,6 @@ using namespace std; #include "HexQuad_impl.hxx" #include "HexVertex_impl.hxx" #include "HexEdge_impl.hxx" -#include "HexShape.hxx" Quad_impl::Quad_impl( HEXA_NS::Quad *ptrCpp ):_quad_cpp(ptrCpp) { @@ -68,22 +67,14 @@ Vertex_ptr Quad_impl::getVertex(::CORBA::Long n) -::CORBA::Long Quad_impl::addAssociation( GEOM::GEOM_Object_ptr geom_object_2D) +::CORBA::Long Quad_impl::addAssociation(NewShape_ptr geom, ::CORBA::Long subid) throw (SALOME::SALOME_Exception) { - ::CORBA::Long ok; + NewShape_impl* im_shape = ::DownCast (geom ); + HEXA_NS::NewShape* md_shape = im_shape->GetImpl(); - TopoDS_Shape aShape = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->geomObjectToShape( geom_object_2D ); - string strBrep = shape2string( aShape ); - - CORBA::String_var anIOR = HEXABLOCK_Gen_i::GetORB()->object_to_string( geom_object_2D ); - HEXA_NS::Shape* s = new HEXA_NS::Shape( strBrep ); - s->ior = anIOR.in(); - s->ident = geom_object_2D->GetStudyEntry(); - - ok = _quad_cpp->addAssociation( s ); -// _associations.push_back(GEOM::GEOM_Object::_duplicate( geom_object_2D )); - return ok; + ::CORBA::Long ier = _quad_cpp->addAssociation (md_shape, subid); + return ier; } void Quad_impl::clearAssociation() @@ -92,70 +83,6 @@ void Quad_impl::clearAssociation() _quad_cpp->clearAssociation (); } - - -GEOM::ListOfGO* Quad_impl::getAssociations() //CS_NOT_SPEC - throw (SALOME::SALOME_Exception) -// { -// GEOM::ListOfGO* result = new GEOM::ListOfGO; -// result->length( _associations.size() ); -// -// CORBA::ULong i = 0; -// for ( std::vector::const_iterator iter = _associations.begin(); -// iter != _associations.end(); -// ++iter){ -// // (*result)[i++] = *iter; -// (*result)[i++] = GEOM::GEOM_Object::_duplicate( *iter ); -// } -// return result; -// } -{ - TopoDS_Shape aShape; - const std::vector shapes = _quad_cpp->getAssociations(); - - GEOM::ListOfGO* result = new GEOM::ListOfGO; - result->length( shapes.size() ); - - CORBA::Object_var corbaObj; - GEOM::GEOM_Object_var geomObj; - HEXABLOCK_ORB::EdgeAssociation assoc; - CORBA::ULong i = 0; - for ( std::vector::const_iterator iter = shapes.begin(); - iter != shapes.end(); - ++iter ){ - if ( !(*iter)->ior.empty() ){ // geom object from current session - corbaObj = HEXABLOCK_Gen_i::GetORB()->string_to_object( (*iter)->ior.c_str() ); - if ( !CORBA::is_nil( corbaObj ) ){ - geomObj = GEOM::GEOM_Object::_narrow( corbaObj ); - } - } else { // no geom object => we have to built it - geomObj = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->brepToGeomObject( (*iter)->getBrep() ); - } - (*result)[ i++ ] = geomObj._retn(); - } - - return result; -} - - - - - - - - -// void Quad_impl::setAssociation(GEOM::GEOM_Object_ptr geom_object_2D) throw (SALOME::SALOME_Exception) -// { -// } -// -// GEOM::GEOM_Object_ptr Quad_impl::getAssociation() throw (SALOME::SALOME_Exception) -// { -// } -// -// void Quad_impl::removeAssociation() throw (SALOME::SALOME_Exception) -// { -// } - void Quad_impl::setColor (::CORBA::Double val) throw (SALOME::SALOME_Exception) { @@ -183,7 +110,7 @@ char* Quad_impl::getName() throw (SALOME::SALOME_Exception) return CORBA::string_dup( _quad_cpp->getName() ); } // ========================================================= setName -void Quad_impl::setName(const char* name) +void Quad_impl::setName(const char* name) throw (SALOME::SALOME_Exception) { _quad_cpp->setName (name); diff --git a/src/HEXABLOCK_I/HexQuad_impl.hxx b/src/HEXABLOCK_I/HexQuad_impl.hxx index e0aaa8d..183565e 100755 --- a/src/HEXABLOCK_I/HexQuad_impl.hxx +++ b/src/HEXABLOCK_I/HexQuad_impl.hxx @@ -38,10 +38,10 @@ public: Edge_ptr getEdge(::CORBA::Long n) throw (SALOME::SALOME_Exception); Vertex_ptr getVertex(::CORBA::Long n) throw (SALOME::SALOME_Exception); -// void setAssociation(GEOM::GEOM_Object_ptr geom_object_2D) throw (SALOME::SALOME_Exception); -// GEOM::GEOM_Object_ptr getAssociation() throw (SALOME::SALOME_Exception); - ::CORBA::Long addAssociation ( GEOM::GEOM_Object_ptr geom_object_2D) //CS_NOT_SPEC - throw (SALOME::SALOME_Exception); + + ::CORBA::Long addAssociation (NewShape_ptr geom, ::CORBA::Long subid) + throw (SALOME::SALOME_Exception); + GEOM::ListOfGO* getAssociations () //CS_NOT_SPEC throw (SALOME::SALOME_Exception); @@ -57,7 +57,6 @@ public: private: HEXA_NS::Quad *_quad_cpp; -// std::vector _associations; }; #endif diff --git a/src/HEXABLOCK_I/HexVertex_impl.cxx b/src/HEXABLOCK_I/HexVertex_impl.cxx index dcf0030..6be2c08 100755 --- a/src/HEXABLOCK_I/HexVertex_impl.cxx +++ b/src/HEXABLOCK_I/HexVertex_impl.cxx @@ -24,11 +24,10 @@ using namespace std; #include "hexa_base.hxx" #include "HexVertex_impl.hxx" -#include "HexShape.hxx" +#include "HexNewShape_impl.hxx" Vertex_impl::Vertex_impl( HEXA_NS::Vertex *ptrCpp ): _vertex_cpp( ptrCpp ) -// _association( GEOM::GEOM_Object::_nil() ) { } @@ -67,48 +66,6 @@ void Vertex_impl::setZ( CORBA::Double z ) throw(SALOME::SALOME_Exception) _vertex_cpp->setZ(z); } - -void Vertex_impl::setAssociation(GEOM::GEOM_Object_ptr geom_object_vertex) - throw (SALOME::SALOME_Exception) -{ - TopoDS_Shape shape = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->geomObjectToShape(geom_object_vertex); -// HEXABLOCK::HEXABLOCK* gen = HEXABLOCK::GetHEXABLOCKGen(); -// TopoDS_Shape shape = gen->geomObjectToShape(geom_object_vertex); - string strBrep = shape2string( shape ); - CORBA::String_var anIOR = HEXABLOCK_Gen_i::GetORB()->object_to_string( geom_object_vertex ); - HEXA_NS::Shape* s = new HEXA_NS::Shape( strBrep ); - s->ior = anIOR.in(); - s->ident = geom_object_vertex->GetStudyEntry(); //geom_object_vertex->GetEntry() - _vertex_cpp->setAssociation(s); - -// _association = GEOM::GEOM_Object::_duplicate( geom_object_vertex ); -} - - -GEOM::GEOM_Object_ptr Vertex_impl::getAssociation() - throw (SALOME::SALOME_Exception) -{ -// GEOM::GEOM_Object_var result = GEOM::GEOM_Object::_nil(); -// GEOM::GEOM_Object_ptr result = GEOM::GEOM_Object::_nil(); - GEOM::GEOM_Object_var geomObj; // = new GEOM::GEOM_Object; - CORBA::Object_var corbaObj; - - HEXA_NS::Shape* s = _vertex_cpp->getAssociation(); - if (s != NULL){ - if ( !s->ior.empty() ){ // geom object from current session - corbaObj = HEXABLOCK_Gen_i::GetORB()->string_to_object( s->ior.c_str() ); - if ( !CORBA::is_nil( corbaObj ) ){ - geomObj = GEOM::GEOM_Object::_narrow( corbaObj ); - } - } else { // no geom object => we have to built it - geomObj = HEXABLOCK_Gen_i::GetHEXABLOCKGen()->brepToGeomObject( s->getBrep() ); - } - } - - return geomObj._retn(); -} - - void Vertex_impl::clearAssociation() throw (SALOME::SALOME_Exception) { @@ -122,11 +79,6 @@ void Vertex_impl::setColor (::CORBA::Double val) _vertex_cpp->setColor (val); } -void Vertex_impl::setScalar( ::CORBA::Double val )throw (SALOME::SALOME_Exception) -{ - _vertex_cpp->setScalar(val); -} - void Vertex_impl::dump() throw (SALOME::SALOME_Exception) { _vertex_cpp->dump(); @@ -143,9 +95,35 @@ char* Vertex_impl::getName() throw (SALOME::SALOME_Exception) { return CORBA::string_dup( _vertex_cpp->getName() ); } +// ========================================================== setAssociation +::CORBA::Long Vertex_impl::setAssociation (NewShape_ptr geom, + ::CORBA::Long subid) + throw (SALOME::SALOME_Exception) +{ + NewShape_impl* im_shape = ::DownCast (geom ); + HEXA_NS::NewShape* md_shape = im_shape->GetImpl(); + + ::CORBA::Long ier = _vertex_cpp->setAssociation (md_shape, subid); + return ier; +} // ========================================================= setName -void Vertex_impl::setName(const char* name) +void Vertex_impl::setName(const char* name) throw (SALOME::SALOME_Exception) { _vertex_cpp->setName (name); } +// ========================================================= getAssoX +CORBA::Double Vertex_impl::getAssoX() throw(SALOME::SALOME_Exception) +{ + return _vertex_cpp->getAssoX(); +} +// ========================================================= getAssoY +CORBA::Double Vertex_impl::getAssoY() throw(SALOME::SALOME_Exception) +{ + return _vertex_cpp->getAssoY(); +} +// ========================================================= getAssoZ +CORBA::Double Vertex_impl::getAssoZ() throw(SALOME::SALOME_Exception) +{ + return _vertex_cpp->getAssoZ(); +} diff --git a/src/HEXABLOCK_I/HexVertex_impl.hxx b/src/HEXABLOCK_I/HexVertex_impl.hxx index a1cb8f4..853155e 100755 --- a/src/HEXABLOCK_I/HexVertex_impl.hxx +++ b/src/HEXABLOCK_I/HexVertex_impl.hxx @@ -19,16 +19,14 @@ #ifndef __HexVertex_impl__ #define __HexVertex_impl__ -// #include - #include #include CORBA_SERVER_HEADER(Vertex) #include "SALOME_GenericObj_i.hh" #include "hexa_base.hxx" -#include "hexa_base.hxx" #include "HexVertex.hxx" +#include "HexNewShape_impl.hxx" class Vertex_impl : public POA_HEXABLOCK_ORB::Vertex, public SALOME::GenericObj_i @@ -40,24 +38,29 @@ public: ::CORBA::Double getX() throw (SALOME::SALOME_Exception); ::CORBA::Double getY() throw (SALOME::SALOME_Exception); ::CORBA::Double getZ() throw (SALOME::SALOME_Exception); + void setX(::CORBA::Double x) throw (SALOME::SALOME_Exception); void setY(::CORBA::Double y) throw (SALOME::SALOME_Exception); void setZ(::CORBA::Double z) throw (SALOME::SALOME_Exception); - void setAssociation(GEOM::GEOM_Object_ptr geom_object_vertex) throw (SALOME::SALOME_Exception); GEOM::GEOM_Object_ptr getAssociation() throw (SALOME::SALOME_Exception); void clearAssociation() throw (SALOME::SALOME_Exception); void setColor (::CORBA::Double val) throw (SALOME::SALOME_Exception); - void setScalar( ::CORBA::Double val )throw (SALOME::SALOME_Exception); void dump() throw (SALOME::SALOME_Exception); void printName() throw (SALOME::SALOME_Exception); char* getName() throw (SALOME::SALOME_Exception); void setName (const char* name) throw (SALOME::SALOME_Exception); + ::CORBA::Long setAssociation (NewShape_ptr geom, ::CORBA::Long subid) + throw (SALOME::SALOME_Exception); // Hexa5 + + ::CORBA::Double getAssoX() throw (SALOME::SALOME_Exception); + ::CORBA::Double getAssoY() throw (SALOME::SALOME_Exception); + ::CORBA::Double getAssoZ() throw (SALOME::SALOME_Exception); + private: HEXA_NS::Vertex* _vertex_cpp; -// GEOM::GEOM_Object_ptr _association; }; #endif diff --git a/src/HEXABLOCK_I/Makefile.am b/src/HEXABLOCK_I/Makefile.am index 679c294..9d9531d 100755 --- a/src/HEXABLOCK_I/Makefile.am +++ b/src/HEXABLOCK_I/Makefile.am @@ -43,6 +43,7 @@ salomeinclude_HEADERS = \ HexPropagation_impl.hxx \ HexQuad_impl.hxx \ HexVector_impl.hxx \ + HexNewShape_impl.hxx \ HexVertex_impl.hxx # Scripts to be installed @@ -59,6 +60,7 @@ dist_libHEXABLOCKEngine_la_SOURCES = \ HexQuad_impl.cxx \ HexHexa_impl.cxx \ HexVector_impl.cxx \ + HexNewShape_impl.cxx \ HexElements_impl.cxx \ HexCrossElements_impl.cxx \ HexCylinder_impl.cxx \ @@ -79,6 +81,7 @@ libHEXABLOCKEngine_la_CPPFLAGS = \ $(GEOM_CXXFLAGS) \ $(CAS_CPPFLAGS) \ -I$(srcdir)/../HEXABLOCK \ + -I$(top_builddir) \ -I$(top_builddir)/idl \ -I$(top_builddir)/salome_adm/unix diff --git a/src/HEXABLOCK_I/hexablock.py b/src/HEXABLOCK_I/hexablock.py index a99d685..3bdb45e 100755 --- a/src/HEXABLOCK_I/hexablock.py +++ b/src/HEXABLOCK_I/hexablock.py @@ -30,10 +30,16 @@ import HEXABLOCKPlugin geompy = smesh.geompy +# Gives the component name +# ----------------------------------------------------------- + +def moduleName() : + return "HEXABLOCK" + # Load HEXABLOCK componant # ------------------------ -component = salome.lcc.FindOrLoadComponent("FactoryServer", "HEXABLOCK") +component = salome.lcc.FindOrLoadComponent("FactoryServer", moduleName()) component = component._narrow(HEXABLOCK_Gen) for k in dir(component): @@ -43,6 +49,12 @@ for k in dir(component): del k +# Gives the component +# ----------------------------------------------------------- + +def getEngine() : + return component + # Add laws on propagations based on min or max segment length # ----------------------------------------------------------- @@ -154,30 +166,27 @@ def mesh(doc, name=None, dim=3, container="FactoryServer"): study = salome.myStudy if type(doc) == type(""): - sobject = study.FindObjectID(doc) - builder = study.NewBuilder() - ok, ior = builder.FindAttribute(sobject, "AttributeIOR") - obj = salome.orb.string_to_object(ior.Value()) - doc = obj._narrow(Document) + doc = component.findDocument (doc) - shape = doc.getShape() - if shape == None: - shape = geompy.MakeBox(0, 0, 0, 1, 1, 1) + #### shape = doc.getShape() + #### if shape == None: + #### shape = geompy.MakeBox(0, 0, 0, 1, 1, 1) + shape = geompy.MakeBox(0, 0, 0, 1, 1, 1) if (name == None) or (name == ""): name = doc.getName() geompy.addToStudy(shape, name) - component = salome.lcc.FindOrLoadComponent(container, "SMESH") - component.init_smesh(study, geompy.geom) - meshexa = component.Mesh(shape) + comp_smesh = salome.lcc.FindOrLoadComponent(container, "SMESH") + comp_smesh.init_smesh(study, geompy.geom) + meshexa = comp_smesh.Mesh(shape) so = "libHexaBlockEngine.so" - algo = smesh.SMESH._objref_SMESH_Gen.CreateHypothesis(component, "HEXABLOCK_3D", so) + algo = smesh.SMESH._objref_SMESH_Gen.CreateHypothesis(comp_smesh, "HEXABLOCK_3D", so) meshexa.mesh.AddHypothesis(shape, algo) - hypo = smesh.SMESH._objref_SMESH_Gen.CreateHypothesis(component, "HEXABLOCK_Parameters", so) + hypo = smesh.SMESH._objref_SMESH_Gen.CreateHypothesis(comp_smesh, "HEXABLOCK_Parameters", so) meshexa.mesh.AddHypothesis(shape, hypo) hypo.SetDocument(doc) @@ -186,3 +195,61 @@ def mesh(doc, name=None, dim=3, container="FactoryServer"): meshexa.Compute() return meshexa + +# Get a document from the current study +# ------------------------------------- + +def getFromStudy(entry): + study = salome.myStudy + sobject = study.FindObjectID(entry) + if sobject == None : + print " **** Entry ", entry, " is undefined" + return None + + builder = study.NewBuilder() + ok, attname = builder.FindAttribute(sobject, "AttributeName") + docname = attname.Value() + doc = component.findDocument(docname) + if doc == None : + print " **** Entry ", entry, " doesn't correspond to an HexaBlock Document" + + return doc + +# Find or create HexaBlock Study Component +# ------------------------------------- + +def findOrCreateComponent( study, builder ): + father = study.FindComponent( moduleName() ) + if father is None: + father = builder.NewComponent( moduleName() ) + attr = builder.FindOrCreateAttribute( father, "AttributeName" ) + attr.SetValue( "HexaBlock" ) + attr = builder.FindOrCreateAttribute( father, "AttributePixMap" ) + ### attr.SetPixMap( "ICON_OBJBROWSER_HEXABLOCK" ) + attr.SetPixMap( "ICO_MODULE_HEXABLOCK_SMALL" ) + builder.DefineComponentInstance( father, getEngine() ) + + return father + +# Add a document in the current study +# ------------------------------------- + +def addToStudy(doc): + if doc == None : + print " *** addToStudy : Bad Document Pointer" + return + + study = salome.myStudy + builder = study.NewBuilder() + father = findOrCreateComponent( study, builder ) + name = doc.getName () + + present = study.FindObjectByName(name, moduleName()) + if present != [] : + print " *** addToStudy : Document ", name, "is already in the study" + return + + object = builder.NewObject( father ) + attr = builder.FindOrCreateAttribute( object, "AttributeName" ) + attr.SetValue( name ) + return object.GetID () diff --git a/src/TEST_CPP/ModelTest.cxx b/src/TEST_CPP/ModelTest.cxx index 28da605..1013cfe 100755 --- a/src/TEST_CPP/ModelTest.cxx +++ b/src/TEST_CPP/ModelTest.cxx @@ -32,7 +32,6 @@ #include "HexVertex.hxx" #include "HexPropagation.hxx" -#include "HexShape.hxx" #include "HexLaw.hxx" #include "HexMatrix.hxx" @@ -92,12 +91,12 @@ void ModelTest::_print_propagations (Hex::Document* doc) // Hex::Hex mon_ex; // Hex::Document* doc = mon_ex.addDocument (); // Hex::Vertex* orig = doc->addVertex (0,0,0); -// +// // int ncouches = 1; // double k = 0.8; // Hex::Vector* decal = doc->addVector (1,1,1); // Hex::Elements* sphere = doc->makeSpherical (orig, decal, ncouches, k); -// +// // for (int nc=0 ; nc <= ncouches ; nc++) // { // Hex::Hexa* cell = sphere->getStrate (nc, Hex::Q_A); @@ -105,14 +104,14 @@ void ModelTest::_print_propagations (Hex::Document* doc) // // sphere->getStrate (nc, Hex::Q_A)->remove (); // // sphere->getStrate (nc, Hex::Q_B)->remove (); // } -// +// // sphere->saveVtk ("sphere.vtk"); // CPPUNIT_ASSERT( true ); // } // ======================================================== Test_cartesi1 void ModelTest::Test_cartesi1 () { - + const int size_x = 15; const int size_y = 12; const int size_z = 8; @@ -133,7 +132,7 @@ void ModelTest::Test_cartesi1 () Hex::Hexa* cell = grid->getHexaIJK (nx, ny, nz); cell->remove (); } - + doc->setLevel (1); _print_propagations (doc); grid->saveVtk ("grid_cart.vtk"); @@ -157,7 +156,7 @@ int ModelTest::_afficher (cpchar nom, Hex::EltBase* elt) // ======================================================== Test_find void ModelTest::Test_find () { - + const int size_x = 2; const int size_y = 2; const int size_z = 2; @@ -202,7 +201,7 @@ void ModelTest::Test_find () // ======================================================== Test_joint void ModelTest::Test_joint () { - + const int dimx = 11; const int dimy = 11; const int dimz = 2; @@ -218,13 +217,13 @@ void ModelTest::Test_joint () Hex::Vertex* orig2 = doc->addVertex (dimx/2.0,0,8); Hex::Vector* vectj = doc->addVector (0,1,0); Hex::Vector* vecti = doc->addVector (1,0,0); - Hex::Elements* grid2 = doc->makeCylindrical (orig2, vecti, vectj, + Hex::Elements* grid2 = doc->makeCylindrical (orig2, vecti, vectj, 1, 180, 1, dimz,dimy,dimx); int mx = dimx/2; int my = dimy/2; - Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); - Hex::Quad* cible = grid2->getQuadJK (dimz, mx, my); + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quad* cible = grid2->getQuadJK (dimz, mx, my); Hex::Vertex* v1 = prems->getVertex (0); @@ -237,14 +236,14 @@ void ModelTest::Test_joint () liste.push_back (prems); for (int nx=0; nxgetQuadIJ (nx, my, dimz)); + if (nx!=mx) + liste.push_back (grid1->getQuadIJ (nx, my, dimz)); for (int ny=0; nygetQuadIJ (mx, ny, dimz)); + if (ny!=my) + liste.push_back (grid1->getQuadIJ (mx, ny, dimz)); - // Hex::Elements* joint = + // Hex::Elements* joint = // doc->joinQuads (liste, cible, v1, v2, v3, v4, 5); doc->saveVtk ("joint.vtk"); @@ -254,7 +253,7 @@ void ModelTest::Test_joint () // ======================================================== Test_prism void ModelTest::Test_prism () { - + const int dimx = 11; const int dimy = 11; const int dimz = 2; @@ -269,17 +268,17 @@ void ModelTest::Test_prism () int mx = dimx/2; int my = dimy/2; - Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); Hex::Quads liste; liste.push_back (prems); for (int nx=0; nxgetQuadIJ (nx, my, dimz)); + if (nx!=mx) + liste.push_back (grid1->getQuadIJ (nx, my, dimz)); for (int ny=0; nygetQuadIJ (mx, ny, dimz)); + if (ny!=my) + liste.push_back (grid1->getQuadIJ (mx, ny, dimz)); doc->prismQuads (liste, dir, 5); doc->saveVtk ("prisme.vtk"); @@ -291,22 +290,22 @@ void ModelTest::Test_prism () // ======================================================== Test_prism2 void ModelTest::Test_prism2 () { - + const int dimx = 11; const int dimy = 11; const int dimz = 2; - + Hex::Hex mon_ex; Hex::Document* doc = mon_ex.addDocument ("foo"); - + Hex::Vertex* orig1 = doc->addVertex (0,0,0); Hex::Vector* dir = doc->addVector (1,1,1); - + Hex::Elements* grid1 = doc->makeCartesian (orig1, dir, dimx,dimy,dimz); - + int mx = dimx/2; int my = dimy/2; - Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); Hex::Elements* prism = doc->prismQuad(prems, dir, 5); int nbHexa = prism->countHexa(); @@ -315,10 +314,6 @@ void ModelTest::Test_prism2 () std::cout << "getHexa(1) " << hp1 << std::endl; Hex::Vertex* hp1_v0 = hp1->getVertex(0); std::cout << "getVertex ->" << hp1_v0 << std::endl; - Hex::Shape* s = new Hex::Shape("la shape"); - std::cout << "new Hex::Shape->" << s << std::endl; - hp1_v0->setAssociation(s); - std::cout << "setAssociation ->" << std::endl; doc->saveVtk ("prisme2.vtk"); CPPUNIT_ASSERT( true ); @@ -334,7 +329,7 @@ void ModelTest::Test_prism2 () // ======================================================== Test_hexa1 void ModelTest::Test_hexa1 () { - + const int size_x = 1; const int size_y = 1; const int size_z = 1; @@ -343,7 +338,7 @@ void ModelTest::Test_hexa1 () Hex::Document* doc = mon_ex.addDocument ("foo"); Hex::Vertex* orig = doc->addVertex (0,0,0); Hex::Vector* dir = doc->addVector (1,1,1); - // Hex::Elements* grid = + // Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); doc ->dump (); @@ -353,7 +348,7 @@ void ModelTest::Test_hexa1 () // ======================================================== Test_decoupage void ModelTest::Test_decoupage () { - + const int size_x = 2; const int size_y = 1; const int size_z = 1; @@ -380,7 +375,7 @@ void ModelTest::Test_decoupage () // ======================================================== Test_gen_xml void ModelTest::Test_gen_xml () { - + const int size_x = 2; const int size_y = 2; const int size_z = 2; @@ -397,14 +392,6 @@ void ModelTest::Test_gen_xml () Hex::Edge* arete = cell->getEdge (0); Hex::Vertex* noeud = cell->getVertex (0); - Hex::Shape* shape1 = new Hex::Shape("riri"); - Hex::Shape* shape2 = new Hex::Shape("fifi"); - Hex::Shape* shape3 = new Hex::Shape("loulou"); - - noeud->setAssociation (shape1); - arete->setAssociation (shape2); - face ->setAssociation (shape3); - Hex::Law* law1 = doc->addLaw("loi1", 1); Hex::Law* law2 = doc->addLaw("loi2", 2); Hex::Law* law3 = doc->addLaw("loi3", 3); @@ -433,7 +420,7 @@ void ModelTest::Test_gen_xml () // ======================================================== Test_relecture void ModelTest::Test_relecture () { - + Hex::Hex mon_ex; Hex::Document* doc = mon_ex.loadDocument ("Essai"); @@ -447,7 +434,7 @@ void ModelTest::Test_relecture () // ======================================================== Test_clone void ModelTest::Test_clone () { - + const int size_x = 2; const int size_y = 2; const int size_z = 2; @@ -474,7 +461,7 @@ void ModelTest::Test_clone () // ======================================================== Test_separ void ModelTest::Test_separ () { - + const int size_x = 2; const int size_y = 2; const int size_z = 2; @@ -484,7 +471,7 @@ void ModelTest::Test_separ () Hex::Vertex* orig = doc->addVertex (0,0,0); Hex::Vector* dir = doc->addVector (1,1,1); - // Hex::Elements* grid = + // Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); doc ->saveVtk ("separ.vtk"); @@ -495,34 +482,34 @@ void ModelTest::Test_separ () // // ======================================================== Test_cyl_karima // void ModelTest::Test_cyl_karima () // { -// +// // Hex::Hex mon_ex; // Hex::Document* doc = mon_ex.addDocument ("foo"); -// +// // Hex::Vertex* c2 = doc->addVertex (0,0,0); // Hex::Vector* dz = doc->addVector (0,0,1); // Hex::Vector* dx = doc->addVector (1,0,0); -// +// // double dr = 4.12; -// +// // double a2 = 180; // int l2 = 70; -// +// // int nr2 = 5; // int na2 = 5; // int nl2 = 1; -// -// /* Hex::Elements* cyl2 = */ doc->makeCylindrical (c2, dx, dz, dr, a2, l2, +// +// /* Hex::Elements* cyl2 = */ doc->makeCylindrical (c2, dx, dz, dr, a2, l2, // nr2, na2, nl2, false ); // doc->saveVtk ("cyl_karima.vtk"); // // doc->dump (); -// +// // CPPUNIT_ASSERT( true ); // } // ================================================== Test_grille_cyl void ModelTest::Test_grille_cyl () { - + Hex::Hex mon_ex; Hex::Document* doc = mon_ex.addDocument ("foo"); @@ -558,7 +545,7 @@ void ModelTest::Test_grille_cyl () // ===================================================== Test_cylinder void ModelTest::Test_cylinder () { - + int nvtk = 0; cpchar fic_vtk = "cylindre"; @@ -598,7 +585,7 @@ void ModelTest::myTest_croix () // Hex::Vector* dx1 = doc->addVector( -1, 0, 0 ); // Hex::Vector* dz1 = doc->addVector( 0, 0, 1 ); -// +// // Hex::Vertex* c_pte_1 = doc->addVertex ( 195., 0., 220. ); // Hex::Vertex* c_grd_1 = doc->addVertex ( 300., 0., 400. ); // Hex::Cylinder* cyl_pte_1 = doc->addCylinder( c_pte_1 , dz1 , 25 , 360 ); @@ -607,7 +594,7 @@ void ModelTest::myTest_croix () Hex::Vector* dx2 = doc->addVector(-1, 0, 0 ); Hex::Vector* dz2 = doc->addVector( 0, 0, 1 ); - + Hex::Vertex* c_pte_2 = doc->addVertex( 110., 0. , 400. ); Hex::Vertex* c_grd_2 = doc->addVertex( 0. , 0. , 0. ); @@ -639,7 +626,7 @@ void ModelTest::myTest_croix () // ======================================================== Test_croix void ModelTest::Test_croix () { - + Hex::Hex mon_ex; Hex::Document* doc = mon_ex.addDocument ("foo"); @@ -710,7 +697,7 @@ void ModelTest::Test_croix () // ======================================================== Test_pipes void ModelTest::Test_pipes () { - + Hex::Hex mon_ex; Hex::Document* doc = mon_ex.addDocument ("foo"); @@ -737,7 +724,7 @@ void ModelTest::Test_pipes () // ======================================================== Test_lorraine void ModelTest::Test_lorraine() { - + Hex::Hex mon_ex; Hex::Document* doc = mon_ex.addDocument ("foo"); @@ -773,7 +760,7 @@ void ModelTest::Test_lorraine() // vc3 = grid2->getVertexIJK (Hex::Cyl1, 0,0,0); // Cyl i j k Hex::Quad* qb = grid1-> getQuadIJ (Hex::Cyl2, nx_ext, Hex::S_E, 4); - Hex::Quad* qh = grid2-> getQuadIJ (Hex::Cyl1, nx_ext, Hex::S_N, 0); + Hex::Quad* qh = grid2-> getQuadIJ (Hex::Cyl1, nx_ext, Hex::S_N, 0); Hex::Vertex* vb0 = qb->getVertex (3); Hex::Vertex* vb1 = qb->getVertex (2); @@ -798,11 +785,11 @@ void ModelTest::Test_lorraine() for (int ny=1; nygetQuadIJ (Hex::Cyl1, nx_ext, ns, 0)); + hliste.push_back (grid2->getQuadIJ (Hex::Cyl1, nx_ext, ns, 0)); } for (int ny=0; ny<4 ; ny++) - hliste.push_back (grid2->getQuadIJ (Hex::Cyl1, nx_int, ny, 0)); + hliste.push_back (grid2->getQuadIJ (Hex::Cyl1, nx_int, ny, 0)); doc->joinQuads (hliste, qb, vh0, vb0, vh1, vb1, 5); doc->saveVtk ("lorraine.vtk"); @@ -812,7 +799,7 @@ void ModelTest::Test_lorraine() // ======================================================== Test_disconnect void ModelTest::Test_disconnect () { - + const int size_x = 2; const int size_y = 2; const int size_z = 1; @@ -871,7 +858,7 @@ void ModelTest::Test_disconnect () // ======================================================== Test_propagation void ModelTest::Test_propagation () { - + const int size_x = 2; const int size_y = 1; const int size_z = 1; @@ -881,7 +868,7 @@ void ModelTest::Test_propagation () Hex::Vertex* orig = doc->addVertex (0,0,0); Hex::Vector* dir = doc->addVector (1,1,1); - // Hex::Elements* grid = + // Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); int nb = doc->countPropagation (); @@ -918,7 +905,7 @@ void ModelTest::Test_propagation () // ======================================================== Test_move void ModelTest::Test_move () { - + const int size_x = 1; const int size_y = 1; const int size_z = 2; @@ -940,7 +927,7 @@ void ModelTest::Test_move () Hex::Hexa* cube = grid->getHexa (1); Hex::Quad* dessous = cube->getQuad (Hex::Q_A); dessous->dump(); - + Hex::Elements* grid2 = doc->makeTranslation (grid, devant); /* Hex::Elements* grid3 = doc->makeTranslation (grid, agauche); */ Hex::Hexa* cube2 = grid2->getHexa (1); @@ -959,7 +946,7 @@ void ModelTest::Test_move () // ======================================================== Test_deux_cyl void ModelTest::Test_deux_cyl () { - + Hex::Hex mon_ex; Hex::Document* doc = mon_ex.addDocument ("foo"); @@ -977,10 +964,10 @@ void ModelTest::Test_deux_cyl () int na = 6; int nl = 10; - /* Hex::Elements* cyl1 = */ doc->makeCylindrical(orig1, vy,vz, dr, da, + /* Hex::Elements* cyl1 = */ doc->makeCylindrical(orig1, vy,vz, dr, da, dl,nr,na,nl); - /* Hex::Elements* cyl2 = */ doc->makeCylindrical(orig2, vz,vx, dr/2, da, + /* Hex::Elements* cyl2 = */ doc->makeCylindrical(orig2, vz,vx, dr/2, da, dl,nr,na,nl); doc->saveVtk ("deux_cylindres.vtk"); CPPUNIT_ASSERT( true ); @@ -988,7 +975,7 @@ void ModelTest::Test_deux_cyl () // ======================================================== Test_move2 void ModelTest::Test_transfo () { - + const int size_x = 1; const int size_y = 1; const int size_z = 2; diff --git a/src/TEST_CPP/Test_HEXABLOCK.cxx b/src/TEST_CPP/Test_HEXABLOCK.cxx index ab912d5..f3be098 100755 --- a/src/TEST_CPP/Test_HEXABLOCK.cxx +++ b/src/TEST_CPP/Test_HEXABLOCK.cxx @@ -51,14 +51,14 @@ int main (int nbargs, cpchar tabargs []) TestUnit (test_coude ); TestUnit (test_count ); TestUnit (test_decoupage ); - TestUnit (test_gen_xml ); - TestUnit (test_string_xml ); + // TestUnit (test_gen_xml ); + // TestUnit (test_string_xml ); /// TestUnit (test_relecture ); TestUnit (test_spherical); TestUnit (test_grille_cyl ); TestUnit (test_cylindrical ); TestUnit (test_cylinder ); - TestUnit (test_xml_cylinder ); + // TestUnit (test_xml_cylinder ); TestUnit (test_pipe ); TestUnit (test_joint2 ); TestUnit (test_croix ); diff --git a/src/TEST_CPP/test_hexa1.cxx b/src/TEST_CPP/test_hexa1.cxx index 84217fd..1771620 100755 --- a/src/TEST_CPP/test_hexa1.cxx +++ b/src/TEST_CPP/test_hexa1.cxx @@ -35,7 +35,6 @@ #include "HexVertex.hxx" #include "HexPropagation.hxx" -#include "HexShape.hxx" #include "HexLaw.hxx" #include "HexMatrix.hxx" #include "HexCramer.hxx" @@ -152,7 +151,7 @@ int test_cartesi1 () Hex::Hexa* cell = grid->getHexaIJK (nx, ny, nz); cell->remove (); } - + doc->setLevel (1); print_propagations (doc); grid->saveVtk ("grid_cart.vtk"); @@ -235,13 +234,13 @@ int test_joint (int nbargs, cpchar tabargs[]) Hex::Vertex* orig2 = doc->addVertex (dimx/2.0,0,8); Hex::Vector* vectj = doc->addVector (0,1,0); Hex::Vector* vecti = doc->addVector (1,0,0); - Hex::Elements* grid2 = doc->makeCylindrical (orig2, vecti, vectj, + Hex::Elements* grid2 = doc->makeCylindrical (orig2, vecti, vectj, 1, 180, 1, dimz,dimy,dimx); int mx = dimx/2; int my = dimy/2; - Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); - Hex::Quad* cible = grid2->getQuadJK (dimz, mx, my); + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quad* cible = grid2->getQuadJK (dimz, mx, my); Hex::Vertex* v1 = prems->getVertex (0); Hex::Vertex* v3 = prems->getVertex (1); @@ -258,12 +257,12 @@ int test_joint (int nbargs, cpchar tabargs[]) liste.push_back (prems); for (int nx=0; nxgetQuadIJ (nx, my, dimz)); + if (nx!=mx) + liste.push_back (grid1->getQuadIJ (nx, my, dimz)); for (int ny=0; nygetQuadIJ (mx, ny, dimz)); + if (ny!=my) + liste.push_back (grid1->getQuadIJ (mx, ny, dimz)); doc->saveVtk ("joint1.vtk"); const int hauteur = 5; @@ -279,10 +278,10 @@ int test_joint (int nbargs, cpchar tabargs[]) int indice0 = joint->findVertex (v1); HexDisplay (indice0); - for (int nh=0 ; nhgetVertex(nh)->setScalar (5); - for (int nh=0 ; nh<=hauteur ; nh++) + for (int nh=0 ; nh<=hauteur ; nh++) joint->getVertex(nh*nbr_surf_vertex)->setScalar (3); doc->saveVtk ("joint2.vtk"); @@ -308,20 +307,20 @@ int test_prism (int nbargs, cpchar tabargs[]) int my = dimy/2; Hex::Quads liste1, liste2; - liste1.push_back (grid1->getQuadIJ (mx, my, dimz)); - liste2.push_back (grid1->getQuadIJ (mx, my, 0)); + liste1.push_back (grid1->getQuadIJ (mx, my, dimz)); + liste2.push_back (grid1->getQuadIJ (mx, my, 0)); for (int nx=0; nxgetQuadIJ (nx, my, dimz)); - liste2.push_back (grid1->getQuadIJ (nx, my, 0)); + liste1.push_back (grid1->getQuadIJ (nx, my, dimz)); + liste2.push_back (grid1->getQuadIJ (nx, my, 0)); } for (int ny=0; nygetQuadIJ (mx, ny, dimz)); - liste2.push_back (grid1->getQuadIJ (mx, ny, 0)); + liste1.push_back (grid1->getQuadIJ (mx, ny, dimz)); + liste2.push_back (grid1->getQuadIJ (mx, ny, 0)); } Hex::RealVector tlen; @@ -331,7 +330,7 @@ int test_prism (int nbargs, cpchar tabargs[]) dh = 2*dh + 1; tlen.push_back (dh); } - + const int nbiter = 5; doc->saveVtk ("prisme1.vtk"); Hex::Elements* prisme2 = doc->prismQuads (liste2, dir2, nbiter); @@ -345,7 +344,7 @@ int test_prism (int nbargs, cpchar tabargs[]) PutData (prisme1->countQuad()); PutData (prisme1->countEdge()); PutData (prisme1->countVertex()); - + for (int nro=0 ; nro getHexa (nbiter+nro); @@ -372,23 +371,23 @@ int test_revolution9 (int nbargs, cpchar tabargs[]) int mx = dimx/2; int my = dimy/2; - Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); Hex::Quads liste; liste.push_back (prems); prems -> setScalar (5); for (int nx=0; nxgetQuadIJ (nx, my, dimz); + Hex::Quad* cell = grid1->getQuadIJ (nx, my, dimz); liste.push_back (cell); cell -> setScalar (5); } for (int ny=0; nygetQuadIJ (mx, ny, dimz); + Hex::Quad* cell = grid1->getQuadIJ (mx, ny, dimz); liste.push_back (cell); cell -> setScalar (5); } @@ -442,14 +441,14 @@ int test_revolution (int nbargs, cpchar tabargs[]) int na = 6; int nl = 1; - Hex::Elements* grid = doc->makeCylindrical (ori, vx,vz, dr,da,dl, + Hex::Elements* grid = doc->makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, false); Hex::Quads liste; for (int nx=0; nxgetQuadIJ (nx, ny, nl); + Hex::Quad* cell = grid->getQuadIJ (nx, ny, nl); liste.push_back (cell); cell -> setScalar (5); } @@ -510,23 +509,23 @@ int test_coude (int nbargs, cpchar tabargs[]) nr, 10, nl, false); int mx = dimx/2; int my = dimy/2; - Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); + Hex::Quad* prems = grid1->getQuadIJ (mx, my, dimz); Hex::Quads liste; liste.push_back (prems); prems -> setScalar (5); for (int nx=0; nxgetQuadIJ (nx, my, dimz); + Hex::Quad* cell = grid1->getQuadIJ (nx, my, dimz); liste.push_back (cell); cell -> setScalar (5); } for (int ny=0; nygetQuadIJ (mx, ny, dimz); + Hex::Quad* cell = grid1->getQuadIJ (mx, ny, dimz); liste.push_back (cell); cell -> setScalar (5); } @@ -633,14 +632,6 @@ int test_gen_xml (int nbargs, cpchar tabargs[]) Hex::Edge* arete = cell->getEdge (0); Hex::Vertex* noeud = cell->getVertex (0); - Hex::Shape* shape1 = new Hex::Shape("riri"); - Hex::Shape* shape2 = new Hex::Shape("fifi"); - Hex::Shape* shape3 = new Hex::Shape("loulou"); - - noeud->setAssociation (shape1); - arete->setAssociation (shape2); - face ->setAssociation (shape3); - Hex::Law* law1 = doc->addLaw("loi1", 1); Hex::Law* law2 = doc->addLaw("loi2", 2); Hex::Law* law3 = doc->addLaw("loi3", 3); @@ -685,14 +676,6 @@ int test_string_xml (int nbargs, cpchar tabargs[]) Hex::Edge* arete = cell->getEdge (0); Hex::Vertex* noeud = cell->getVertex (0); - Hex::Shape* shape1 = new Hex::Shape("riri"); - Hex::Shape* shape2 = new Hex::Shape("fifi"); - Hex::Shape* shape3 = new Hex::Shape("loulou"); - - noeud->setAssociation (shape1); - arete->setAssociation (shape2); - face ->setAssociation (shape3); - Hex::Law* law1 = doc->addLaw("loi1", 1); Hex::Law* law2 = doc->addLaw("loi2", 2); Hex::Law* law3 = doc->addLaw("loi3", 3); @@ -728,7 +711,7 @@ int test_relecture (int nbargs, cpchar tabargs[]) { Hex::Hex mon_ex; cpchar nomdoc = "Essai"; - if (nbargs>1) + if (nbargs>1) nomdoc = tabargs[1]; Hex::Document* doc = mon_ex.loadDocument (nomdoc); @@ -792,7 +775,7 @@ int test_separ () Hex::Vertex* orig = doc->addVertex (0,0,0); Hex::Vector* dir = doc->addVector (1,1,1); - // Hex::Elements* grid = + // Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); doc ->saveVtk ("separ.vtk"); @@ -864,57 +847,6 @@ int test_grille_cyl (int nbargs, cpchar tabargs[]) return HOK; } -// ================================================== test_asso_line -int test_asso_line (int nbargs, cpchar tabargs[]) -{ - Hex::Hex mon_ex; - Hex::Document* doc = mon_ex.addDocument (); - - Hex::Vertex* orig1 = doc->addVertex ( 0, 0,0); - - Hex::Vector* vz = doc->addVector (0,0,1); - Hex::Vector* vx = doc->addVector (1,0,0); - - double dr = 1; - double dl = 1; - int nr = 2; - int nl = 3; - int ntheta = 8; - - Hex::Elements *c1 = NULL; - - c1 = doc->makeCylindrical (orig1, vx,vz,dr, 360, dl,nr, ntheta, nl, true); - - Hex::Edges m_line; - Hex::Edge* m_start = c1->getEdgeJ (nr, 1, 0); - - for (int na=2 ; nagetEdgeJ (nr, na, 0); - arete->setScalar (5); - m_line.push_back (arete); - } - - // m_line.push_back (c1->getEdgeJ (nr, 0, 2)); - // m_line.push_back (NULL); - Hex::Shape* gstart = NULL; - Hex::Shapes gline; - double pstart = 0 , pend = 0; - - int ier = doc-> associateOpenedLine (m_start, m_line, - gstart, pstart, gline, pend); - HexDisplay (ier); - doc->saveVtk ("asso_line.vtk"); - - m_line.push_back (c1->getEdgeJ (nr, 0, 0)); - Hex::Vertex* m_first = m_start->getVertex (Hex::V_AMONT); - ier = doc-> associateClosedLine (m_first, m_start, m_line, - gstart, pstart, false, gline); - HexDisplay (ier); - // doc->dump (); - - return HOK; -} // ===================================================== test_cylindrical int test_cylindrical (int nbargs, cpchar tabargs[]) { @@ -935,7 +867,7 @@ int test_cylindrical (int nbargs, cpchar tabargs[]) int na = 8; int nl = 2; - if (nbargs>1) + if (nbargs>1) { na = atoi (tabargs[1]); HexDisplay (na); @@ -943,7 +875,7 @@ int test_cylindrical (int nbargs, cpchar tabargs[]) na = 8; } - if (nbargs>2) + if (nbargs>2) { da = atof (tabargs[2]); HexDisplay (da); @@ -1070,9 +1002,9 @@ int del_tranche (Hex::CrossElements* grid, int cyl, int ni, int nk, int dr=1) for (int nj = 0 ; nj < 8 ; nj++) del_hexa (grid, cyl, ni, nj, nk, dr); - if (dr==1) + if (dr==1) save_vtk (); - printf ("del_tranche (g=%d, i=%d, k=%d) : fic = %d\n", + printf ("del_tranche (g=%d, i=%d, k=%d) : fic = %d\n", cyl, ni, nk, nbr_vtk-1); return nbr_vtk; } @@ -1297,7 +1229,7 @@ int test_lorraine(int nbargs, cpchar tabargs[]) // vc3 = grid2->getVertexIJK (Hex::CylSmall, 0,0,0); // Cyl i j k Hex::Quad* qb = grid1-> getQuadIJ (Hex::CylBig, nx_ext, Hex::S_E, 4); - Hex::Quad* qh = grid2-> getQuadIJ (Hex::CylSmall, nx_ext, Hex::S_N, 0); + Hex::Quad* qh = grid2-> getQuadIJ (Hex::CylSmall, nx_ext, Hex::S_N, 0); Hex::Vertex* vb0 = qb->getVertex (3); Hex::Vertex* vb1 = qb->getVertex (2); @@ -1322,11 +1254,11 @@ int test_lorraine(int nbargs, cpchar tabargs[]) for (int ny=1; nygetQuadIJ (Hex::CylSmall, nx_ext, ns, 0)); + hliste.push_back (grid2->getQuadIJ (Hex::CylSmall, nx_ext, ns, 0)); } for (int ny=0; ny<4 ; ny++) - hliste.push_back (grid2->getQuadIJ (Hex::CylSmall, nx_int, ny, 0)); + hliste.push_back (grid2->getQuadIJ (Hex::CylSmall, nx_int, ny, 0)); int hauteur = 3; doc->joinQuads (hliste, qb, vh0, vb0, vh1, vb1, hauteur); @@ -1521,9 +1453,9 @@ void contraction (Hex::Hexa* hexa, Hex::Elements* grid) for (int nro=0; nrogetVertex(nro)->getX()/Hex::HV_MAXI; - cg [1] += hexa->getVertex(nro)->getY()/Hex::HV_MAXI; - cg [2] += hexa->getVertex(nro)->getZ()/Hex::HV_MAXI; + cg [0] += hexa->getVertex(nro)->getX()/Hex::HV_MAXI; + cg [1] += hexa->getVertex(nro)->getY()/Hex::HV_MAXI; + cg [2] += hexa->getVertex(nro)->getZ()/Hex::HV_MAXI; } int nbvertex = grid->countVertex(); @@ -1607,7 +1539,7 @@ int test_propagation () Hex::Vertex* orig = doc->addVertex (0,0,0); Hex::Vector* dir = doc->addVector (1,1,1); - // Hex::Elements* grid = + // Hex::Elements* grid = doc->makeCartesian (orig, dir, size_x,size_y,size_z); int nb = doc->countPropagation (); @@ -1665,7 +1597,7 @@ int test_move () Hex::Hexa* cube = grid->getHexa (1); Hex::Quad* dessous = cube->getQuad (Hex::Q_A); dessous->dump(); - + Hex::Elements* grid2 = doc->makeTranslation (grid, devant); /* Hex::Elements* grid3 = doc->makeTranslation (grid, agauche); */ Hex::Hexa* cube2 = grid2->getHexa (1); @@ -1866,10 +1798,10 @@ int test_remove () return HOK; } // ================================================== init_vec -void init_vec (Hex::RealVector& tab, double n0=0, double n1=0, double n2=0, - double n3=0, double n4=0, double n5=0, double n6=0, +void init_vec (Hex::RealVector& tab, double n0=0, double n1=0, double n2=0, + double n3=0, double n4=0, double n5=0, double n6=0, double n7=0, double n8=0, double n9=0, double n10=0, - double n11=0, double n12=0, double n13=0, double n14=0, + double n11=0, double n12=0, double n13=0, double n14=0, double n15=0, double n16=0) { if (n0>0.0) tab.push_back (n0); @@ -1905,7 +1837,7 @@ int test_cylindricals (int nbargs, cpchar tabargs[]) /****************** init_vec (tdr, 2, 1, 0.5); - init_vec (tda, 40, 35, 30, 25, 20, 15, 10, 5, + init_vec (tda, 40, 35, 30, 25, 20, 15, 10, 5, 5, 10, 15, 20, 25, 30, 35, 40); init_vec (tdl, 1, 2, 3 ); diff --git a/src/TEST_PY/non_regression/bielle.stp b/src/TEST_PY/non_regression/bielle.stp new file mode 100644 index 0000000..ef67fa5 --- /dev/null +++ b/src/TEST_PY/non_regression/bielle.stp @@ -0,0 +1,1178 @@ +ISO-10303-21; +HEADER; + FILE_DESCRIPTION(('a Product shape'),'1'); + FILE_NAME('Euclid Shape Model','1998-12-23T10:04:46',('Author Name'),( + 'MATRA-DATAVISION'),'OL-2.0D','EUCLID','Authorisation status'); + FILE_SCHEMA(('AUTOMOTIVE_DESIGN_CC2 { 1 2 10303 214 -1 1 5 4 }')); +ENDSEC; +DATA; +#1 = PRODUCT_TYPE('part',$,(#2)); +#2 = PRODUCT('bielle','bielle','void',(#3)); +#3 = MECHANICAL_CONTEXT('Mechanical',#4,'Assembly'); +#4 = APPLICATION_CONTEXT('EUCLID'); +#5 = APPLICATION_PROTOCOL_DEFINITION('CommitteeDraft', + 'automotive_design',1997,#4); +#6 = SHAPE_DEFINITION_REPRESENTATION(#7,#11); +#7 = PRODUCT_DEFINITION_SHAPE('void','void',#8); +#8 = PRODUCT_DEFINITION('void','void',#9,#10); +#9 = PRODUCT_DEFINITION_FORMATION('ID','void',#2); +#10 = PRODUCT_DEFINITION_CONTEXT('as proposed',#4,'First_Design'); +#11 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#12),#866); +#12 = MANIFOLD_SOLID_BREP('',#13); +#13 = CLOSED_SHELL('',(#14,#338,#415,#466,#518,#566,#617,#668,#720,#747, + #798,#849)); +#14 = ADVANCED_FACE('',(#15,#270,#304),#30,.F.); +#15 = FACE_BOUND('',#16,.T.); +#16 = EDGE_LOOP('',(#17,#56,#88,#120,#148,#180,#212,#244)); +#17 = ORIENTED_EDGE('',*,*,#18,.T.); +#18 = EDGE_CURVE('',#19,#21,#23,.T.); +#19 = VERTEX_POINT('',#20); +#20 = CARTESIAN_POINT('',(63.609212636948,27.934517711401, + -19.99999955296)); +#21 = VERTEX_POINT('',#22); +#22 = CARTESIAN_POINT('',(93.497879803181,36.745399236679, + -19.99999955296)); +#23 = SURFACE_CURVE('',#24,(#29,#45),.PCURVE_S2.); +#24 = CIRCLE('',#25,74.466478447737); +#25 = AXIS2_PLACEMENT_3D('',#26,#27,#28); +#26 = CARTESIAN_POINT('',(57.963432099881,102.18666633037, + -19.99999955296)); +#27 = DIRECTION('',(0.,0.,1.)); +#28 = DIRECTION('',(1.,0.,0.)); +#29 = PCURVE('',#30,#35); +#30 = PLANE('',#31); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(0.,0.,-19.99999955296)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = DEFINITIONAL_REPRESENTATION('',(#36),#44); +#36 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#37,#38,#39,#40,#41,#42,#43), +.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#37 = CARTESIAN_POINT('',(132.42991054761,102.18666633037)); +#38 = CARTESIAN_POINT('',(132.42991054761,231.16639046259)); +#39 = CARTESIAN_POINT('',(20.730192876013,166.67652839648)); +#40 = CARTESIAN_POINT('',(-90.96952479559,102.18666633037)); +#41 = CARTESIAN_POINT('',(20.730192876013,37.696804264271)); +#42 = CARTESIAN_POINT('',(132.42991054761,-26.79305780183)); +#43 = CARTESIAN_POINT('',(132.42991054761,102.18666633037)); +#44 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#45 = PCURVE('',#46,#51); +#46 = CYLINDRICAL_SURFACE('',#47,74.466478447737); +#47 = AXIS2_PLACEMENT_3D('',#48,#49,#50); +#48 = CARTESIAN_POINT('',(57.963432099881,102.18666633037, + -19.99999955296)); +#49 = DIRECTION('',(0.,0.,1.)); +#50 = DIRECTION('',(1.,0.,0.)); +#51 = DEFINITIONAL_REPRESENTATION('',(#52),#55); +#52 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#53,#54),.UNSPECIFIED.,.F.,.F.,(2, + 2),(4.788278205588,5.209840138517),.PIECEWISE_BEZIER_KNOTS.); +#53 = CARTESIAN_POINT('',(4.788278205588,0.)); +#54 = CARTESIAN_POINT('',(5.209840138517,0.)); +#55 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#56 = ORIENTED_EDGE('',*,*,#57,.T.); +#57 = EDGE_CURVE('',#21,#58,#60,.T.); +#58 = VERTEX_POINT('',#59); +#59 = CARTESIAN_POINT('',(93.497879803181,-41.78636148572, + -19.99999955296)); +#60 = SURFACE_CURVE('',#61,(#66,#77),.PCURVE_S2.); +#61 = CIRCLE('',#62,44.68116165083); +#62 = AXIS2_PLACEMENT_3D('',#63,#64,#65); +#63 = CARTESIAN_POINT('',(114.81915663942,-2.52048112452,-19.99999955296 + )); +#64 = DIRECTION('',(0.,0.,-1.)); +#65 = DIRECTION('',(1.,0.,0.)); +#66 = PCURVE('',#30,#67); +#67 = DEFINITIONAL_REPRESENTATION('',(#68),#76); +#68 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#69,#70,#71,#72,#73,#74,#75), +.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#69 = CARTESIAN_POINT('',(159.50031829025,-2.52048112452)); +#70 = CARTESIAN_POINT('',(159.50031829025,-79.91052324495)); +#71 = CARTESIAN_POINT('',(92.478575814005,-41.21550218473)); +#72 = CARTESIAN_POINT('',(25.45683333776,-2.52048112452)); +#73 = CARTESIAN_POINT('',(92.478575814005,36.174539935697)); +#74 = CARTESIAN_POINT('',(159.50031829025,74.869560995915)); +#75 = CARTESIAN_POINT('',(159.50031829025,-2.52048112452)); +#76 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#77 = PCURVE('',#78,#83); +#78 = CYLINDRICAL_SURFACE('',#79,44.68116165083); +#79 = AXIS2_PLACEMENT_3D('',#80,#81,#82); +#80 = CARTESIAN_POINT('',(114.81915663942,-2.52048112452,-19.99999955296 + )); +#81 = DIRECTION('',(0.,0.,-1.)); +#82 = DIRECTION('',(1.,0.,0.)); +#83 = DEFINITIONAL_REPRESENTATION('',(#84),#87); +#84 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#85,#86),.UNSPECIFIED.,.F.,.F.,(2, + 2),(4.214937822253,8.351432792106),.PIECEWISE_BEZIER_KNOTS.); +#85 = CARTESIAN_POINT('',(4.214937822253,0.)); +#86 = CARTESIAN_POINT('',(8.351432792106,0.)); +#87 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#88 = ORIENTED_EDGE('',*,*,#89,.T.); +#89 = EDGE_CURVE('',#58,#90,#92,.T.); +#90 = VERTEX_POINT('',#91); +#91 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + -19.99999955296)); +#92 = SURFACE_CURVE('',#93,(#98,#109),.PCURVE_S2.); +#93 = CIRCLE('',#94,84.24770250966); +#94 = AXIS2_PLACEMENT_3D('',#95,#96,#97); +#95 = CARTESIAN_POINT('',(53.295957524102,-115.8233848133, + -19.99999955296)); +#96 = DIRECTION('',(0.,0.,1.)); +#97 = DIRECTION('',(1.,0.,0.)); +#98 = PCURVE('',#30,#99); +#99 = DEFINITIONAL_REPRESENTATION('',(#100),#108); +#100 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#101,#102,#103,#104,#105,#106 +,#107),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#101 = CARTESIAN_POINT('',(137.54366003376,-115.8233848133)); +#102 = CARTESIAN_POINT('',(137.54366003376,30.097916354281)); +#103 = CARTESIAN_POINT('',(11.172106269272,-42.86273422955)); +#104 = CARTESIAN_POINT('',(-115.1994474952,-115.8233848133)); +#105 = CARTESIAN_POINT('',(11.172106269272,-188.7840353972)); +#106 = CARTESIAN_POINT('',(137.54366003376,-261.744685981)); +#107 = CARTESIAN_POINT('',(137.54366003376,-115.8233848133)); +#108 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#109 = PCURVE('',#110,#115); +#110 = CYLINDRICAL_SURFACE('',#111,84.24770250966); +#111 = AXIS2_PLACEMENT_3D('',#112,#113,#114); +#112 = CARTESIAN_POINT('',(53.295957524102,-115.8233848133, + -19.99999955296)); +#113 = DIRECTION('',(0.,0.,1.)); +#114 = DIRECTION('',(1.,0.,0.)); +#115 = DEFINITIONAL_REPRESENTATION('',(#116),#119); +#116 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#117,#118),.UNSPECIFIED.,.F.,.F., + (2,2),(1.073345168663,1.501387093594),.PIECEWISE_BEZIER_KNOTS.); +#117 = CARTESIAN_POINT('',(1.073345168663,0.)); +#118 = CARTESIAN_POINT('',(1.501387093594,0.)); +#119 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#120 = ORIENTED_EDGE('',*,*,#121,.T.); +#121 = EDGE_CURVE('',#90,#122,#124,.T.); +#122 = VERTEX_POINT('',#123); +#123 = CARTESIAN_POINT('',(-72.42252677679,-22.63227291405, + -19.99999955296)); +#124 = SURFACE_CURVE('',#125,(#129,#136),.PCURVE_S2.); +#125 = LINE('',#126,#127); +#126 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + -19.99999955296)); +#127 = VECTOR('',#128,1.); +#128 = DIRECTION('',(-0.997592146088,6.935351515554E-02,0.)); +#129 = PCURVE('',#30,#130); +#130 = DEFINITIONAL_REPRESENTATION('',(#131),#135); +#131 = LINE('',#132,#133); +#132 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384)); +#133 = VECTOR('',#134,1.); +#134 = DIRECTION('',(-0.997592146088,6.935351515554E-02)); +#135 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#136 = PCURVE('',#137,#142); +#137 = PLANE('',#138); +#138 = AXIS2_PLACEMENT_3D('',#139,#140,#141); +#139 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + -19.99999955296)); +#140 = DIRECTION('',(-6.935351515554E-02,-0.997592146088,0.)); +#141 = DIRECTION('',(-0.997592146088,6.935351515554E-02,0.)); +#142 = DEFINITIONAL_REPRESENTATION('',(#143),#147); +#143 = LINE('',#144,#145); +#144 = CARTESIAN_POINT('',(0.,-3.552713678801E-14)); +#145 = VECTOR('',#146,1.); +#146 = DIRECTION('',(1.,0.)); +#147 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#148 = ORIENTED_EDGE('',*,*,#149,.T.); +#149 = EDGE_CURVE('',#122,#150,#152,.T.); +#150 = VERTEX_POINT('',#151); +#151 = CARTESIAN_POINT('',(-88.51642906665,-27.22925320267, + -19.99999955296)); +#152 = SURFACE_CURVE('',#153,(#158,#169),.PCURVE_S2.); +#153 = CIRCLE('',#154,24.565238684828); +#154 = AXIS2_PLACEMENT_3D('',#155,#156,#157); +#155 = CARTESIAN_POINT('',(-74.12621243021,-47.1383620928, + -19.99999955296)); +#156 = DIRECTION('',(0.,0.,1.)); +#157 = DIRECTION('',(1.,0.,0.)); +#158 = PCURVE('',#30,#159); +#159 = DEFINITIONAL_REPRESENTATION('',(#160),#168); +#160 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#161,#162,#163,#164,#165,#166 +,#167),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#161 = CARTESIAN_POINT('',(-49.56097374539,-47.1383620928)); +#162 = CARTESIAN_POINT('',(-49.56097374539,-4.590120590624)); +#163 = CARTESIAN_POINT('',(-86.40883177263,-25.86424134171)); +#164 = CARTESIAN_POINT('',(-123.2566897998,-47.1383620928)); +#165 = CARTESIAN_POINT('',(-86.40883177263,-68.41248284389)); +#166 = CARTESIAN_POINT('',(-49.56097374539,-89.68660359498)); +#167 = CARTESIAN_POINT('',(-49.56097374539,-47.1383620928)); +#168 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#169 = PCURVE('',#170,#175); +#170 = CYLINDRICAL_SURFACE('',#171,24.565238684828); +#171 = AXIS2_PLACEMENT_3D('',#172,#173,#174); +#172 = CARTESIAN_POINT('',(-74.12621243021,-47.1383620928, + -19.99999955296)); +#173 = DIRECTION('',(0.,0.,1.)); +#174 = DIRECTION('',(1.,0.,0.)); +#175 = DEFINITIONAL_REPRESENTATION('',(#176),#179); +#176 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#177,#178),.UNSPECIFIED.,.F.,.F., + (2,2),(1.501387093594,2.196658099744),.PIECEWISE_BEZIER_KNOTS.); +#177 = CARTESIAN_POINT('',(1.501387093594,0.)); +#178 = CARTESIAN_POINT('',(2.196658099744,0.)); +#179 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#180 = ORIENTED_EDGE('',*,*,#181,.T.); +#181 = EDGE_CURVE('',#150,#182,#184,.T.); +#182 = VERTEX_POINT('',#183); +#183 = CARTESIAN_POINT('',(-88.51642906665,21.039046347141, + -19.99999955296)); +#184 = SURFACE_CURVE('',#185,(#190,#201),.PCURVE_S2.); +#185 = CIRCLE('',#186,29.778387016109); +#186 = AXIS2_PLACEMENT_3D('',#187,#188,#189); +#187 = CARTESIAN_POINT('',(-105.9604867346,-3.095103427768, + -19.99999955296)); +#188 = DIRECTION('',(0.,0.,-1.)); +#189 = DIRECTION('',(1.,0.,0.)); +#190 = PCURVE('',#30,#191); +#191 = DEFINITIONAL_REPRESENTATION('',(#192),#200); +#192 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#193,#194,#195,#196,#197,#198 +,#199),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#193 = CARTESIAN_POINT('',(-76.18209971851,-3.095103427768)); +#194 = CARTESIAN_POINT('',(-76.18209971851,-54.67278270711)); +#195 = CARTESIAN_POINT('',(-120.8496802426,-28.88394306744)); +#196 = CARTESIAN_POINT('',(-165.5172607668,-3.095103427768)); +#197 = CARTESIAN_POINT('',(-120.8496802426,22.693736211908)); +#198 = CARTESIAN_POINT('',(-76.18209971851,48.482575851583)); +#199 = CARTESIAN_POINT('',(-76.18209971851,-3.095103427768)); +#200 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#201 = PCURVE('',#202,#207); +#202 = CYLINDRICAL_SURFACE('',#203,29.778387016109); +#203 = AXIS2_PLACEMENT_3D('',#204,#205,#206); +#204 = CARTESIAN_POINT('',(-105.9604867346,-3.095103427768, + -19.99999955296)); +#205 = DIRECTION('',(0.,0.,-1.)); +#206 = DIRECTION('',(1.,0.,0.)); +#207 = DEFINITIONAL_REPRESENTATION('',(#208),#211); +#208 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#209,#210),.UNSPECIFIED.,.F.,.F., + (2,2),(0.944934553846,5.338250753333),.PIECEWISE_BEZIER_KNOTS.); +#209 = CARTESIAN_POINT('',(0.944934553846,0.)); +#210 = CARTESIAN_POINT('',(5.338250753333,0.)); +#211 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#212 = ORIENTED_EDGE('',*,*,#213,.T.); +#213 = EDGE_CURVE('',#182,#214,#216,.T.); +#214 = VERTEX_POINT('',#215); +#215 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + -19.99999955296)); +#216 = SURFACE_CURVE('',#217,(#222,#233),.PCURVE_S2.); +#217 = CIRCLE('',#218,20.41914254867); +#218 = AXIS2_PLACEMENT_3D('',#219,#220,#221); +#219 = CARTESIAN_POINT('',(-76.55497863763,37.587915977932, + -19.99999955296)); +#220 = DIRECTION('',(0.,0.,1.)); +#221 = DIRECTION('',(1.,0.,0.)); +#222 = PCURVE('',#30,#223); +#223 = DEFINITIONAL_REPRESENTATION('',(#224),#232); +#224 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#225,#226,#227,#228,#229,#230 +,#231),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#225 = CARTESIAN_POINT('',(-56.13583608896,37.587915977932)); +#226 = CARTESIAN_POINT('',(-56.13583608896,72.954908319219)); +#227 = CARTESIAN_POINT('',(-86.76454991196,55.271412148575)); +#228 = CARTESIAN_POINT('',(-117.3932637349,37.587915977932)); +#229 = CARTESIAN_POINT('',(-86.76454991196,19.904419807288)); +#230 = CARTESIAN_POINT('',(-56.13583608896,2.220923636644)); +#231 = CARTESIAN_POINT('',(-56.13583608896,37.587915977932)); +#232 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#233 = PCURVE('',#234,#239); +#234 = CYLINDRICAL_SURFACE('',#235,20.41914254867); +#235 = AXIS2_PLACEMENT_3D('',#236,#237,#238); +#236 = CARTESIAN_POINT('',(-76.55497863763,37.587915977932, + -19.99999955296)); +#237 = DIRECTION('',(0.,0.,1.)); +#238 = DIRECTION('',(1.,0.,0.)); +#239 = DEFINITIONAL_REPRESENTATION('',(#240),#243); +#240 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#241,#242),.UNSPECIFIED.,.F.,.F., + (2,2),(4.086527207436,4.916177873213),.PIECEWISE_BEZIER_KNOTS.); +#241 = CARTESIAN_POINT('',(4.086527207436,0.)); +#242 = CARTESIAN_POINT('',(4.916177873213,0.)); +#243 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#244 = ORIENTED_EDGE('',*,*,#245,.T.); +#245 = EDGE_CURVE('',#214,#19,#246,.T.); +#246 = SURFACE_CURVE('',#247,(#251,#258),.PCURVE_S2.); +#247 = LINE('',#248,#249); +#248 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + -19.99999955296)); +#249 = VECTOR('',#250,1.); +#250 = DIRECTION('',(0.997121794488,7.581640296081E-02,0.)); +#251 = PCURVE('',#30,#252); +#252 = DEFINITIONAL_REPRESENTATION('',(#253),#257); +#253 = LINE('',#254,#255); +#254 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011)); +#255 = VECTOR('',#256,1.); +#256 = DIRECTION('',(0.997121794488,7.581640296081E-02)); +#257 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#258 = PCURVE('',#259,#264); +#259 = PLANE('',#260); +#260 = AXIS2_PLACEMENT_3D('',#261,#262,#263); +#261 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + -19.99999955296)); +#262 = DIRECTION('',(-7.581640296081E-02,0.997121794488,0.)); +#263 = DIRECTION('',(0.997121794488,7.581640296081E-02,0.)); +#264 = DEFINITIONAL_REPRESENTATION('',(#265),#269); +#265 = LINE('',#266,#267); +#266 = CARTESIAN_POINT('',(0.,-3.552713678801E-14)); +#267 = VECTOR('',#268,1.); +#268 = DIRECTION('',(1.,0.)); +#269 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#270 = FACE_BOUND('',#271,.F.); +#271 = EDGE_LOOP('',(#272)); +#272 = ORIENTED_EDGE('',*,*,#273,.T.); +#273 = EDGE_CURVE('',#274,#274,#276,.T.); +#274 = VERTEX_POINT('',#275); +#275 = CARTESIAN_POINT('',(-91.4143372247,-2.809300087392, + -19.99999955296)); +#276 = SURFACE_CURVE('',#277,(#282,#293),.PCURVE_S2.); +#277 = CIRCLE('',#278,15.057678156153); +#278 = AXIS2_PLACEMENT_3D('',#279,#280,#281); +#279 = CARTESIAN_POINT('',(-106.4720153808,-2.809300087392, + -19.99999955296)); +#280 = DIRECTION('',(0.,0.,-1.)); +#281 = DIRECTION('',(0.,1.,0.)); +#282 = PCURVE('',#30,#283); +#283 = DEFINITIONAL_REPRESENTATION('',(#284),#292); +#284 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#285,#286,#287,#288,#289,#290 +,#291),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#285 = CARTESIAN_POINT('',(-106.4720153808,12.24837806876)); +#286 = CARTESIAN_POINT('',(-80.39135177038,12.24837806876)); +#287 = CARTESIAN_POINT('',(-93.43168357562,-10.33813916546)); +#288 = CARTESIAN_POINT('',(-106.4720153808,-32.92465639969)); +#289 = CARTESIAN_POINT('',(-119.512347186,-10.33813916546)); +#290 = CARTESIAN_POINT('',(-132.5526789913,12.24837806876)); +#291 = CARTESIAN_POINT('',(-106.4720153808,12.24837806876)); +#292 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#293 = PCURVE('',#294,#299); +#294 = CYLINDRICAL_SURFACE('',#295,15.057678156153); +#295 = AXIS2_PLACEMENT_3D('',#296,#297,#298); +#296 = CARTESIAN_POINT('',(-106.4720153808,-2.809300087392, + -40.00019910593)); +#297 = DIRECTION('',(0.,0.,1.)); +#298 = DIRECTION('',(1.,0.,0.)); +#299 = DEFINITIONAL_REPRESENTATION('',(#300),#303); +#300 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#301,#302),.UNSPECIFIED.,.F.,.F., + (2,2),(1.570796326795,7.853981633974),.PIECEWISE_BEZIER_KNOTS.); +#301 = CARTESIAN_POINT('',(6.28318530718,20.000199552965)); +#302 = CARTESIAN_POINT('',(0.,20.000199552965)); +#303 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#304 = FACE_BOUND('',#305,.F.); +#305 = EDGE_LOOP('',(#306)); +#306 = ORIENTED_EDGE('',*,*,#307,.T.); +#307 = EDGE_CURVE('',#308,#308,#310,.T.); +#308 = VERTEX_POINT('',#309); +#309 = CARTESIAN_POINT('',(141.97662545896,-4.606760106981, + -19.99999955296)); +#310 = SURFACE_CURVE('',#311,(#316,#327),.PCURVE_S2.); +#311 = CIRCLE('',#312,23.40416683412); +#312 = AXIS2_PLACEMENT_3D('',#313,#314,#315); +#313 = CARTESIAN_POINT('',(118.57245862484,-4.606760106981, + -19.99999955296)); +#314 = DIRECTION('',(0.,0.,-1.)); +#315 = DIRECTION('',(0.,1.,0.)); +#316 = PCURVE('',#30,#317); +#317 = DEFINITIONAL_REPRESENTATION('',(#318),#326); +#318 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#319,#320,#321,#322,#323,#324 +,#325),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#319 = CARTESIAN_POINT('',(118.57245862484,18.797406727139)); +#320 = CARTESIAN_POINT('',(159.10966469035,18.797406727139)); +#321 = CARTESIAN_POINT('',(138.84106165759,-16.30884352404)); +#322 = CARTESIAN_POINT('',(118.57245862484,-51.41509377522)); +#323 = CARTESIAN_POINT('',(98.303855592083,-16.30884352404)); +#324 = CARTESIAN_POINT('',(78.035252559326,18.797406727139)); +#325 = CARTESIAN_POINT('',(118.57245862484,18.797406727139)); +#326 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#327 = PCURVE('',#328,#333); +#328 = CYLINDRICAL_SURFACE('',#329,23.40416683412); +#329 = AXIS2_PLACEMENT_3D('',#330,#331,#332); +#330 = CARTESIAN_POINT('',(118.57245862484,-4.606760106981, + -40.00019910593)); +#331 = DIRECTION('',(0.,0.,1.)); +#332 = DIRECTION('',(1.,0.,0.)); +#333 = DEFINITIONAL_REPRESENTATION('',(#334),#337); +#334 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#335,#336),.UNSPECIFIED.,.F.,.F., + (2,2),(1.570796326795,7.853981633974),.PIECEWISE_BEZIER_KNOTS.); +#335 = CARTESIAN_POINT('',(6.28318530718,20.000199552965)); +#336 = CARTESIAN_POINT('',(0.,20.000199552965)); +#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#338 = ADVANCED_FACE('',(#339),#46,.F.); +#339 = FACE_BOUND('',#340,.T.); +#340 = EDGE_LOOP('',(#341,#363,#395,#414)); +#341 = ORIENTED_EDGE('',*,*,#342,.T.); +#342 = EDGE_CURVE('',#19,#343,#345,.T.); +#343 = VERTEX_POINT('',#344); +#344 = CARTESIAN_POINT('',(63.609212636948,27.934517711401, + 19.999999552965)); +#345 = SURFACE_CURVE('',#346,(#350,#356),.PCURVE_S2.); +#346 = LINE('',#347,#348); +#347 = CARTESIAN_POINT('',(63.609212636948,27.934517711401, + -19.99999955296)); +#348 = VECTOR('',#349,1.); +#349 = DIRECTION('',(0.,0.,1.)); +#350 = PCURVE('',#46,#351); +#351 = DEFINITIONAL_REPRESENTATION('',(#352),#355); +#352 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#353,#354),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#353 = CARTESIAN_POINT('',(4.788278205588,0.)); +#354 = CARTESIAN_POINT('',(4.788278205588,39.99999910593)); +#355 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#356 = PCURVE('',#259,#357); +#357 = DEFINITIONAL_REPRESENTATION('',(#358),#362); +#358 = LINE('',#359,#360); +#359 = CARTESIAN_POINT('',(136.42439686482,0.)); +#360 = VECTOR('',#361,1.); +#361 = DIRECTION('',(0.,-1.)); +#362 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#363 = ORIENTED_EDGE('',*,*,#364,.T.); +#364 = EDGE_CURVE('',#343,#365,#367,.T.); +#365 = VERTEX_POINT('',#366); +#366 = CARTESIAN_POINT('',(93.497879803181,36.745399236679, + 19.999999552965)); +#367 = SURFACE_CURVE('',#368,(#373,#379),.PCURVE_S2.); +#368 = CIRCLE('',#369,74.466478447737); +#369 = AXIS2_PLACEMENT_3D('',#370,#371,#372); +#370 = CARTESIAN_POINT('',(57.963432099881,102.18666633037, + 19.999999552965)); +#371 = DIRECTION('',(0.,0.,1.)); +#372 = DIRECTION('',(1.,0.,0.)); +#373 = PCURVE('',#46,#374); +#374 = DEFINITIONAL_REPRESENTATION('',(#375),#378); +#375 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#376,#377),.UNSPECIFIED.,.F.,.F., + (2,2),(4.788278205588,5.209840138517),.PIECEWISE_BEZIER_KNOTS.); +#376 = CARTESIAN_POINT('',(4.788278205588,39.99999910593)); +#377 = CARTESIAN_POINT('',(5.209840138517,39.99999910593)); +#378 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#379 = PCURVE('',#380,#385); +#380 = PLANE('',#381); +#381 = AXIS2_PLACEMENT_3D('',#382,#383,#384); +#382 = CARTESIAN_POINT('',(0.,0.,19.999999552965)); +#383 = DIRECTION('',(0.,0.,1.)); +#384 = DIRECTION('',(1.,0.,0.)); +#385 = DEFINITIONAL_REPRESENTATION('',(#386),#394); +#386 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#387,#388,#389,#390,#391,#392 +,#393),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#387 = CARTESIAN_POINT('',(132.42991054761,102.18666633037)); +#388 = CARTESIAN_POINT('',(132.42991054761,231.16639046259)); +#389 = CARTESIAN_POINT('',(20.730192876013,166.67652839648)); +#390 = CARTESIAN_POINT('',(-90.96952479559,102.18666633037)); +#391 = CARTESIAN_POINT('',(20.730192876013,37.696804264271)); +#392 = CARTESIAN_POINT('',(132.42991054761,-26.79305780183)); +#393 = CARTESIAN_POINT('',(132.42991054761,102.18666633037)); +#394 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#395 = ORIENTED_EDGE('',*,*,#396,.F.); +#396 = EDGE_CURVE('',#21,#365,#397,.T.); +#397 = SURFACE_CURVE('',#398,(#402,#408),.PCURVE_S2.); +#398 = LINE('',#399,#400); +#399 = CARTESIAN_POINT('',(93.497879803181,36.745399236679, + -19.99999955296)); +#400 = VECTOR('',#401,1.); +#401 = DIRECTION('',(0.,0.,1.)); +#402 = PCURVE('',#46,#403); +#403 = DEFINITIONAL_REPRESENTATION('',(#404),#407); +#404 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#405,#406),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#405 = CARTESIAN_POINT('',(5.209840138517,0.)); +#406 = CARTESIAN_POINT('',(5.209840138517,39.99999910593)); +#407 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#408 = PCURVE('',#78,#409); +#409 = DEFINITIONAL_REPRESENTATION('',(#410),#413); +#410 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#411,#412),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#411 = CARTESIAN_POINT('',(4.214937822253,0.)); +#412 = CARTESIAN_POINT('',(4.214937822253,-39.99999910593)); +#413 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#414 = ORIENTED_EDGE('',*,*,#18,.F.); +#415 = ADVANCED_FACE('',(#416),#78,.T.); +#416 = FACE_BOUND('',#417,.T.); +#417 = EDGE_LOOP('',(#418,#419,#446,#465)); +#418 = ORIENTED_EDGE('',*,*,#396,.T.); +#419 = ORIENTED_EDGE('',*,*,#420,.T.); +#420 = EDGE_CURVE('',#365,#421,#423,.T.); +#421 = VERTEX_POINT('',#422); +#422 = CARTESIAN_POINT('',(93.497879803181,-41.78636148572, + 19.999999552965)); +#423 = SURFACE_CURVE('',#424,(#429,#435),.PCURVE_S2.); +#424 = CIRCLE('',#425,44.68116165083); +#425 = AXIS2_PLACEMENT_3D('',#426,#427,#428); +#426 = CARTESIAN_POINT('',(114.81915663942,-2.52048112452, + 19.999999552965)); +#427 = DIRECTION('',(0.,0.,-1.)); +#428 = DIRECTION('',(1.,0.,0.)); +#429 = PCURVE('',#78,#430); +#430 = DEFINITIONAL_REPRESENTATION('',(#431),#434); +#431 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#432,#433),.UNSPECIFIED.,.F.,.F., + (2,2),(4.214937822253,8.351432792106),.PIECEWISE_BEZIER_KNOTS.); +#432 = CARTESIAN_POINT('',(4.214937822253,-39.99999910593)); +#433 = CARTESIAN_POINT('',(8.351432792106,-39.99999910593)); +#434 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#435 = PCURVE('',#380,#436); +#436 = DEFINITIONAL_REPRESENTATION('',(#437),#445); +#437 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#438,#439,#440,#441,#442,#443 +,#444),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#438 = CARTESIAN_POINT('',(159.50031829025,-2.52048112452)); +#439 = CARTESIAN_POINT('',(159.50031829025,-79.91052324495)); +#440 = CARTESIAN_POINT('',(92.478575814005,-41.21550218473)); +#441 = CARTESIAN_POINT('',(25.45683333776,-2.52048112452)); +#442 = CARTESIAN_POINT('',(92.478575814005,36.174539935697)); +#443 = CARTESIAN_POINT('',(159.50031829025,74.869560995915)); +#444 = CARTESIAN_POINT('',(159.50031829025,-2.52048112452)); +#445 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#446 = ORIENTED_EDGE('',*,*,#447,.F.); +#447 = EDGE_CURVE('',#58,#421,#448,.T.); +#448 = SURFACE_CURVE('',#449,(#453,#459),.PCURVE_S2.); +#449 = LINE('',#450,#451); +#450 = CARTESIAN_POINT('',(93.497879803181,-41.78636148572, + -19.99999955296)); +#451 = VECTOR('',#452,1.); +#452 = DIRECTION('',(0.,0.,1.)); +#453 = PCURVE('',#78,#454); +#454 = DEFINITIONAL_REPRESENTATION('',(#455),#458); +#455 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#456,#457),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#456 = CARTESIAN_POINT('',(8.351432792106,0.)); +#457 = CARTESIAN_POINT('',(8.351432792106,-39.99999910593)); +#458 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#459 = PCURVE('',#110,#460); +#460 = DEFINITIONAL_REPRESENTATION('',(#461),#464); +#461 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#462,#463),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#462 = CARTESIAN_POINT('',(1.073345168663,0.)); +#463 = CARTESIAN_POINT('',(1.073345168663,39.99999910593)); +#464 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#465 = ORIENTED_EDGE('',*,*,#57,.F.); +#466 = ADVANCED_FACE('',(#467),#110,.F.); +#467 = FACE_BOUND('',#468,.T.); +#468 = EDGE_LOOP('',(#469,#470,#497,#517)); +#469 = ORIENTED_EDGE('',*,*,#447,.T.); +#470 = ORIENTED_EDGE('',*,*,#471,.T.); +#471 = EDGE_CURVE('',#421,#472,#474,.T.); +#472 = VERTEX_POINT('',#473); +#473 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + 19.999999552965)); +#474 = SURFACE_CURVE('',#475,(#480,#486),.PCURVE_S2.); +#475 = CIRCLE('',#476,84.24770250966); +#476 = AXIS2_PLACEMENT_3D('',#477,#478,#479); +#477 = CARTESIAN_POINT('',(53.295957524102,-115.8233848133, + 19.999999552965)); +#478 = DIRECTION('',(0.,0.,1.)); +#479 = DIRECTION('',(1.,0.,0.)); +#480 = PCURVE('',#110,#481); +#481 = DEFINITIONAL_REPRESENTATION('',(#482),#485); +#482 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#483,#484),.UNSPECIFIED.,.F.,.F., + (2,2),(1.073345168663,1.501387093594),.PIECEWISE_BEZIER_KNOTS.); +#483 = CARTESIAN_POINT('',(1.073345168663,39.99999910593)); +#484 = CARTESIAN_POINT('',(1.501387093594,39.99999910593)); +#485 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#486 = PCURVE('',#380,#487); +#487 = DEFINITIONAL_REPRESENTATION('',(#488),#496); +#488 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#489,#490,#491,#492,#493,#494 +,#495),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#489 = CARTESIAN_POINT('',(137.54366003376,-115.8233848133)); +#490 = CARTESIAN_POINT('',(137.54366003376,30.097916354281)); +#491 = CARTESIAN_POINT('',(11.172106269272,-42.86273422955)); +#492 = CARTESIAN_POINT('',(-115.1994474952,-115.8233848133)); +#493 = CARTESIAN_POINT('',(11.172106269272,-188.7840353972)); +#494 = CARTESIAN_POINT('',(137.54366003376,-261.744685981)); +#495 = CARTESIAN_POINT('',(137.54366003376,-115.8233848133)); +#496 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#497 = ORIENTED_EDGE('',*,*,#498,.F.); +#498 = EDGE_CURVE('',#90,#472,#499,.T.); +#499 = SURFACE_CURVE('',#500,(#504,#510),.PCURVE_S2.); +#500 = LINE('',#501,#502); +#501 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + -19.99999955296)); +#502 = VECTOR('',#503,1.); +#503 = DIRECTION('',(0.,0.,1.)); +#504 = PCURVE('',#110,#505); +#505 = DEFINITIONAL_REPRESENTATION('',(#506),#509); +#506 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#507,#508),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#507 = CARTESIAN_POINT('',(1.501387093594,0.)); +#508 = CARTESIAN_POINT('',(1.501387093594,39.99999910593)); +#509 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#510 = PCURVE('',#137,#511); +#511 = DEFINITIONAL_REPRESENTATION('',(#512),#516); +#512 = LINE('',#513,#514); +#513 = CARTESIAN_POINT('',(0.,0.)); +#514 = VECTOR('',#515,1.); +#515 = DIRECTION('',(0.,-1.)); +#516 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#517 = ORIENTED_EDGE('',*,*,#89,.F.); +#518 = ADVANCED_FACE('',(#519),#137,.T.); +#519 = FACE_BOUND('',#520,.T.); +#520 = EDGE_LOOP('',(#521,#522,#545,#565)); +#521 = ORIENTED_EDGE('',*,*,#498,.T.); +#522 = ORIENTED_EDGE('',*,*,#523,.T.); +#523 = EDGE_CURVE('',#472,#524,#526,.T.); +#524 = VERTEX_POINT('',#525); +#525 = CARTESIAN_POINT('',(-72.42252677679,-22.63227291405, + 19.999999552965)); +#526 = SURFACE_CURVE('',#527,(#531,#538),.PCURVE_S2.); +#527 = LINE('',#528,#529); +#528 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + 19.999999552965)); +#529 = VECTOR('',#530,1.); +#530 = DIRECTION('',(-0.997592146088,6.935351515554E-02,0.)); +#531 = PCURVE('',#137,#532); +#532 = DEFINITIONAL_REPRESENTATION('',(#533),#537); +#533 = LINE('',#534,#535); +#534 = CARTESIAN_POINT('',(0.,-39.99999910593)); +#535 = VECTOR('',#536,1.); +#536 = DIRECTION('',(1.,0.)); +#537 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#538 = PCURVE('',#380,#539); +#539 = DEFINITIONAL_REPRESENTATION('',(#540),#544); +#540 = LINE('',#541,#542); +#541 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384)); +#542 = VECTOR('',#543,1.); +#543 = DIRECTION('',(-0.997592146088,6.935351515554E-02)); +#544 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#545 = ORIENTED_EDGE('',*,*,#546,.F.); +#546 = EDGE_CURVE('',#122,#524,#547,.T.); +#547 = SURFACE_CURVE('',#548,(#552,#559),.PCURVE_S2.); +#548 = LINE('',#549,#550); +#549 = CARTESIAN_POINT('',(-72.42252677679,-22.63227291405, + -19.99999955296)); +#550 = VECTOR('',#551,1.); +#551 = DIRECTION('',(0.,0.,1.)); +#552 = PCURVE('',#137,#553); +#553 = DEFINITIONAL_REPRESENTATION('',(#554),#558); +#554 = LINE('',#555,#556); +#555 = CARTESIAN_POINT('',(131.87890374807,0.)); +#556 = VECTOR('',#557,1.); +#557 = DIRECTION('',(0.,-1.)); +#558 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#559 = PCURVE('',#170,#560); +#560 = DEFINITIONAL_REPRESENTATION('',(#561),#564); +#561 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#562,#563),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#562 = CARTESIAN_POINT('',(1.501387093594,0.)); +#563 = CARTESIAN_POINT('',(1.501387093594,39.99999910593)); +#564 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#565 = ORIENTED_EDGE('',*,*,#121,.F.); +#566 = ADVANCED_FACE('',(#567),#170,.F.); +#567 = FACE_BOUND('',#568,.T.); +#568 = EDGE_LOOP('',(#569,#570,#597,#616)); +#569 = ORIENTED_EDGE('',*,*,#546,.T.); +#570 = ORIENTED_EDGE('',*,*,#571,.T.); +#571 = EDGE_CURVE('',#524,#572,#574,.T.); +#572 = VERTEX_POINT('',#573); +#573 = CARTESIAN_POINT('',(-88.51642906665,-27.22925320267, + 19.999999552965)); +#574 = SURFACE_CURVE('',#575,(#580,#586),.PCURVE_S2.); +#575 = CIRCLE('',#576,24.565238684828); +#576 = AXIS2_PLACEMENT_3D('',#577,#578,#579); +#577 = CARTESIAN_POINT('',(-74.12621243021,-47.1383620928, + 19.999999552965)); +#578 = DIRECTION('',(0.,0.,1.)); +#579 = DIRECTION('',(1.,0.,0.)); +#580 = PCURVE('',#170,#581); +#581 = DEFINITIONAL_REPRESENTATION('',(#582),#585); +#582 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#583,#584),.UNSPECIFIED.,.F.,.F., + (2,2),(1.501387093594,2.196658099744),.PIECEWISE_BEZIER_KNOTS.); +#583 = CARTESIAN_POINT('',(1.501387093594,39.99999910593)); +#584 = CARTESIAN_POINT('',(2.196658099744,39.99999910593)); +#585 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#586 = PCURVE('',#380,#587); +#587 = DEFINITIONAL_REPRESENTATION('',(#588),#596); +#588 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#589,#590,#591,#592,#593,#594 +,#595),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#589 = CARTESIAN_POINT('',(-49.56097374539,-47.1383620928)); +#590 = CARTESIAN_POINT('',(-49.56097374539,-4.590120590624)); +#591 = CARTESIAN_POINT('',(-86.40883177263,-25.86424134171)); +#592 = CARTESIAN_POINT('',(-123.2566897998,-47.1383620928)); +#593 = CARTESIAN_POINT('',(-86.40883177263,-68.41248284389)); +#594 = CARTESIAN_POINT('',(-49.56097374539,-89.68660359498)); +#595 = CARTESIAN_POINT('',(-49.56097374539,-47.1383620928)); +#596 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#597 = ORIENTED_EDGE('',*,*,#598,.F.); +#598 = EDGE_CURVE('',#150,#572,#599,.T.); +#599 = SURFACE_CURVE('',#600,(#604,#610),.PCURVE_S2.); +#600 = LINE('',#601,#602); +#601 = CARTESIAN_POINT('',(-88.51642906665,-27.22925320267, + -19.99999955296)); +#602 = VECTOR('',#603,1.); +#603 = DIRECTION('',(0.,0.,1.)); +#604 = PCURVE('',#170,#605); +#605 = DEFINITIONAL_REPRESENTATION('',(#606),#609); +#606 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#607,#608),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#607 = CARTESIAN_POINT('',(2.196658099744,0.)); +#608 = CARTESIAN_POINT('',(2.196658099744,39.99999910593)); +#609 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#610 = PCURVE('',#202,#611); +#611 = DEFINITIONAL_REPRESENTATION('',(#612),#615); +#612 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#613,#614),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#613 = CARTESIAN_POINT('',(0.944934553846,0.)); +#614 = CARTESIAN_POINT('',(0.944934553846,-39.99999910593)); +#615 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#616 = ORIENTED_EDGE('',*,*,#149,.F.); +#617 = ADVANCED_FACE('',(#618),#202,.T.); +#618 = FACE_BOUND('',#619,.T.); +#619 = EDGE_LOOP('',(#620,#621,#648,#667)); +#620 = ORIENTED_EDGE('',*,*,#598,.T.); +#621 = ORIENTED_EDGE('',*,*,#622,.T.); +#622 = EDGE_CURVE('',#572,#623,#625,.T.); +#623 = VERTEX_POINT('',#624); +#624 = CARTESIAN_POINT('',(-88.51642906665,21.039046347141, + 19.999999552965)); +#625 = SURFACE_CURVE('',#626,(#631,#637),.PCURVE_S2.); +#626 = CIRCLE('',#627,29.778387016109); +#627 = AXIS2_PLACEMENT_3D('',#628,#629,#630); +#628 = CARTESIAN_POINT('',(-105.9604867346,-3.095103427768, + 19.999999552965)); +#629 = DIRECTION('',(0.,0.,-1.)); +#630 = DIRECTION('',(1.,0.,0.)); +#631 = PCURVE('',#202,#632); +#632 = DEFINITIONAL_REPRESENTATION('',(#633),#636); +#633 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#634,#635),.UNSPECIFIED.,.F.,.F., + (2,2),(0.944934553846,5.338250753333),.PIECEWISE_BEZIER_KNOTS.); +#634 = CARTESIAN_POINT('',(0.944934553846,-39.99999910593)); +#635 = CARTESIAN_POINT('',(5.338250753333,-39.99999910593)); +#636 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#637 = PCURVE('',#380,#638); +#638 = DEFINITIONAL_REPRESENTATION('',(#639),#647); +#639 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#640,#641,#642,#643,#644,#645 +,#646),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#640 = CARTESIAN_POINT('',(-76.18209971851,-3.095103427768)); +#641 = CARTESIAN_POINT('',(-76.18209971851,-54.67278270711)); +#642 = CARTESIAN_POINT('',(-120.8496802426,-28.88394306744)); +#643 = CARTESIAN_POINT('',(-165.5172607668,-3.095103427768)); +#644 = CARTESIAN_POINT('',(-120.8496802426,22.693736211908)); +#645 = CARTESIAN_POINT('',(-76.18209971851,48.482575851583)); +#646 = CARTESIAN_POINT('',(-76.18209971851,-3.095103427768)); +#647 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#648 = ORIENTED_EDGE('',*,*,#649,.F.); +#649 = EDGE_CURVE('',#182,#623,#650,.T.); +#650 = SURFACE_CURVE('',#651,(#655,#661),.PCURVE_S2.); +#651 = LINE('',#652,#653); +#652 = CARTESIAN_POINT('',(-88.51642906665,21.039046347141, + -19.99999955296)); +#653 = VECTOR('',#654,1.); +#654 = DIRECTION('',(0.,0.,1.)); +#655 = PCURVE('',#202,#656); +#656 = DEFINITIONAL_REPRESENTATION('',(#657),#660); +#657 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#658,#659),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#658 = CARTESIAN_POINT('',(5.338250753333,0.)); +#659 = CARTESIAN_POINT('',(5.338250753333,-39.99999910593)); +#660 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#661 = PCURVE('',#234,#662); +#662 = DEFINITIONAL_REPRESENTATION('',(#663),#666); +#663 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#664,#665),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#664 = CARTESIAN_POINT('',(4.086527207436,0.)); +#665 = CARTESIAN_POINT('',(4.086527207436,39.99999910593)); +#666 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#667 = ORIENTED_EDGE('',*,*,#181,.F.); +#668 = ADVANCED_FACE('',(#669),#234,.F.); +#669 = FACE_BOUND('',#670,.T.); +#670 = EDGE_LOOP('',(#671,#672,#699,#719)); +#671 = ORIENTED_EDGE('',*,*,#649,.T.); +#672 = ORIENTED_EDGE('',*,*,#673,.T.); +#673 = EDGE_CURVE('',#623,#674,#676,.T.); +#674 = VERTEX_POINT('',#675); +#675 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + 19.999999552965)); +#676 = SURFACE_CURVE('',#677,(#682,#688),.PCURVE_S2.); +#677 = CIRCLE('',#678,20.41914254867); +#678 = AXIS2_PLACEMENT_3D('',#679,#680,#681); +#679 = CARTESIAN_POINT('',(-76.55497863763,37.587915977932, + 19.999999552965)); +#680 = DIRECTION('',(0.,0.,1.)); +#681 = DIRECTION('',(1.,0.,0.)); +#682 = PCURVE('',#234,#683); +#683 = DEFINITIONAL_REPRESENTATION('',(#684),#687); +#684 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#685,#686),.UNSPECIFIED.,.F.,.F., + (2,2),(4.086527207436,4.916177873213),.PIECEWISE_BEZIER_KNOTS.); +#685 = CARTESIAN_POINT('',(4.086527207436,39.99999910593)); +#686 = CARTESIAN_POINT('',(4.916177873213,39.99999910593)); +#687 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#688 = PCURVE('',#380,#689); +#689 = DEFINITIONAL_REPRESENTATION('',(#690),#698); +#690 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#691,#692,#693,#694,#695,#696 +,#697),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#691 = CARTESIAN_POINT('',(-56.13583608896,37.587915977932)); +#692 = CARTESIAN_POINT('',(-56.13583608896,72.954908319219)); +#693 = CARTESIAN_POINT('',(-86.76454991196,55.271412148575)); +#694 = CARTESIAN_POINT('',(-117.3932637349,37.587915977932)); +#695 = CARTESIAN_POINT('',(-86.76454991196,19.904419807288)); +#696 = CARTESIAN_POINT('',(-56.13583608896,2.220923636644)); +#697 = CARTESIAN_POINT('',(-56.13583608896,37.587915977932)); +#698 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#699 = ORIENTED_EDGE('',*,*,#700,.F.); +#700 = EDGE_CURVE('',#214,#674,#701,.T.); +#701 = SURFACE_CURVE('',#702,(#706,#712),.PCURVE_S2.); +#702 = LINE('',#703,#704); +#703 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + -19.99999955296)); +#704 = VECTOR('',#705,1.); +#705 = DIRECTION('',(0.,0.,1.)); +#706 = PCURVE('',#234,#707); +#707 = DEFINITIONAL_REPRESENTATION('',(#708),#711); +#708 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#709,#710),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#709 = CARTESIAN_POINT('',(4.916177873213,0.)); +#710 = CARTESIAN_POINT('',(4.916177873213,39.99999910593)); +#711 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#712 = PCURVE('',#259,#713); +#713 = DEFINITIONAL_REPRESENTATION('',(#714),#718); +#714 = LINE('',#715,#716); +#715 = CARTESIAN_POINT('',(0.,0.)); +#716 = VECTOR('',#717,1.); +#717 = DIRECTION('',(0.,-1.)); +#718 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#719 = ORIENTED_EDGE('',*,*,#213,.F.); +#720 = ADVANCED_FACE('',(#721),#259,.T.); +#721 = FACE_BOUND('',#722,.T.); +#722 = EDGE_LOOP('',(#723,#724,#745,#746)); +#723 = ORIENTED_EDGE('',*,*,#700,.T.); +#724 = ORIENTED_EDGE('',*,*,#725,.T.); +#725 = EDGE_CURVE('',#674,#343,#726,.T.); +#726 = SURFACE_CURVE('',#727,(#731,#738),.PCURVE_S2.); +#727 = LINE('',#728,#729); +#728 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + 19.999999552965)); +#729 = VECTOR('',#730,1.); +#730 = DIRECTION('',(0.997121794488,7.581640296081E-02,0.)); +#731 = PCURVE('',#259,#732); +#732 = DEFINITIONAL_REPRESENTATION('',(#733),#737); +#733 = LINE('',#734,#735); +#734 = CARTESIAN_POINT('',(0.,-39.99999910593)); +#735 = VECTOR('',#736,1.); +#736 = DIRECTION('',(1.,0.)); +#737 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#738 = PCURVE('',#380,#739); +#739 = DEFINITIONAL_REPRESENTATION('',(#740),#744); +#740 = LINE('',#741,#742); +#741 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011)); +#742 = VECTOR('',#743,1.); +#743 = DIRECTION('',(0.997121794488,7.581640296081E-02)); +#744 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#745 = ORIENTED_EDGE('',*,*,#342,.F.); +#746 = ORIENTED_EDGE('',*,*,#245,.F.); +#747 = ADVANCED_FACE('',(#748),#294,.F.); +#748 = FACE_BOUND('',#749,.T.); +#749 = EDGE_LOOP('',(#750,#771,#796,#797)); +#750 = ORIENTED_EDGE('',*,*,#751,.T.); +#751 = EDGE_CURVE('',#274,#752,#754,.T.); +#752 = VERTEX_POINT('',#753); +#753 = CARTESIAN_POINT('',(-91.4143372247,-2.809300087392, + 19.999999552965)); +#754 = SEAM_CURVE('',#755,(#759,#765),.PCURVE_S2.); +#755 = LINE('',#756,#757); +#756 = CARTESIAN_POINT('',(-91.4143372247,-2.809300087392, + -40.00019910593)); +#757 = VECTOR('',#758,1.); +#758 = DIRECTION('',(0.,0.,1.)); +#759 = PCURVE('',#294,#760); +#760 = DEFINITIONAL_REPRESENTATION('',(#761),#764); +#761 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#762,#763),.UNSPECIFIED.,.F.,.F., + (2,2),(20.000199552965,60.000198658895),.PIECEWISE_BEZIER_KNOTS.); +#762 = CARTESIAN_POINT('',(0.,20.000199552965)); +#763 = CARTESIAN_POINT('',(0.,60.000198658895)); +#764 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#765 = PCURVE('',#294,#766); +#766 = DEFINITIONAL_REPRESENTATION('',(#767),#770); +#767 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#768,#769),.UNSPECIFIED.,.F.,.F., + (2,2),(20.000199552965,60.000198658895),.PIECEWISE_BEZIER_KNOTS.); +#768 = CARTESIAN_POINT('',(6.28318530718,20.000199552965)); +#769 = CARTESIAN_POINT('',(6.28318530718,60.000198658895)); +#770 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#771 = ORIENTED_EDGE('',*,*,#772,.F.); +#772 = EDGE_CURVE('',#752,#752,#773,.T.); +#773 = SURFACE_CURVE('',#774,(#779,#785),.PCURVE_S2.); +#774 = CIRCLE('',#775,15.057678156153); +#775 = AXIS2_PLACEMENT_3D('',#776,#777,#778); +#776 = CARTESIAN_POINT('',(-106.4720153808,-2.809300087392, + 19.999999552965)); +#777 = DIRECTION('',(0.,0.,-1.)); +#778 = DIRECTION('',(0.,1.,0.)); +#779 = PCURVE('',#294,#780); +#780 = DEFINITIONAL_REPRESENTATION('',(#781),#784); +#781 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#782,#783),.UNSPECIFIED.,.F.,.F., + (2,2),(1.570796326795,7.853981633974),.PIECEWISE_BEZIER_KNOTS.); +#782 = CARTESIAN_POINT('',(6.28318530718,60.000198658895)); +#783 = CARTESIAN_POINT('',(0.,60.000198658895)); +#784 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#785 = PCURVE('',#380,#786); +#786 = DEFINITIONAL_REPRESENTATION('',(#787),#795); +#787 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#788,#789,#790,#791,#792,#793 +,#794),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#788 = CARTESIAN_POINT('',(-106.4720153808,12.24837806876)); +#789 = CARTESIAN_POINT('',(-80.39135177038,12.24837806876)); +#790 = CARTESIAN_POINT('',(-93.43168357562,-10.33813916546)); +#791 = CARTESIAN_POINT('',(-106.4720153808,-32.92465639969)); +#792 = CARTESIAN_POINT('',(-119.512347186,-10.33813916546)); +#793 = CARTESIAN_POINT('',(-132.5526789913,12.24837806876)); +#794 = CARTESIAN_POINT('',(-106.4720153808,12.24837806876)); +#795 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#796 = ORIENTED_EDGE('',*,*,#751,.F.); +#797 = ORIENTED_EDGE('',*,*,#273,.T.); +#798 = ADVANCED_FACE('',(#799),#328,.F.); +#799 = FACE_BOUND('',#800,.T.); +#800 = EDGE_LOOP('',(#801,#822,#847,#848)); +#801 = ORIENTED_EDGE('',*,*,#802,.T.); +#802 = EDGE_CURVE('',#308,#803,#805,.T.); +#803 = VERTEX_POINT('',#804); +#804 = CARTESIAN_POINT('',(141.97662545896,-4.606760106981, + 19.999999552965)); +#805 = SEAM_CURVE('',#806,(#810,#816),.PCURVE_S2.); +#806 = LINE('',#807,#808); +#807 = CARTESIAN_POINT('',(141.97662545896,-4.606760106981, + -40.00019910593)); +#808 = VECTOR('',#809,1.); +#809 = DIRECTION('',(0.,0.,1.)); +#810 = PCURVE('',#328,#811); +#811 = DEFINITIONAL_REPRESENTATION('',(#812),#815); +#812 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#813,#814),.UNSPECIFIED.,.F.,.F., + (2,2),(20.000199552965,60.000198658895),.PIECEWISE_BEZIER_KNOTS.); +#813 = CARTESIAN_POINT('',(0.,20.000199552965)); +#814 = CARTESIAN_POINT('',(0.,60.000198658895)); +#815 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#816 = PCURVE('',#328,#817); +#817 = DEFINITIONAL_REPRESENTATION('',(#818),#821); +#818 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#819,#820),.UNSPECIFIED.,.F.,.F., + (2,2),(20.000199552965,60.000198658895),.PIECEWISE_BEZIER_KNOTS.); +#819 = CARTESIAN_POINT('',(6.28318530718,20.000199552965)); +#820 = CARTESIAN_POINT('',(6.28318530718,60.000198658895)); +#821 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#822 = ORIENTED_EDGE('',*,*,#823,.F.); +#823 = EDGE_CURVE('',#803,#803,#824,.T.); +#824 = SURFACE_CURVE('',#825,(#830,#836),.PCURVE_S2.); +#825 = CIRCLE('',#826,23.40416683412); +#826 = AXIS2_PLACEMENT_3D('',#827,#828,#829); +#827 = CARTESIAN_POINT('',(118.57245862484,-4.606760106981, + 19.999999552965)); +#828 = DIRECTION('',(0.,0.,-1.)); +#829 = DIRECTION('',(0.,1.,0.)); +#830 = PCURVE('',#328,#831); +#831 = DEFINITIONAL_REPRESENTATION('',(#832),#835); +#832 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#833,#834),.UNSPECIFIED.,.F.,.F., + (2,2),(1.570796326795,7.853981633974),.PIECEWISE_BEZIER_KNOTS.); +#833 = CARTESIAN_POINT('',(6.28318530718,60.000198658895)); +#834 = CARTESIAN_POINT('',(0.,60.000198658895)); +#835 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#836 = PCURVE('',#380,#837); +#837 = DEFINITIONAL_REPRESENTATION('',(#838),#846); +#838 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#839,#840,#841,#842,#843,#844 +,#845),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#839 = CARTESIAN_POINT('',(118.57245862484,18.797406727139)); +#840 = CARTESIAN_POINT('',(159.10966469035,18.797406727139)); +#841 = CARTESIAN_POINT('',(138.84106165759,-16.30884352404)); +#842 = CARTESIAN_POINT('',(118.57245862484,-51.41509377522)); +#843 = CARTESIAN_POINT('',(98.303855592083,-16.30884352404)); +#844 = CARTESIAN_POINT('',(78.035252559326,18.797406727139)); +#845 = CARTESIAN_POINT('',(118.57245862484,18.797406727139)); +#846 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#847 = ORIENTED_EDGE('',*,*,#802,.F.); +#848 = ORIENTED_EDGE('',*,*,#307,.T.); +#849 = ADVANCED_FACE('',(#850,#860,#863),#380,.T.); +#850 = FACE_BOUND('',#851,.F.); +#851 = EDGE_LOOP('',(#852,#853,#854,#855,#856,#857,#858,#859)); +#852 = ORIENTED_EDGE('',*,*,#364,.T.); +#853 = ORIENTED_EDGE('',*,*,#420,.T.); +#854 = ORIENTED_EDGE('',*,*,#471,.T.); +#855 = ORIENTED_EDGE('',*,*,#523,.T.); +#856 = ORIENTED_EDGE('',*,*,#571,.T.); +#857 = ORIENTED_EDGE('',*,*,#622,.T.); +#858 = ORIENTED_EDGE('',*,*,#673,.T.); +#859 = ORIENTED_EDGE('',*,*,#725,.T.); +#860 = FACE_BOUND('',#861,.T.); +#861 = EDGE_LOOP('',(#862)); +#862 = ORIENTED_EDGE('',*,*,#772,.T.); +#863 = FACE_BOUND('',#864,.T.); +#864 = EDGE_LOOP('',(#865)); +#865 = ORIENTED_EDGE('',*,*,#823,.T.); +#866 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#869)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#867,#868)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#867 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#868 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#869 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-04),#867, + 'distance_accuracy_value','Confusion accuracy'); +ENDSEC; +END-ISO-10303-21; + diff --git a/src/TEST_PY/non_regression/k21592_getAsso.py b/src/TEST_PY/non_regression/k21592_getAsso.py new file mode 100644 index 0000000..cb2ecdd --- /dev/null +++ b/src/TEST_PY/non_regression/k21592_getAsso.py @@ -0,0 +1,282 @@ +# -*- coding: latin-1 -*- +# Copyright (C) 2009-2012 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# Francis KLOSS : 2011-2012 : CEA-Saclay, DEN, DM2S, SFME, LGLS, F-91191 Gif-sur-Yvette, France +# ============================================================================================= + +import math + +import geompy +import hexablock + +# Construire le modèle de bloc +# ============================ + +doc = hexablock.addDocument("bielle") + +# Construire les 2 grilles cylindriques +# ------------------------------------- + +centre_pb = doc.addVertex(0, 0, 0) +centre_gb = doc.addVertex(7, 0, 0) + +angle_px = math.pi / 3 +vecteur_px = doc.addVector(math.cos(angle_px), math.sin(angle_px), 0) +vecteur_gx = doc.addVector(1, 0, 0) + +vecteur_z = doc.addVector(0, 0, 1) + +grille_p = doc.makeCylindrical(centre_pb, vecteur_px, vecteur_z, 1, 360, 1, 1, 3, 1, False) +grille_g = doc.makeCylindrical(centre_gb, vecteur_gx, vecteur_z, 1, 360, 1, 1, 3, 1, False) + +# Relier les 2 grilles +# -------------------- + +quad_p = grille_p.getQuadJK(1, 2, 0) +quad_g = grille_g.getQuadJK(1, 1, 0) + +point_p1 = grille_p.getVertexIJK(1, 0, 0) +point_p2 = grille_p.getVertexIJK(1, 2, 0) + +point_g1 = grille_g.getVertexIJK(1, 1, 0) +point_g2 = grille_g.getVertexIJK(1, 2, 0) + +prisme = doc.joinQuad(quad_p, quad_g, point_p1, point_g1, point_p2, point_g2, 3) + +# Charger la géométrie +# ==================== + +bielle = geompy.ImportSTEP("bielle.stp") + +# Sélectionner des sous-parties de la géométrie +# --------------------------------------------- + +sommets = geompy.SubShapeAllSortedCentres(bielle, geompy.ShapeType["VERTEX"]) + +sommets_petit = [ 6, 8, 7, 9 ] +sommets_grand = [ 10, 12, 11, 13 ] + +aretes = geompy.SubShapeAllSortedCentres(bielle, geompy.ShapeType["EDGE"]) + +aretes_petit = [ 7, 9, 8, 10 ] +aretes_grand = [ 19, 21, 20, 22 ] + +ga_pbcd = aretes[ 0] +ga_pbe = aretes[ 2] + +ga_phcd = aretes[ 1] +ga_phe = aretes[ 3] + +ga_gbcd = aretes[27] +ga_gbe = aretes[25] + +ga_ghcd = aretes[28] +ga_ghe = aretes[26] + +# Associer le modèle de bloc avec la géométrie +# ============================================ + +doc.setShape(bielle) + +# Netoyer les associations implicites du prisme +# --------------------------------------------- + +for i in xrange( prisme.countEdge() ): + em = prisme.getEdge(i) + if em != None: + em.clearAssociation() + +# Associer les cercles extérieurs +# ------------------------------- + +def cercle(grille, k, ge, p): + ms = grille.getVertexIJK(0, 0, k) + ma1 = grille.getEdgeJ(0, 2, k) + ma2 = grille.getEdgeJ(0, 1, k) + ma3 = grille.getEdgeJ(0, 0, k) + doc.associateClosedLine(ms, ma1, [ ma2, ma3 ], ge, p, False, []) + +cercle(grille_p, 0, ga_pbe, 5.0/6) +cercle(grille_p, 1, ga_phe, 5.0/6) + +cercle(grille_g, 0, ga_gbe, 0) +cercle(grille_g, 1, ga_ghe, 0) + +# Associer les arcs extérieurs (excentrés) +# ---------------------------------------- + +def arc(grille, i1, i2, k, ge): + ma1 = grille.getEdgeJ(1, i1, k) + ma2 = grille.getEdgeJ(1, i2, k) + doc.associateOpenedLine(ma1, [ ma2 ], ge, 0, [], 1) + +arc(grille_p, 1, 0, 0, ga_pbcd) +arc(grille_p, 1, 0, 1, ga_phcd) + +arc(grille_g, 0, 2, 0, ga_gbcd) +arc(grille_g, 0, 2, 1, ga_ghcd) + +# Associer les arcs de cercle de raccord +# -------------------------------------- + +hm = prisme.getHexa(0) +for i in xrange(0, 4): + em = hm.getEdge(i+8) + ga = aretes[ aretes_petit[i] ] + + em.addAssociation(ga, 0, 1) + +hm = prisme.getHexa(2) +for i in xrange(0, 4): + em = hm.getEdge(i+8) + ga = aretes[ aretes_grand[i] ] + +# Associer les sommets des arcs de cercle de raccord +# -------------------------------------------------- + +hm = prisme.getHexa(1) +for i in xrange(0, 4): + vm = hm.getVertex(i) + ga = sommets[ sommets_petit[i] ] + vm.setAssociation(ga) + +hm = prisme.getHexa(2) +for i in xrange(0, 4): + vm = hm.getVertex(i) + ga = sommets[ sommets_grand[i] ] + vm.setAssociation(ga) + +# Associer les arcs de cercle de raccord +# -------------------------------------- + +hm = prisme.getHexa(0) +for i in xrange(0, 4): + em = hm.getEdge(i+8) + ga = aretes[ aretes_petit[i] ] + em.clearAssociation() + em.addAssociation(ga, 0, 1) + +hm = prisme.getHexa(2) +for i in xrange(0, 4): + em = hm.getEdge(i+8) + ga = aretes[ aretes_grand[i] ] + em.clearAssociation() + em.addAssociation(ga, 0, 1) + +# Arrondir des associations implicites cylindriques +# ------------------------------------------------- + +for h, i, ech in [ [0, 0, 0.95], [0, 1, 0.95], [2, 2, 0.85], [2, 3, 0.85] ]: + hm = prisme.getHexa(h) + em = hm.getEdge(i) + va = em.getVertex(0).getAssociation() + vb = em.getVertex(1).getAssociation() + vax, vay, vaz = geompy.PointCoordinates(va) + vbx, vby, vbz = geompy.PointCoordinates(vb) + vmx = ( vax + vbx ) / 2.0 * ech + vmy = ( vay + vby ) / 2.0 + vmz = ( vaz + vbz ) / 2.0 + vm = geompy.MakeVertex(vmx, vmy, vmz) + eg = geompy.MakeArc(va, vm, vb) + em.clearAssociation() + em.addAssociation(eg, 0, 1) + +# Test getAsso sur les edges +nbedges = doc.countEdge () +for nro in range (nbedges) : + edge = doc.getEdge (nro) + assos = edge.getAssociations() + nbass = len (assos) + print " ... %d Edge = %s, nb asso = %d" % (nro, edge.getName(), nbass) + for na in range (nbass) : + print " ... Asso(", na, ") = ", assos[na] + + +# Mailler le modèle de bloc +# ========================= + +# Définir 5 groupes de faces +# -------------------------- + +groupe_petit = doc.addQuadGroup("Petit") +groupe_grand = doc.addQuadGroup("Grand") +groupe_bas = doc.addQuadGroup("Bas") +groupe_haut = doc.addQuadGroup("Haut") +groupe_contour = doc.addQuadGroup("Contour") + +# Constituer les groupes petit et grand +# ------------------------------------- + +for i in xrange(3): + groupe_petit.addElement( grille_p.getQuadJK(0, i, 0) ) + groupe_grand.addElement( grille_g.getQuadJK(0, i, 0) ) + +# Constituer les groupes bas et haut +# ---------------------------------- + +for i in xrange(3): + groupe_bas.addElement( grille_p.getQuadIJ(0, i, 0) ) + groupe_bas.addElement( grille_g.getQuadIJ(0, i, 0) ) + + groupe_haut.addElement( grille_p.getQuadIJ(0, i, 1) ) + groupe_haut.addElement( grille_g.getQuadIJ(0, i, 1) ) + +for i in xrange(3): + h = prisme.getHexa(i) + groupe_bas.addElement( h.getQuad(2) ) + groupe_haut.addElement( h.getQuad(3) ) + +# Constituer le groupe contour +# ---------------------------- + +for i in xrange(2): + groupe_contour.addElement( grille_p.getQuadJK(1, i, 0) ) + +for i in [0, 2]: + groupe_contour.addElement( grille_g.getQuadJK(1, i, 0) ) + +for i in xrange(3): + h = prisme.getHexa(i) + + groupe_contour.addElement( h.getQuad(4) ) + groupe_contour.addElement( h.getQuad(5) ) + +# Définir 3 groupes de volumes +# ---------------------------- + +groupe_petit = doc.addHexaGroup("Petit") +groupe_grand = doc.addHexaGroup("Grand") +groupe_prisme = doc.addHexaGroup("Prisme") + +for i in xrange(3): + groupe_petit.addElement( grille_p.getHexa(i) ) + groupe_grand.addElement( grille_g.getHexa(i) ) + +for i in xrange(3): + groupe_prisme.addElement( prisme.getHexa(i) ) + +# Mailler le modèle de bloc avec association +# ------------------------------------------ + +hexablock.addLaws(doc, 0.003, True) + +blocs = hexablock.mesh(doc) + +muv, mue, muq, muh = hexablock.dump(doc, blocs) diff --git a/src/TEST_PY/test_unit/bielle.brep b/src/TEST_PY/test_unit/bielle.brep new file mode 100644 index 0000000..c0f086e --- /dev/null +++ b/src/TEST_PY/test_unit/bielle.brep @@ -0,0 +1,639 @@ + +CASCADE Topology V1, (c) Matra-Datavision +Locations 0 +Curve2ds 32 +7 0 0 1 2 2 4.788278205588 0 5.2098401385170003 0 + 4.788278205588 2 5.2098401385170003 2 +7 0 0 1 2 2 4.2149378222529998 0 8.3514327921059994 0 + 4.2149378222529998 2 8.3514327921059994 2 +7 0 0 1 2 2 1.073345168663 0 1.5013870935939999 0 + 1.073345168663 2 1.5013870935939999 2 +7 0 0 1 2 2 1.5013870935939999 0 2.1966580997439999 0 + 1.5013870935939999 2 2.1966580997439999 2 +7 0 0 1 2 2 0.944934553846 0 5.3382507533329999 0 + 0.944934553846 2 5.3382507533329999 2 +7 0 0 1 2 2 4.0865272074360002 0 4.9161778732129999 0 + 4.0865272074360002 2 4.9161778732129999 2 +7 0 0 1 2 2 6.2831853071800001 0.020000199552965 0 0.020000199552965 + 1.570796326795 2 7.8539816339739996 2 +7 0 0 1 2 2 6.2831853071800001 0.020000199552965 0 0.020000199552965 + 1.570796326795 2 7.8539816339739996 2 +7 0 0 1 2 2 4.788278205588 0 4.788278205588 0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 4.788278205588 0.039999999105930002 5.2098401385170003 0.039999999105930002 + 4.788278205588 2 5.2098401385170003 2 +7 0 0 1 2 2 5.2098401385170003 0 5.2098401385170003 0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 4.2149378222529998 0 4.2149378222529998 -0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 4.2149378222529998 -0.039999999105930002 8.3514327921059994 -0.039999999105930002 + 4.2149378222529998 2 8.3514327921059994 2 +7 0 0 1 2 2 8.3514327921059994 0 8.3514327921059994 -0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 1.073345168663 0 1.073345168663 0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 1.073345168663 0.039999999105930002 1.5013870935939999 0.039999999105930002 + 1.073345168663 2 1.5013870935939999 2 +7 0 0 1 2 2 1.5013870935939999 0 1.5013870935939999 0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 1.5013870935939999 0 1.5013870935939999 0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 1.5013870935939999 0.039999999105930002 2.1966580997439999 0.039999999105930002 + 1.5013870935939999 2 2.1966580997439999 2 +7 0 0 1 2 2 2.1966580997439999 0 2.1966580997439999 0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 0.944934553846 0 0.944934553846 -0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 0.944934553846 -0.039999999105930002 5.3382507533329999 -0.039999999105930002 + 0.944934553846 2 5.3382507533329999 2 +7 0 0 1 2 2 5.3382507533329999 0 5.3382507533329999 -0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 4.0865272074360002 0 4.0865272074360002 0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 4.0865272074360002 0.039999999105930002 4.9161778732129999 0.039999999105930002 + 4.0865272074360002 2 4.9161778732129999 2 +7 0 0 1 2 2 4.9161778732129999 0 4.9161778732129999 0.039999999105930002 + 0 2 0.039999999105924999 2 +7 0 0 1 2 2 6.2831853071800001 0.020000199552965 6.2831853071800001 0.060000198658895006 + 0.020000199552970003 2 0.060000198658894999 2 +7 0 0 1 2 2 0 0.020000199552965 0 0.060000198658895006 + 0.020000199552970003 2 0.060000198658894999 2 +7 0 0 1 2 2 6.2831853071800001 0.060000198658895006 0 0.060000198658895006 + 1.570796326795 2 7.8539816339739996 2 +7 0 0 1 2 2 6.2831853071800001 0.020000199552965 6.2831853071800001 0.060000198658895006 + 0.020000199552970003 2 0.060000198658894999 2 +7 0 0 1 2 2 0 0.020000199552965 0 0.060000198658895006 + 0.020000199552970003 2 0.060000198658894999 2 +7 0 0 1 2 2 6.2831853071800001 0.060000198658895006 0 0.060000198658895006 + 1.570796326795 2 7.8539816339739996 2 +Curves 30 +2 0.057963432099881002 0.10218666633037 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 0.074466478447737003 +2 0.11481915663942001 -0.00252048112452 -0.019999999552959998 0 0 -1 1 0 0 0 -1 0 0.044681161650829998 +2 0.053295957524102003 -0.1158233848133 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 0.084247702509660002 +1 0.059138831836925004 -0.031778538463840003 -0.019999999552959998 -0.99759214608755542 0.069353515155509096 0 +2 -0.074126212430210003 -0.0471383620928 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 0.024565238684828 +2 -0.1059604867346 -0.0030951034277679999 -0.019999999552959998 0 0 -1 1 0 0 0 -1 0 0.029778387016109003 +2 -0.07655497863763 0.037587915977931999 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 0.02041914254867 +1 -0.072422526776789994 0.017591310665011 -0.019999999552959998 0.99712179448755867 0.075816402960776436 0 +2 -0.10647201538080001 -0.0028093000873920001 -0.019999999552959998 0 0 -1 0 1 0 1 -0 0 0.015057678156153002 +2 0.11857245862484 -0.0046067601069809993 -0.019999999552959998 0 0 -1 0 1 0 1 -0 0 0.023404166834120003 +1 0.063609212636948007 0.027934517711401 -0.019999999552959998 0 0 1 +2 0.057963432099881002 0.10218666633037 0.019999999552965001 0 0 1 1 0 -0 -0 1 0 0.074466478447737003 +1 0.093497879803181 0.036745399236679001 -0.019999999552959998 0 0 1 +2 0.11481915663942001 -0.00252048112452 0.019999999552965001 0 0 -1 1 0 0 0 -1 0 0.044681161650829998 +1 0.093497879803181 -0.04178636148572 -0.019999999552959998 0 0 1 +2 0.053295957524102003 -0.1158233848133 0.019999999552965001 0 0 1 1 0 -0 -0 1 0 0.084247702509660002 +1 0.059138831836925004 -0.031778538463840003 -0.019999999552959998 0 0 1 +1 0.059138831836925004 -0.031778538463840003 0.019999999552965001 -0.99759214608755542 0.069353515155509096 0 +1 -0.072422526776789994 -0.022632272914050001 -0.019999999552959998 0 0 1 +2 -0.074126212430210003 -0.0471383620928 0.019999999552965001 0 0 1 1 0 -0 -0 1 0 0.024565238684828 +1 -0.088516429066650013 -0.027229253202670001 -0.019999999552959998 0 0 1 +2 -0.1059604867346 -0.0030951034277679999 0.019999999552965001 0 0 -1 1 0 0 0 -1 0 0.029778387016109003 +1 -0.088516429066650013 0.021039046347140999 -0.019999999552959998 0 0 1 +2 -0.07655497863763 0.037587915977931999 0.019999999552965001 0 0 1 1 0 -0 -0 1 0 0.02041914254867 +1 -0.072422526776789994 0.017591310665011 -0.019999999552959998 0 0 1 +1 -0.072422526776789994 0.017591310665011 0.019999999552965001 0.99712179448755867 0.075816402960776436 0 +1 -0.091414337224700007 -0.0028093000873920001 -0.040000199105930001 0 0 1 +2 -0.10647201538080001 -0.0028093000873920001 0.019999999552965001 0 0 -1 0 1 0 1 -0 0 0.015057678156153002 +1 0.14197662545896 -0.0046067601069809993 -0.040000199105930001 0 0 1 +2 0.11857245862484 -0.0046067601069809993 0.019999999552965001 0 0 -1 0 1 0 1 -0 0 0.023404166834120003 +Polygon3D 0 +PolygonOnTriangulations 0 +Surfaces 12 +1 0 0 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 +2 0.057963432099881002 0.10218666633037 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 0.074466478447737003 +2 0.11481915663942001 -0.00252048112452 -0.019999999552959998 0 0 -1 1 0 0 0 -1 0 0.044681161650829998 +2 0.053295957524102003 -0.1158233848133 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 0.084247702509660002 +2 -0.074126212430210003 -0.0471383620928 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 0.024565238684828 +2 -0.1059604867346 -0.0030951034277679999 -0.019999999552959998 0 0 -1 1 0 0 0 -1 0 0.029778387016109003 +2 -0.07655497863763 0.037587915977931999 -0.019999999552959998 0 0 1 1 0 -0 -0 1 0 0.02041914254867 +2 -0.10647201538080001 -0.0028093000873920001 -0.040000199105930001 0 0 1 1 0 -0 -0 1 0 0.015057678156153002 +2 0.11857245862484 -0.0046067601069809993 -0.040000199105930001 0 0 1 1 0 -0 -0 1 0 0.023404166834120003 +1 -0.072422526776789994 0.017591310665011 -0.019999999552959998 -0.075816402960776449 0.99712179448755867 0 0.99712179448755867 0.075816402960776449 0 0 0 -1 +1 0.059138831836925004 -0.031778538463840003 -0.019999999552959998 -0.069353515155509096 -0.99759214608755542 0 -0.99759214608755542 0.069353515155509096 0 -0 0 -1 +1 0 0 0.019999999552965001 0 0 1 1 0 -0 -0 1 0 +Triangulations 0 + +TShapes 80 +Ve +1.0001000025e-07 +0.063609212636948 0.027934517711401 -0.01999999955296 +0 0 + +0101101 +* +Ve +1.00005e-07 +0.093497879803181 0.036745399236679 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 1 0 4.78827820558768 5.20984013851675 +2 1 2 0 4.78827820558768 5.20984013851675 +0 + +0101000 ++80 0 -79 0 * +Ve +1.00005e-07 +0.093497879803181 -0.04178636148572 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 2 0 4.21493782225269 8.35143279210647 +2 2 3 0 4.21493782225269 8.35143279210647 +0 + +0101000 ++79 0 -77 0 * +Ve +1.0001000025e-07 +0.059138831836925 -0.03177853846384 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 3 0 1.07334516866233 1.50138709359361 +2 3 4 0 1.07334516866233 1.50138709359361 +0 + +0101000 ++77 0 -75 0 * +Ve +1.0001000025e-07 +-0.07242252677679 -0.02263227291405 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.0001000025e-07 1 1 0 +1 4 0 0 0.131878903748074 +0 + +0101000 ++75 0 -73 0 * +Ve +1.00005e-07 +-0.08851642906665 -0.02722925320267 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 5 0 1.501387093594 2.19665809974347 +2 4 5 0 1.501387093594 2.19665809974347 +0 + +0101000 ++73 0 -71 0 * +Ve +1.00005e-07 +-0.08851642906665 0.021039046347141 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 6 0 0.944934553846607 5.33825075333284 +2 5 6 0 0.944934553846607 5.33825075333284 +0 + +0101000 ++71 0 -69 0 * +Ve +1.0001000025e-07 +-0.07242252677679 0.017591310665011 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 7 0 4.08652720743619 4.91617787321301 +2 6 7 0 4.08652720743619 4.91617787321301 +0 + +0101000 ++69 0 -67 0 * +Ed + 1.0001000025e-07 1 1 0 +1 8 0 0 0.136424396864826 +0 + +0101000 ++67 0 -80 0 * +Wi + +0101000 ++78 0 +76 0 +74 0 +72 0 +70 0 +68 0 +66 0 +65 0 * +Ve +1.00005e-07 +-0.0914143372247 -0.002809300087392 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 9 0 1.5707963267949 7.85398163397448 +2 7 8 0 1.5707963267949 7.85398163397448 +0 + +0101100 ++63 0 -63 0 * +Wi + +0101000 ++62 0 * +Ve +1.00005e-07 +0.14197662545896 -0.004606760106981 -0.01999999955296 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 10 0 1.5707963267949 7.85398163397448 +2 8 9 0 1.5707963267949 7.85398163397448 +0 + +0101100 ++60 0 -60 0 * +Wi + +0101000 ++59 0 * +Fa +0 1e-07 1 0 + +0111000 +-64 0 +61 0 +58 0 * +Ve +1.0001000025e-07 +0.063609212636948 0.027934517711401 0.019999999552965 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 11 0 0 0.039999999105925 +2 9 2 0 0 0.039999999105925 +4 G1 2 0 10 0 +0 + +0101000 ++80 0 -56 0 * +Ve +1.00005e-07 +0.093497879803181 0.036745399236679 0.019999999552965 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 12 0 4.78827820558768 5.20984013851675 +2 10 2 0 4.78827820558768 5.20984013851675 +0 + +0101000 ++56 0 -54 0 * +Ed + 1e-07 1 1 0 +1 13 0 0 0.039999999105925 +2 11 2 0 0 0.039999999105925 +2 12 3 0 0 0.039999999105925 +4 G1 2 0 3 0 +0 + +0101000 ++79 0 -54 0 * +Wi + +0101000 ++55 0 +53 0 -52 0 -78 0 * +Fa +0 1e-07 2 0 + +0111000 +-51 0 * +Ve +1.00005e-07 +0.093497879803181 -0.04178636148572 0.019999999552965 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 14 0 4.21493782225269 8.35143279210647 +2 13 3 0 4.21493782225269 8.35143279210647 +0 + +0101000 ++54 0 -49 0 * +Ed + 1e-07 1 1 0 +1 15 0 0 0.039999999105925 +2 14 3 0 0 0.039999999105925 +2 15 4 0 0 0.039999999105925 +4 G1 3 0 4 0 +0 + +0101000 ++77 0 -49 0 * +Wi + +0101000 ++52 0 +48 0 -47 0 -76 0 * +Fa +0 1e-07 3 0 + +0111000 ++46 0 * +Ve +1.0001000025e-07 +0.059138831836925 -0.03177853846384 0.019999999552965 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 16 0 1.07334516866233 1.50138709359361 +2 16 4 0 1.07334516866233 1.50138709359361 +0 + +0101000 ++49 0 -44 0 * +Ed + 1.00005e-07 1 1 0 +1 17 0 0 0.039999999105925 +2 17 4 0 0 0.039999999105925 +4 G1 4 0 11 0 +0 + +0101000 ++75 0 -44 0 * +Wi + +0101000 ++47 0 +43 0 -42 0 -74 0 * +Fa +0 1e-07 4 0 + +0111000 +-41 0 * +Ve +1.0001000025e-07 +-0.07242252677679 -0.02263227291405 0.019999999552965 +0 0 + +0101101 +* +Ed + 1.0001000025e-07 1 1 0 +1 18 0 0 0.131878903748074 +0 + +0101000 ++44 0 -39 0 * +Ed + 1.00005e-07 1 1 0 +1 19 0 0 0.039999999105925 +2 18 5 0 0 0.039999999105925 +4 G1 11 0 5 0 +0 + +0101000 ++73 0 -39 0 * +Wi + +0101000 ++42 0 +38 0 -37 0 -72 0 * +Fa +0 1e-07 11 0 + +0111000 ++36 0 * +Ve +1.00005e-07 +-0.08851642906665 -0.02722925320267 0.019999999552965 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 20 0 1.501387093594 2.19665809974347 +2 19 5 0 1.501387093594 2.19665809974347 +0 + +0101000 ++39 0 -34 0 * +Ed + 1e-07 1 1 0 +1 21 0 0 0.039999999105925 +2 20 5 0 0 0.039999999105925 +2 21 6 0 0 0.039999999105925 +4 G1 5 0 6 0 +0 + +0101000 ++71 0 -34 0 * +Wi + +0101000 ++37 0 +33 0 -32 0 -70 0 * +Fa +0 1e-07 5 0 + +0111000 +-31 0 * +Ve +1.00005e-07 +-0.08851642906665 0.021039046347141 0.019999999552965 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 22 0 0.944934553846607 5.33825075333284 +2 22 6 0 0.944934553846607 5.33825075333284 +0 + +0101000 ++34 0 -29 0 * +Ed + 1e-07 1 1 0 +1 23 0 0 0.039999999105925 +2 23 6 0 0 0.039999999105925 +2 24 7 0 0 0.039999999105925 +4 G1 6 0 7 0 +0 + +0101000 ++69 0 -29 0 * +Wi + +0101000 ++32 0 +28 0 -27 0 -68 0 * +Fa +0 1e-07 6 0 + +0111000 ++26 0 * +Ve +1.0001000025e-07 +-0.07242252677679 0.017591310665011 0.019999999552965 +0 0 + +0101101 +* +Ed + 1.00005e-07 1 1 0 +1 24 0 4.08652720743619 4.91617787321301 +2 25 7 0 4.08652720743619 4.91617787321301 +0 + +0101000 ++29 0 -24 0 * +Ed + 1.00005e-07 1 1 0 +1 25 0 0 0.039999999105925 +2 26 7 0 0 0.039999999105925 +0 + +0101000 ++67 0 -24 0 * +Wi + +0101000 ++27 0 +23 0 -22 0 -66 0 * +Fa +0 1e-07 7 0 + +0111000 +-21 0 * +Ed + 1.0001000025e-07 1 1 0 +1 26 0 0 0.136424396864826 +0 + +0101000 ++24 0 -56 0 * +Wi + +0101000 ++22 0 +19 0 -55 0 -65 0 * +Fa +0 1e-07 10 0 + +0111000 ++18 0 * +Ve +1.00005e-07 +-0.0914143372247 -0.002809300087392 0.019999999552965 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 27 0 0.02000019955297 0.060000198658895 +3 27 28G1 8 0 0.02000019955297 0.060000198658895 +0 + +0101000 ++63 0 -16 0 * +Ed + 1.00005e-07 1 1 0 +1 28 0 1.5707963267949 7.85398163397448 +2 29 8 0 1.5707963267949 7.85398163397448 +0 + +0101100 ++16 0 -16 0 * +Wi + +0101000 ++15 0 -14 0 -15 0 +62 0 * +Fa +0 1e-07 8 0 + +0111000 +-13 0 * +Ve +1.00005e-07 +0.14197662545896 -0.004606760106981 0.019999999552965 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 29 0 0.02000019955297 0.060000198658895 +3 30 31G1 9 0 0.02000019955297 0.060000198658895 +0 + +0101000 ++60 0 -11 0 * +Ed + 1.00005e-07 1 1 0 +1 30 0 1.5707963267949 7.85398163397448 +2 32 9 0 1.5707963267949 7.85398163397448 +0 + +0101100 ++11 0 -11 0 * +Wi + +0101000 ++10 0 -9 0 -10 0 +59 0 * +Fa +0 1e-07 9 0 + +0111000 +-8 0 * +Wi + +0101000 ++53 0 +48 0 +43 0 +38 0 +33 0 +28 0 +23 0 +19 0 * +Wi + +0101000 ++14 0 * +Wi + +0101000 ++9 0 * +Fa +0 1e-07 12 0 + +0111000 +-6 0 +5 0 +4 0 * +Sh + +0101100 +-57 0 -50 0 +45 0 -40 0 +35 0 -30 0 +25 0 -20 0 +17 0 -12 0 +-7 0 +3 0 * +So + +0100000 ++2 0 * + ++1 0 diff --git a/src/TEST_PY/test_unit/bielle.py b/src/TEST_PY/test_unit/bielle.py deleted file mode 100644 index b19126d..0000000 --- a/src/TEST_PY/test_unit/bielle.py +++ /dev/null @@ -1,239 +0,0 @@ -# -*- coding: latin-1 -*- -# Copyright (C) 2009-2012 CEA/DEN, EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library 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 -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# - -# Francis KLOSS - 2011 - CEA-Saclay, DEN, DM2S, SFME, LGLS, F-91191 Gif-sur-Yvette, France -# ======================================================================================== - -import geompy -import hexablock - -# Définir les paramètres -# ---------------------- - -nom = "bielle" - -# Construire le modèle de bloc -# ============================ - -doc = hexablock.addDocument(nom) - -# Construire les 2 grilles cylindriques -# ------------------------------------- - -centre_a = doc.addVertex(0, 0, 0) -centre_b = doc.addVertex(6, 0, 0) - -vecteur_a = doc.addVector(1, 1, 0) -vecteur_z = doc.addVector(0, 0, 1) -vecteur_b = doc.addVector(6, 0, 0) - -grille_a = doc.makeCylindrical(centre_a, vecteur_a, vecteur_z, 1, 360, 1, 1, 4, 1, False) - -### grille_b = doc.makeTranslation(grille_a, vecteur_b) -grille_b = doc.makeCylindrical(centre_b, vecteur_a, vecteur_z, 2, 360, 1, 1, 4, 1, False) - -grilles = [ grille_a, grille_b ] - -# Relier les 2 grilles -# -------------------- - -quad_a = grille_a.getQuadJK(1, 3, 0) -quad_b = grille_b.getQuadJK(1, 1, 0) - -point_a1 = grille_a.getVertexIJK(1, 0, 0) -point_a2 = grille_a.getVertexIJK(1, 3, 0) - -point_b1 = grille_b.getVertexIJK(1, 1, 0) -point_b2 = grille_b.getVertexIJK(1, 2, 0) - -prisme = doc.joinQuad(quad_a, quad_b, point_a1, point_b1, point_a2, point_b2, 3) - -# Associer le modèle de bloc avec la géométrie -# ============================================ - -# Charger la géométrie à associer -# ------------------------------- - -bielle = geompy.ImportSTEP("crank.stp") - -doc.setShape(bielle) - -# Extraire les subshapes de la géométrie -# -------------------------------------- - -g_vertices = geompy.SubShapeAllSortedCentres(bielle, geompy.ShapeType["VERTEX"]) -g_edges = geompy.SubShapeAllSortedCentres(bielle, geompy.ShapeType["EDGE" ]) - -sommets = [ [ 8, 6, 9, 7 ], [ 12, 10, 13, 11 ] ] - -cercles = [ [2, 3], [25, 26] ] -arcs_gr = [ [0, 1], [27, 28] ] -arcs_pe = [ [ 9, 7, 10, 8 ], [ 21, 19, 22, 20 ] ] - -# Associer les 4 cercles intérieurs -# --------------------------------- - -for k in xrange(0, 2): - for g in xrange(0, 2): - grille = grilles[g] - ve = grille.getVertexIJK(0, 1, k) - le = [ grille.getEdgeJ(0, j, k) for j in xrange(0, 4) ] - cercle = g_edges[ cercles[g][k] ] - doc.associateClosedLine(ve, le[0], le[1:], cercle, 0.625, False, []) - -# Associer les 4 grands arcs de cercle extérieurs -# ----------------------------------------------- - -for k in xrange(0, 2): - g=0 - grille = grilles[g] - le = [ grille.getEdgeJ(1, j, k) for j in [2, 1, 0] ] - ed = g_edges[ arcs_gr[g][k] ] - doc.associateOpenedLine(le[0], le[1:], ed, 0, [], 1) - -for k in xrange(0, 2): - g=1 - grille = grilles[g] - le = [ grille.getEdgeJ(1, j, k) for j in [0, 3, 2] ] - ed = g_edges[ arcs_gr[g][k] ] - doc.associateOpenedLine(le[0], le[1:], ed, 0, [], 1) - -# Associer les 8 sommets des petits arcs de cercle extérieurs -# ----------------------------------------------------------- - -for g, h in [ [0, 1], [1, 2] ]: - hexa = prisme.getHexa(h) - for vi in xrange(0, 4): - nv = 2*(vi/2) + 1 - vi % 2 - vm = hexa.getVertex(nv) - vg = g_vertices[ sommets[g][vi] ] - x, y, z = geompy.PointCoordinates(vg) - vm.setAssociation(vg) - -# Associer les 8 petits arcs de cercle extérieurs -# ----------------------------------------------- - -for g, h in [ [0, 0], [1, 2] ]: - hexa = prisme.getHexa(h) - for ei in xrange(0, 4): - nv = 2*(ei/2) + 1 - ei % 2 - em = hexa.getEdge(nv+8) - eg = g_edges[ arcs_pe[g][ei] ] - em.clearAssociation() - em.addAssociation(eg, 0, 1) - -# Associer 4 arcs nouveaux qui complétent les 4 grands arcs de cercle extérieurs -# ------------------------------------------------------------------------------ - -for h, ei, ech in [ [0, 0, 0.9], [0, 1, 0.9], [2, 2, 0.85], [2, 3, 0.85] ]: - hexa = prisme.getHexa(h) - em = hexa.getEdge(ei) - va = em.getVertex(0).getAssociation() - vb = em.getVertex(1).getAssociation() - vax, vay, vaz = geompy.PointCoordinates(va) - vbx, vby, vbz = geompy.PointCoordinates(vb) - vmx = ( vax + vbx ) / 2.0 * ech - vmy = ( vay + vby ) / 2.0 - vmz = ( vaz + vbz ) / 2.0 - vm = geompy.MakeVertex(vmx, vmy, vmz) - eg = geompy.MakeArc(va, vm, vb) - em.clearAssociation() - em.addAssociation(eg, 0, 1) - -# Mailler le modèle de bloc -# ========================= - -# Définir 5 groupes de faces -# -------------------------- - -groupe_trou_p = doc.addQuadGroup("Trou_petit") -groupe_trou_g = doc.addQuadGroup("Trou_grand") -groupe_bas = doc.addQuadGroup("Bas") -groupe_haut = doc.addQuadGroup("Haut") -groupe_contour = doc.addQuadGroup("Contour") - -for i in xrange(4): - groupe_trou_p.addElement(grille_a.getQuadJK(0, i, 0)) - groupe_trou_g.addElement(grille_b.getQuadJK(0, i, 0)) - - groupe_bas.addElement( grille_a.getQuadIJ(0, i, 0)) - groupe_bas.addElement( grille_b.getQuadIJ(0, i, 0)) - groupe_haut.addElement(grille_a.getQuadIJ(0, i, 1)) - groupe_haut.addElement(grille_b.getQuadIJ(0, i, 1)) - -for i in xrange(3): - groupe_contour.addElement(grille_a.getQuadJK(1, i, 0)) - -for i in [0, 2, 3]: - groupe_contour.addElement(grille_b.getQuadJK(1, i, 0)) - -for i in xrange(0, 3): - h = prisme.getHexa(i) - - q = h.getQuad(2) - groupe_bas.addElement(q) - - q = h.getQuad(3) - groupe_haut.addElement(q) - - q = h.getQuad(4) - groupe_contour.addElement(q) - q = h.getQuad(5) - groupe_contour.addElement(q) - -# Définir 3 groupes de volumes -# ---------------------------- - -groupe_cyli_p = doc.addHexaGroup("Cylindre_petit") -groupe_cyli_g = doc.addHexaGroup("Cylindre_grand") -groupe_prisme = doc.addHexaGroup("Prisme") - -for i in xrange(4): - groupe_cyli_p.addElement(grille_a.getHexa(i)) - groupe_cyli_g.addElement(grille_b.getHexa(i)) - -for i in xrange(3): - groupe_prisme.addElement(prisme.getHexa(i)) - -# Mailler le modèle de bloc avec association -# ------------------------------------------ - -l = doc.addLaw("Uniform1", 17) -n = doc.countPropagation() - -for i in xrange(n): - p = doc.getPropagation(i) - p.setLaw(l) - -l = doc.addLaw("Uniform2", 40) -p = doc.getPropagation(11) -p.setLaw(l) - -blocs = hexablock.mesh (doc) - -print "nombre de sommets du modèle de bloc: ", doc.countUsedVertex() -print "nombre d'arêtes du modèle de bloc: ", doc.countUsedEdge() -print "nombre de quadrangles du modèle de bloc: ", doc.countUsedQuad() -print "nombre de blocs du modèle de bloc: ", doc.countUsedHexa() - -print "Nombre de noeuds du maillage: ", blocs.NbNodes() -print "Nombre de segments du maillage: ", blocs.NbEdges() -print "Nombre de quadrangles du maillage: ", blocs.NbQuadrangles() -print "Nombre d'hexaèdres du maillage: ", blocs.NbHexas() diff --git a/src/TEST_PY/test_unit/bielle.stp b/src/TEST_PY/test_unit/bielle.stp new file mode 100644 index 0000000..ef67fa5 --- /dev/null +++ b/src/TEST_PY/test_unit/bielle.stp @@ -0,0 +1,1178 @@ +ISO-10303-21; +HEADER; + FILE_DESCRIPTION(('a Product shape'),'1'); + FILE_NAME('Euclid Shape Model','1998-12-23T10:04:46',('Author Name'),( + 'MATRA-DATAVISION'),'OL-2.0D','EUCLID','Authorisation status'); + FILE_SCHEMA(('AUTOMOTIVE_DESIGN_CC2 { 1 2 10303 214 -1 1 5 4 }')); +ENDSEC; +DATA; +#1 = PRODUCT_TYPE('part',$,(#2)); +#2 = PRODUCT('bielle','bielle','void',(#3)); +#3 = MECHANICAL_CONTEXT('Mechanical',#4,'Assembly'); +#4 = APPLICATION_CONTEXT('EUCLID'); +#5 = APPLICATION_PROTOCOL_DEFINITION('CommitteeDraft', + 'automotive_design',1997,#4); +#6 = SHAPE_DEFINITION_REPRESENTATION(#7,#11); +#7 = PRODUCT_DEFINITION_SHAPE('void','void',#8); +#8 = PRODUCT_DEFINITION('void','void',#9,#10); +#9 = PRODUCT_DEFINITION_FORMATION('ID','void',#2); +#10 = PRODUCT_DEFINITION_CONTEXT('as proposed',#4,'First_Design'); +#11 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#12),#866); +#12 = MANIFOLD_SOLID_BREP('',#13); +#13 = CLOSED_SHELL('',(#14,#338,#415,#466,#518,#566,#617,#668,#720,#747, + #798,#849)); +#14 = ADVANCED_FACE('',(#15,#270,#304),#30,.F.); +#15 = FACE_BOUND('',#16,.T.); +#16 = EDGE_LOOP('',(#17,#56,#88,#120,#148,#180,#212,#244)); +#17 = ORIENTED_EDGE('',*,*,#18,.T.); +#18 = EDGE_CURVE('',#19,#21,#23,.T.); +#19 = VERTEX_POINT('',#20); +#20 = CARTESIAN_POINT('',(63.609212636948,27.934517711401, + -19.99999955296)); +#21 = VERTEX_POINT('',#22); +#22 = CARTESIAN_POINT('',(93.497879803181,36.745399236679, + -19.99999955296)); +#23 = SURFACE_CURVE('',#24,(#29,#45),.PCURVE_S2.); +#24 = CIRCLE('',#25,74.466478447737); +#25 = AXIS2_PLACEMENT_3D('',#26,#27,#28); +#26 = CARTESIAN_POINT('',(57.963432099881,102.18666633037, + -19.99999955296)); +#27 = DIRECTION('',(0.,0.,1.)); +#28 = DIRECTION('',(1.,0.,0.)); +#29 = PCURVE('',#30,#35); +#30 = PLANE('',#31); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(0.,0.,-19.99999955296)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = DEFINITIONAL_REPRESENTATION('',(#36),#44); +#36 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#37,#38,#39,#40,#41,#42,#43), +.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#37 = CARTESIAN_POINT('',(132.42991054761,102.18666633037)); +#38 = CARTESIAN_POINT('',(132.42991054761,231.16639046259)); +#39 = CARTESIAN_POINT('',(20.730192876013,166.67652839648)); +#40 = CARTESIAN_POINT('',(-90.96952479559,102.18666633037)); +#41 = CARTESIAN_POINT('',(20.730192876013,37.696804264271)); +#42 = CARTESIAN_POINT('',(132.42991054761,-26.79305780183)); +#43 = CARTESIAN_POINT('',(132.42991054761,102.18666633037)); +#44 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#45 = PCURVE('',#46,#51); +#46 = CYLINDRICAL_SURFACE('',#47,74.466478447737); +#47 = AXIS2_PLACEMENT_3D('',#48,#49,#50); +#48 = CARTESIAN_POINT('',(57.963432099881,102.18666633037, + -19.99999955296)); +#49 = DIRECTION('',(0.,0.,1.)); +#50 = DIRECTION('',(1.,0.,0.)); +#51 = DEFINITIONAL_REPRESENTATION('',(#52),#55); +#52 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#53,#54),.UNSPECIFIED.,.F.,.F.,(2, + 2),(4.788278205588,5.209840138517),.PIECEWISE_BEZIER_KNOTS.); +#53 = CARTESIAN_POINT('',(4.788278205588,0.)); +#54 = CARTESIAN_POINT('',(5.209840138517,0.)); +#55 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#56 = ORIENTED_EDGE('',*,*,#57,.T.); +#57 = EDGE_CURVE('',#21,#58,#60,.T.); +#58 = VERTEX_POINT('',#59); +#59 = CARTESIAN_POINT('',(93.497879803181,-41.78636148572, + -19.99999955296)); +#60 = SURFACE_CURVE('',#61,(#66,#77),.PCURVE_S2.); +#61 = CIRCLE('',#62,44.68116165083); +#62 = AXIS2_PLACEMENT_3D('',#63,#64,#65); +#63 = CARTESIAN_POINT('',(114.81915663942,-2.52048112452,-19.99999955296 + )); +#64 = DIRECTION('',(0.,0.,-1.)); +#65 = DIRECTION('',(1.,0.,0.)); +#66 = PCURVE('',#30,#67); +#67 = DEFINITIONAL_REPRESENTATION('',(#68),#76); +#68 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#69,#70,#71,#72,#73,#74,#75), +.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#69 = CARTESIAN_POINT('',(159.50031829025,-2.52048112452)); +#70 = CARTESIAN_POINT('',(159.50031829025,-79.91052324495)); +#71 = CARTESIAN_POINT('',(92.478575814005,-41.21550218473)); +#72 = CARTESIAN_POINT('',(25.45683333776,-2.52048112452)); +#73 = CARTESIAN_POINT('',(92.478575814005,36.174539935697)); +#74 = CARTESIAN_POINT('',(159.50031829025,74.869560995915)); +#75 = CARTESIAN_POINT('',(159.50031829025,-2.52048112452)); +#76 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#77 = PCURVE('',#78,#83); +#78 = CYLINDRICAL_SURFACE('',#79,44.68116165083); +#79 = AXIS2_PLACEMENT_3D('',#80,#81,#82); +#80 = CARTESIAN_POINT('',(114.81915663942,-2.52048112452,-19.99999955296 + )); +#81 = DIRECTION('',(0.,0.,-1.)); +#82 = DIRECTION('',(1.,0.,0.)); +#83 = DEFINITIONAL_REPRESENTATION('',(#84),#87); +#84 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#85,#86),.UNSPECIFIED.,.F.,.F.,(2, + 2),(4.214937822253,8.351432792106),.PIECEWISE_BEZIER_KNOTS.); +#85 = CARTESIAN_POINT('',(4.214937822253,0.)); +#86 = CARTESIAN_POINT('',(8.351432792106,0.)); +#87 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#88 = ORIENTED_EDGE('',*,*,#89,.T.); +#89 = EDGE_CURVE('',#58,#90,#92,.T.); +#90 = VERTEX_POINT('',#91); +#91 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + -19.99999955296)); +#92 = SURFACE_CURVE('',#93,(#98,#109),.PCURVE_S2.); +#93 = CIRCLE('',#94,84.24770250966); +#94 = AXIS2_PLACEMENT_3D('',#95,#96,#97); +#95 = CARTESIAN_POINT('',(53.295957524102,-115.8233848133, + -19.99999955296)); +#96 = DIRECTION('',(0.,0.,1.)); +#97 = DIRECTION('',(1.,0.,0.)); +#98 = PCURVE('',#30,#99); +#99 = DEFINITIONAL_REPRESENTATION('',(#100),#108); +#100 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#101,#102,#103,#104,#105,#106 +,#107),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#101 = CARTESIAN_POINT('',(137.54366003376,-115.8233848133)); +#102 = CARTESIAN_POINT('',(137.54366003376,30.097916354281)); +#103 = CARTESIAN_POINT('',(11.172106269272,-42.86273422955)); +#104 = CARTESIAN_POINT('',(-115.1994474952,-115.8233848133)); +#105 = CARTESIAN_POINT('',(11.172106269272,-188.7840353972)); +#106 = CARTESIAN_POINT('',(137.54366003376,-261.744685981)); +#107 = CARTESIAN_POINT('',(137.54366003376,-115.8233848133)); +#108 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#109 = PCURVE('',#110,#115); +#110 = CYLINDRICAL_SURFACE('',#111,84.24770250966); +#111 = AXIS2_PLACEMENT_3D('',#112,#113,#114); +#112 = CARTESIAN_POINT('',(53.295957524102,-115.8233848133, + -19.99999955296)); +#113 = DIRECTION('',(0.,0.,1.)); +#114 = DIRECTION('',(1.,0.,0.)); +#115 = DEFINITIONAL_REPRESENTATION('',(#116),#119); +#116 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#117,#118),.UNSPECIFIED.,.F.,.F., + (2,2),(1.073345168663,1.501387093594),.PIECEWISE_BEZIER_KNOTS.); +#117 = CARTESIAN_POINT('',(1.073345168663,0.)); +#118 = CARTESIAN_POINT('',(1.501387093594,0.)); +#119 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#120 = ORIENTED_EDGE('',*,*,#121,.T.); +#121 = EDGE_CURVE('',#90,#122,#124,.T.); +#122 = VERTEX_POINT('',#123); +#123 = CARTESIAN_POINT('',(-72.42252677679,-22.63227291405, + -19.99999955296)); +#124 = SURFACE_CURVE('',#125,(#129,#136),.PCURVE_S2.); +#125 = LINE('',#126,#127); +#126 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + -19.99999955296)); +#127 = VECTOR('',#128,1.); +#128 = DIRECTION('',(-0.997592146088,6.935351515554E-02,0.)); +#129 = PCURVE('',#30,#130); +#130 = DEFINITIONAL_REPRESENTATION('',(#131),#135); +#131 = LINE('',#132,#133); +#132 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384)); +#133 = VECTOR('',#134,1.); +#134 = DIRECTION('',(-0.997592146088,6.935351515554E-02)); +#135 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#136 = PCURVE('',#137,#142); +#137 = PLANE('',#138); +#138 = AXIS2_PLACEMENT_3D('',#139,#140,#141); +#139 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + -19.99999955296)); +#140 = DIRECTION('',(-6.935351515554E-02,-0.997592146088,0.)); +#141 = DIRECTION('',(-0.997592146088,6.935351515554E-02,0.)); +#142 = DEFINITIONAL_REPRESENTATION('',(#143),#147); +#143 = LINE('',#144,#145); +#144 = CARTESIAN_POINT('',(0.,-3.552713678801E-14)); +#145 = VECTOR('',#146,1.); +#146 = DIRECTION('',(1.,0.)); +#147 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#148 = ORIENTED_EDGE('',*,*,#149,.T.); +#149 = EDGE_CURVE('',#122,#150,#152,.T.); +#150 = VERTEX_POINT('',#151); +#151 = CARTESIAN_POINT('',(-88.51642906665,-27.22925320267, + -19.99999955296)); +#152 = SURFACE_CURVE('',#153,(#158,#169),.PCURVE_S2.); +#153 = CIRCLE('',#154,24.565238684828); +#154 = AXIS2_PLACEMENT_3D('',#155,#156,#157); +#155 = CARTESIAN_POINT('',(-74.12621243021,-47.1383620928, + -19.99999955296)); +#156 = DIRECTION('',(0.,0.,1.)); +#157 = DIRECTION('',(1.,0.,0.)); +#158 = PCURVE('',#30,#159); +#159 = DEFINITIONAL_REPRESENTATION('',(#160),#168); +#160 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#161,#162,#163,#164,#165,#166 +,#167),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#161 = CARTESIAN_POINT('',(-49.56097374539,-47.1383620928)); +#162 = CARTESIAN_POINT('',(-49.56097374539,-4.590120590624)); +#163 = CARTESIAN_POINT('',(-86.40883177263,-25.86424134171)); +#164 = CARTESIAN_POINT('',(-123.2566897998,-47.1383620928)); +#165 = CARTESIAN_POINT('',(-86.40883177263,-68.41248284389)); +#166 = CARTESIAN_POINT('',(-49.56097374539,-89.68660359498)); +#167 = CARTESIAN_POINT('',(-49.56097374539,-47.1383620928)); +#168 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#169 = PCURVE('',#170,#175); +#170 = CYLINDRICAL_SURFACE('',#171,24.565238684828); +#171 = AXIS2_PLACEMENT_3D('',#172,#173,#174); +#172 = CARTESIAN_POINT('',(-74.12621243021,-47.1383620928, + -19.99999955296)); +#173 = DIRECTION('',(0.,0.,1.)); +#174 = DIRECTION('',(1.,0.,0.)); +#175 = DEFINITIONAL_REPRESENTATION('',(#176),#179); +#176 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#177,#178),.UNSPECIFIED.,.F.,.F., + (2,2),(1.501387093594,2.196658099744),.PIECEWISE_BEZIER_KNOTS.); +#177 = CARTESIAN_POINT('',(1.501387093594,0.)); +#178 = CARTESIAN_POINT('',(2.196658099744,0.)); +#179 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#180 = ORIENTED_EDGE('',*,*,#181,.T.); +#181 = EDGE_CURVE('',#150,#182,#184,.T.); +#182 = VERTEX_POINT('',#183); +#183 = CARTESIAN_POINT('',(-88.51642906665,21.039046347141, + -19.99999955296)); +#184 = SURFACE_CURVE('',#185,(#190,#201),.PCURVE_S2.); +#185 = CIRCLE('',#186,29.778387016109); +#186 = AXIS2_PLACEMENT_3D('',#187,#188,#189); +#187 = CARTESIAN_POINT('',(-105.9604867346,-3.095103427768, + -19.99999955296)); +#188 = DIRECTION('',(0.,0.,-1.)); +#189 = DIRECTION('',(1.,0.,0.)); +#190 = PCURVE('',#30,#191); +#191 = DEFINITIONAL_REPRESENTATION('',(#192),#200); +#192 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#193,#194,#195,#196,#197,#198 +,#199),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#193 = CARTESIAN_POINT('',(-76.18209971851,-3.095103427768)); +#194 = CARTESIAN_POINT('',(-76.18209971851,-54.67278270711)); +#195 = CARTESIAN_POINT('',(-120.8496802426,-28.88394306744)); +#196 = CARTESIAN_POINT('',(-165.5172607668,-3.095103427768)); +#197 = CARTESIAN_POINT('',(-120.8496802426,22.693736211908)); +#198 = CARTESIAN_POINT('',(-76.18209971851,48.482575851583)); +#199 = CARTESIAN_POINT('',(-76.18209971851,-3.095103427768)); +#200 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#201 = PCURVE('',#202,#207); +#202 = CYLINDRICAL_SURFACE('',#203,29.778387016109); +#203 = AXIS2_PLACEMENT_3D('',#204,#205,#206); +#204 = CARTESIAN_POINT('',(-105.9604867346,-3.095103427768, + -19.99999955296)); +#205 = DIRECTION('',(0.,0.,-1.)); +#206 = DIRECTION('',(1.,0.,0.)); +#207 = DEFINITIONAL_REPRESENTATION('',(#208),#211); +#208 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#209,#210),.UNSPECIFIED.,.F.,.F., + (2,2),(0.944934553846,5.338250753333),.PIECEWISE_BEZIER_KNOTS.); +#209 = CARTESIAN_POINT('',(0.944934553846,0.)); +#210 = CARTESIAN_POINT('',(5.338250753333,0.)); +#211 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#212 = ORIENTED_EDGE('',*,*,#213,.T.); +#213 = EDGE_CURVE('',#182,#214,#216,.T.); +#214 = VERTEX_POINT('',#215); +#215 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + -19.99999955296)); +#216 = SURFACE_CURVE('',#217,(#222,#233),.PCURVE_S2.); +#217 = CIRCLE('',#218,20.41914254867); +#218 = AXIS2_PLACEMENT_3D('',#219,#220,#221); +#219 = CARTESIAN_POINT('',(-76.55497863763,37.587915977932, + -19.99999955296)); +#220 = DIRECTION('',(0.,0.,1.)); +#221 = DIRECTION('',(1.,0.,0.)); +#222 = PCURVE('',#30,#223); +#223 = DEFINITIONAL_REPRESENTATION('',(#224),#232); +#224 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#225,#226,#227,#228,#229,#230 +,#231),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#225 = CARTESIAN_POINT('',(-56.13583608896,37.587915977932)); +#226 = CARTESIAN_POINT('',(-56.13583608896,72.954908319219)); +#227 = CARTESIAN_POINT('',(-86.76454991196,55.271412148575)); +#228 = CARTESIAN_POINT('',(-117.3932637349,37.587915977932)); +#229 = CARTESIAN_POINT('',(-86.76454991196,19.904419807288)); +#230 = CARTESIAN_POINT('',(-56.13583608896,2.220923636644)); +#231 = CARTESIAN_POINT('',(-56.13583608896,37.587915977932)); +#232 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#233 = PCURVE('',#234,#239); +#234 = CYLINDRICAL_SURFACE('',#235,20.41914254867); +#235 = AXIS2_PLACEMENT_3D('',#236,#237,#238); +#236 = CARTESIAN_POINT('',(-76.55497863763,37.587915977932, + -19.99999955296)); +#237 = DIRECTION('',(0.,0.,1.)); +#238 = DIRECTION('',(1.,0.,0.)); +#239 = DEFINITIONAL_REPRESENTATION('',(#240),#243); +#240 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#241,#242),.UNSPECIFIED.,.F.,.F., + (2,2),(4.086527207436,4.916177873213),.PIECEWISE_BEZIER_KNOTS.); +#241 = CARTESIAN_POINT('',(4.086527207436,0.)); +#242 = CARTESIAN_POINT('',(4.916177873213,0.)); +#243 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#244 = ORIENTED_EDGE('',*,*,#245,.T.); +#245 = EDGE_CURVE('',#214,#19,#246,.T.); +#246 = SURFACE_CURVE('',#247,(#251,#258),.PCURVE_S2.); +#247 = LINE('',#248,#249); +#248 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + -19.99999955296)); +#249 = VECTOR('',#250,1.); +#250 = DIRECTION('',(0.997121794488,7.581640296081E-02,0.)); +#251 = PCURVE('',#30,#252); +#252 = DEFINITIONAL_REPRESENTATION('',(#253),#257); +#253 = LINE('',#254,#255); +#254 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011)); +#255 = VECTOR('',#256,1.); +#256 = DIRECTION('',(0.997121794488,7.581640296081E-02)); +#257 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#258 = PCURVE('',#259,#264); +#259 = PLANE('',#260); +#260 = AXIS2_PLACEMENT_3D('',#261,#262,#263); +#261 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + -19.99999955296)); +#262 = DIRECTION('',(-7.581640296081E-02,0.997121794488,0.)); +#263 = DIRECTION('',(0.997121794488,7.581640296081E-02,0.)); +#264 = DEFINITIONAL_REPRESENTATION('',(#265),#269); +#265 = LINE('',#266,#267); +#266 = CARTESIAN_POINT('',(0.,-3.552713678801E-14)); +#267 = VECTOR('',#268,1.); +#268 = DIRECTION('',(1.,0.)); +#269 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#270 = FACE_BOUND('',#271,.F.); +#271 = EDGE_LOOP('',(#272)); +#272 = ORIENTED_EDGE('',*,*,#273,.T.); +#273 = EDGE_CURVE('',#274,#274,#276,.T.); +#274 = VERTEX_POINT('',#275); +#275 = CARTESIAN_POINT('',(-91.4143372247,-2.809300087392, + -19.99999955296)); +#276 = SURFACE_CURVE('',#277,(#282,#293),.PCURVE_S2.); +#277 = CIRCLE('',#278,15.057678156153); +#278 = AXIS2_PLACEMENT_3D('',#279,#280,#281); +#279 = CARTESIAN_POINT('',(-106.4720153808,-2.809300087392, + -19.99999955296)); +#280 = DIRECTION('',(0.,0.,-1.)); +#281 = DIRECTION('',(0.,1.,0.)); +#282 = PCURVE('',#30,#283); +#283 = DEFINITIONAL_REPRESENTATION('',(#284),#292); +#284 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#285,#286,#287,#288,#289,#290 +,#291),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#285 = CARTESIAN_POINT('',(-106.4720153808,12.24837806876)); +#286 = CARTESIAN_POINT('',(-80.39135177038,12.24837806876)); +#287 = CARTESIAN_POINT('',(-93.43168357562,-10.33813916546)); +#288 = CARTESIAN_POINT('',(-106.4720153808,-32.92465639969)); +#289 = CARTESIAN_POINT('',(-119.512347186,-10.33813916546)); +#290 = CARTESIAN_POINT('',(-132.5526789913,12.24837806876)); +#291 = CARTESIAN_POINT('',(-106.4720153808,12.24837806876)); +#292 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#293 = PCURVE('',#294,#299); +#294 = CYLINDRICAL_SURFACE('',#295,15.057678156153); +#295 = AXIS2_PLACEMENT_3D('',#296,#297,#298); +#296 = CARTESIAN_POINT('',(-106.4720153808,-2.809300087392, + -40.00019910593)); +#297 = DIRECTION('',(0.,0.,1.)); +#298 = DIRECTION('',(1.,0.,0.)); +#299 = DEFINITIONAL_REPRESENTATION('',(#300),#303); +#300 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#301,#302),.UNSPECIFIED.,.F.,.F., + (2,2),(1.570796326795,7.853981633974),.PIECEWISE_BEZIER_KNOTS.); +#301 = CARTESIAN_POINT('',(6.28318530718,20.000199552965)); +#302 = CARTESIAN_POINT('',(0.,20.000199552965)); +#303 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#304 = FACE_BOUND('',#305,.F.); +#305 = EDGE_LOOP('',(#306)); +#306 = ORIENTED_EDGE('',*,*,#307,.T.); +#307 = EDGE_CURVE('',#308,#308,#310,.T.); +#308 = VERTEX_POINT('',#309); +#309 = CARTESIAN_POINT('',(141.97662545896,-4.606760106981, + -19.99999955296)); +#310 = SURFACE_CURVE('',#311,(#316,#327),.PCURVE_S2.); +#311 = CIRCLE('',#312,23.40416683412); +#312 = AXIS2_PLACEMENT_3D('',#313,#314,#315); +#313 = CARTESIAN_POINT('',(118.57245862484,-4.606760106981, + -19.99999955296)); +#314 = DIRECTION('',(0.,0.,-1.)); +#315 = DIRECTION('',(0.,1.,0.)); +#316 = PCURVE('',#30,#317); +#317 = DEFINITIONAL_REPRESENTATION('',(#318),#326); +#318 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#319,#320,#321,#322,#323,#324 +,#325),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#319 = CARTESIAN_POINT('',(118.57245862484,18.797406727139)); +#320 = CARTESIAN_POINT('',(159.10966469035,18.797406727139)); +#321 = CARTESIAN_POINT('',(138.84106165759,-16.30884352404)); +#322 = CARTESIAN_POINT('',(118.57245862484,-51.41509377522)); +#323 = CARTESIAN_POINT('',(98.303855592083,-16.30884352404)); +#324 = CARTESIAN_POINT('',(78.035252559326,18.797406727139)); +#325 = CARTESIAN_POINT('',(118.57245862484,18.797406727139)); +#326 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#327 = PCURVE('',#328,#333); +#328 = CYLINDRICAL_SURFACE('',#329,23.40416683412); +#329 = AXIS2_PLACEMENT_3D('',#330,#331,#332); +#330 = CARTESIAN_POINT('',(118.57245862484,-4.606760106981, + -40.00019910593)); +#331 = DIRECTION('',(0.,0.,1.)); +#332 = DIRECTION('',(1.,0.,0.)); +#333 = DEFINITIONAL_REPRESENTATION('',(#334),#337); +#334 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#335,#336),.UNSPECIFIED.,.F.,.F., + (2,2),(1.570796326795,7.853981633974),.PIECEWISE_BEZIER_KNOTS.); +#335 = CARTESIAN_POINT('',(6.28318530718,20.000199552965)); +#336 = CARTESIAN_POINT('',(0.,20.000199552965)); +#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#338 = ADVANCED_FACE('',(#339),#46,.F.); +#339 = FACE_BOUND('',#340,.T.); +#340 = EDGE_LOOP('',(#341,#363,#395,#414)); +#341 = ORIENTED_EDGE('',*,*,#342,.T.); +#342 = EDGE_CURVE('',#19,#343,#345,.T.); +#343 = VERTEX_POINT('',#344); +#344 = CARTESIAN_POINT('',(63.609212636948,27.934517711401, + 19.999999552965)); +#345 = SURFACE_CURVE('',#346,(#350,#356),.PCURVE_S2.); +#346 = LINE('',#347,#348); +#347 = CARTESIAN_POINT('',(63.609212636948,27.934517711401, + -19.99999955296)); +#348 = VECTOR('',#349,1.); +#349 = DIRECTION('',(0.,0.,1.)); +#350 = PCURVE('',#46,#351); +#351 = DEFINITIONAL_REPRESENTATION('',(#352),#355); +#352 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#353,#354),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#353 = CARTESIAN_POINT('',(4.788278205588,0.)); +#354 = CARTESIAN_POINT('',(4.788278205588,39.99999910593)); +#355 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#356 = PCURVE('',#259,#357); +#357 = DEFINITIONAL_REPRESENTATION('',(#358),#362); +#358 = LINE('',#359,#360); +#359 = CARTESIAN_POINT('',(136.42439686482,0.)); +#360 = VECTOR('',#361,1.); +#361 = DIRECTION('',(0.,-1.)); +#362 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#363 = ORIENTED_EDGE('',*,*,#364,.T.); +#364 = EDGE_CURVE('',#343,#365,#367,.T.); +#365 = VERTEX_POINT('',#366); +#366 = CARTESIAN_POINT('',(93.497879803181,36.745399236679, + 19.999999552965)); +#367 = SURFACE_CURVE('',#368,(#373,#379),.PCURVE_S2.); +#368 = CIRCLE('',#369,74.466478447737); +#369 = AXIS2_PLACEMENT_3D('',#370,#371,#372); +#370 = CARTESIAN_POINT('',(57.963432099881,102.18666633037, + 19.999999552965)); +#371 = DIRECTION('',(0.,0.,1.)); +#372 = DIRECTION('',(1.,0.,0.)); +#373 = PCURVE('',#46,#374); +#374 = DEFINITIONAL_REPRESENTATION('',(#375),#378); +#375 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#376,#377),.UNSPECIFIED.,.F.,.F., + (2,2),(4.788278205588,5.209840138517),.PIECEWISE_BEZIER_KNOTS.); +#376 = CARTESIAN_POINT('',(4.788278205588,39.99999910593)); +#377 = CARTESIAN_POINT('',(5.209840138517,39.99999910593)); +#378 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#379 = PCURVE('',#380,#385); +#380 = PLANE('',#381); +#381 = AXIS2_PLACEMENT_3D('',#382,#383,#384); +#382 = CARTESIAN_POINT('',(0.,0.,19.999999552965)); +#383 = DIRECTION('',(0.,0.,1.)); +#384 = DIRECTION('',(1.,0.,0.)); +#385 = DEFINITIONAL_REPRESENTATION('',(#386),#394); +#386 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#387,#388,#389,#390,#391,#392 +,#393),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#387 = CARTESIAN_POINT('',(132.42991054761,102.18666633037)); +#388 = CARTESIAN_POINT('',(132.42991054761,231.16639046259)); +#389 = CARTESIAN_POINT('',(20.730192876013,166.67652839648)); +#390 = CARTESIAN_POINT('',(-90.96952479559,102.18666633037)); +#391 = CARTESIAN_POINT('',(20.730192876013,37.696804264271)); +#392 = CARTESIAN_POINT('',(132.42991054761,-26.79305780183)); +#393 = CARTESIAN_POINT('',(132.42991054761,102.18666633037)); +#394 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#395 = ORIENTED_EDGE('',*,*,#396,.F.); +#396 = EDGE_CURVE('',#21,#365,#397,.T.); +#397 = SURFACE_CURVE('',#398,(#402,#408),.PCURVE_S2.); +#398 = LINE('',#399,#400); +#399 = CARTESIAN_POINT('',(93.497879803181,36.745399236679, + -19.99999955296)); +#400 = VECTOR('',#401,1.); +#401 = DIRECTION('',(0.,0.,1.)); +#402 = PCURVE('',#46,#403); +#403 = DEFINITIONAL_REPRESENTATION('',(#404),#407); +#404 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#405,#406),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#405 = CARTESIAN_POINT('',(5.209840138517,0.)); +#406 = CARTESIAN_POINT('',(5.209840138517,39.99999910593)); +#407 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#408 = PCURVE('',#78,#409); +#409 = DEFINITIONAL_REPRESENTATION('',(#410),#413); +#410 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#411,#412),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#411 = CARTESIAN_POINT('',(4.214937822253,0.)); +#412 = CARTESIAN_POINT('',(4.214937822253,-39.99999910593)); +#413 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#414 = ORIENTED_EDGE('',*,*,#18,.F.); +#415 = ADVANCED_FACE('',(#416),#78,.T.); +#416 = FACE_BOUND('',#417,.T.); +#417 = EDGE_LOOP('',(#418,#419,#446,#465)); +#418 = ORIENTED_EDGE('',*,*,#396,.T.); +#419 = ORIENTED_EDGE('',*,*,#420,.T.); +#420 = EDGE_CURVE('',#365,#421,#423,.T.); +#421 = VERTEX_POINT('',#422); +#422 = CARTESIAN_POINT('',(93.497879803181,-41.78636148572, + 19.999999552965)); +#423 = SURFACE_CURVE('',#424,(#429,#435),.PCURVE_S2.); +#424 = CIRCLE('',#425,44.68116165083); +#425 = AXIS2_PLACEMENT_3D('',#426,#427,#428); +#426 = CARTESIAN_POINT('',(114.81915663942,-2.52048112452, + 19.999999552965)); +#427 = DIRECTION('',(0.,0.,-1.)); +#428 = DIRECTION('',(1.,0.,0.)); +#429 = PCURVE('',#78,#430); +#430 = DEFINITIONAL_REPRESENTATION('',(#431),#434); +#431 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#432,#433),.UNSPECIFIED.,.F.,.F., + (2,2),(4.214937822253,8.351432792106),.PIECEWISE_BEZIER_KNOTS.); +#432 = CARTESIAN_POINT('',(4.214937822253,-39.99999910593)); +#433 = CARTESIAN_POINT('',(8.351432792106,-39.99999910593)); +#434 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#435 = PCURVE('',#380,#436); +#436 = DEFINITIONAL_REPRESENTATION('',(#437),#445); +#437 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#438,#439,#440,#441,#442,#443 +,#444),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#438 = CARTESIAN_POINT('',(159.50031829025,-2.52048112452)); +#439 = CARTESIAN_POINT('',(159.50031829025,-79.91052324495)); +#440 = CARTESIAN_POINT('',(92.478575814005,-41.21550218473)); +#441 = CARTESIAN_POINT('',(25.45683333776,-2.52048112452)); +#442 = CARTESIAN_POINT('',(92.478575814005,36.174539935697)); +#443 = CARTESIAN_POINT('',(159.50031829025,74.869560995915)); +#444 = CARTESIAN_POINT('',(159.50031829025,-2.52048112452)); +#445 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#446 = ORIENTED_EDGE('',*,*,#447,.F.); +#447 = EDGE_CURVE('',#58,#421,#448,.T.); +#448 = SURFACE_CURVE('',#449,(#453,#459),.PCURVE_S2.); +#449 = LINE('',#450,#451); +#450 = CARTESIAN_POINT('',(93.497879803181,-41.78636148572, + -19.99999955296)); +#451 = VECTOR('',#452,1.); +#452 = DIRECTION('',(0.,0.,1.)); +#453 = PCURVE('',#78,#454); +#454 = DEFINITIONAL_REPRESENTATION('',(#455),#458); +#455 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#456,#457),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#456 = CARTESIAN_POINT('',(8.351432792106,0.)); +#457 = CARTESIAN_POINT('',(8.351432792106,-39.99999910593)); +#458 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#459 = PCURVE('',#110,#460); +#460 = DEFINITIONAL_REPRESENTATION('',(#461),#464); +#461 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#462,#463),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#462 = CARTESIAN_POINT('',(1.073345168663,0.)); +#463 = CARTESIAN_POINT('',(1.073345168663,39.99999910593)); +#464 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#465 = ORIENTED_EDGE('',*,*,#57,.F.); +#466 = ADVANCED_FACE('',(#467),#110,.F.); +#467 = FACE_BOUND('',#468,.T.); +#468 = EDGE_LOOP('',(#469,#470,#497,#517)); +#469 = ORIENTED_EDGE('',*,*,#447,.T.); +#470 = ORIENTED_EDGE('',*,*,#471,.T.); +#471 = EDGE_CURVE('',#421,#472,#474,.T.); +#472 = VERTEX_POINT('',#473); +#473 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + 19.999999552965)); +#474 = SURFACE_CURVE('',#475,(#480,#486),.PCURVE_S2.); +#475 = CIRCLE('',#476,84.24770250966); +#476 = AXIS2_PLACEMENT_3D('',#477,#478,#479); +#477 = CARTESIAN_POINT('',(53.295957524102,-115.8233848133, + 19.999999552965)); +#478 = DIRECTION('',(0.,0.,1.)); +#479 = DIRECTION('',(1.,0.,0.)); +#480 = PCURVE('',#110,#481); +#481 = DEFINITIONAL_REPRESENTATION('',(#482),#485); +#482 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#483,#484),.UNSPECIFIED.,.F.,.F., + (2,2),(1.073345168663,1.501387093594),.PIECEWISE_BEZIER_KNOTS.); +#483 = CARTESIAN_POINT('',(1.073345168663,39.99999910593)); +#484 = CARTESIAN_POINT('',(1.501387093594,39.99999910593)); +#485 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#486 = PCURVE('',#380,#487); +#487 = DEFINITIONAL_REPRESENTATION('',(#488),#496); +#488 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#489,#490,#491,#492,#493,#494 +,#495),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#489 = CARTESIAN_POINT('',(137.54366003376,-115.8233848133)); +#490 = CARTESIAN_POINT('',(137.54366003376,30.097916354281)); +#491 = CARTESIAN_POINT('',(11.172106269272,-42.86273422955)); +#492 = CARTESIAN_POINT('',(-115.1994474952,-115.8233848133)); +#493 = CARTESIAN_POINT('',(11.172106269272,-188.7840353972)); +#494 = CARTESIAN_POINT('',(137.54366003376,-261.744685981)); +#495 = CARTESIAN_POINT('',(137.54366003376,-115.8233848133)); +#496 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#497 = ORIENTED_EDGE('',*,*,#498,.F.); +#498 = EDGE_CURVE('',#90,#472,#499,.T.); +#499 = SURFACE_CURVE('',#500,(#504,#510),.PCURVE_S2.); +#500 = LINE('',#501,#502); +#501 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + -19.99999955296)); +#502 = VECTOR('',#503,1.); +#503 = DIRECTION('',(0.,0.,1.)); +#504 = PCURVE('',#110,#505); +#505 = DEFINITIONAL_REPRESENTATION('',(#506),#509); +#506 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#507,#508),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#507 = CARTESIAN_POINT('',(1.501387093594,0.)); +#508 = CARTESIAN_POINT('',(1.501387093594,39.99999910593)); +#509 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#510 = PCURVE('',#137,#511); +#511 = DEFINITIONAL_REPRESENTATION('',(#512),#516); +#512 = LINE('',#513,#514); +#513 = CARTESIAN_POINT('',(0.,0.)); +#514 = VECTOR('',#515,1.); +#515 = DIRECTION('',(0.,-1.)); +#516 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#517 = ORIENTED_EDGE('',*,*,#89,.F.); +#518 = ADVANCED_FACE('',(#519),#137,.T.); +#519 = FACE_BOUND('',#520,.T.); +#520 = EDGE_LOOP('',(#521,#522,#545,#565)); +#521 = ORIENTED_EDGE('',*,*,#498,.T.); +#522 = ORIENTED_EDGE('',*,*,#523,.T.); +#523 = EDGE_CURVE('',#472,#524,#526,.T.); +#524 = VERTEX_POINT('',#525); +#525 = CARTESIAN_POINT('',(-72.42252677679,-22.63227291405, + 19.999999552965)); +#526 = SURFACE_CURVE('',#527,(#531,#538),.PCURVE_S2.); +#527 = LINE('',#528,#529); +#528 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384, + 19.999999552965)); +#529 = VECTOR('',#530,1.); +#530 = DIRECTION('',(-0.997592146088,6.935351515554E-02,0.)); +#531 = PCURVE('',#137,#532); +#532 = DEFINITIONAL_REPRESENTATION('',(#533),#537); +#533 = LINE('',#534,#535); +#534 = CARTESIAN_POINT('',(0.,-39.99999910593)); +#535 = VECTOR('',#536,1.); +#536 = DIRECTION('',(1.,0.)); +#537 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#538 = PCURVE('',#380,#539); +#539 = DEFINITIONAL_REPRESENTATION('',(#540),#544); +#540 = LINE('',#541,#542); +#541 = CARTESIAN_POINT('',(59.138831836925,-31.77853846384)); +#542 = VECTOR('',#543,1.); +#543 = DIRECTION('',(-0.997592146088,6.935351515554E-02)); +#544 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#545 = ORIENTED_EDGE('',*,*,#546,.F.); +#546 = EDGE_CURVE('',#122,#524,#547,.T.); +#547 = SURFACE_CURVE('',#548,(#552,#559),.PCURVE_S2.); +#548 = LINE('',#549,#550); +#549 = CARTESIAN_POINT('',(-72.42252677679,-22.63227291405, + -19.99999955296)); +#550 = VECTOR('',#551,1.); +#551 = DIRECTION('',(0.,0.,1.)); +#552 = PCURVE('',#137,#553); +#553 = DEFINITIONAL_REPRESENTATION('',(#554),#558); +#554 = LINE('',#555,#556); +#555 = CARTESIAN_POINT('',(131.87890374807,0.)); +#556 = VECTOR('',#557,1.); +#557 = DIRECTION('',(0.,-1.)); +#558 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#559 = PCURVE('',#170,#560); +#560 = DEFINITIONAL_REPRESENTATION('',(#561),#564); +#561 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#562,#563),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#562 = CARTESIAN_POINT('',(1.501387093594,0.)); +#563 = CARTESIAN_POINT('',(1.501387093594,39.99999910593)); +#564 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#565 = ORIENTED_EDGE('',*,*,#121,.F.); +#566 = ADVANCED_FACE('',(#567),#170,.F.); +#567 = FACE_BOUND('',#568,.T.); +#568 = EDGE_LOOP('',(#569,#570,#597,#616)); +#569 = ORIENTED_EDGE('',*,*,#546,.T.); +#570 = ORIENTED_EDGE('',*,*,#571,.T.); +#571 = EDGE_CURVE('',#524,#572,#574,.T.); +#572 = VERTEX_POINT('',#573); +#573 = CARTESIAN_POINT('',(-88.51642906665,-27.22925320267, + 19.999999552965)); +#574 = SURFACE_CURVE('',#575,(#580,#586),.PCURVE_S2.); +#575 = CIRCLE('',#576,24.565238684828); +#576 = AXIS2_PLACEMENT_3D('',#577,#578,#579); +#577 = CARTESIAN_POINT('',(-74.12621243021,-47.1383620928, + 19.999999552965)); +#578 = DIRECTION('',(0.,0.,1.)); +#579 = DIRECTION('',(1.,0.,0.)); +#580 = PCURVE('',#170,#581); +#581 = DEFINITIONAL_REPRESENTATION('',(#582),#585); +#582 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#583,#584),.UNSPECIFIED.,.F.,.F., + (2,2),(1.501387093594,2.196658099744),.PIECEWISE_BEZIER_KNOTS.); +#583 = CARTESIAN_POINT('',(1.501387093594,39.99999910593)); +#584 = CARTESIAN_POINT('',(2.196658099744,39.99999910593)); +#585 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#586 = PCURVE('',#380,#587); +#587 = DEFINITIONAL_REPRESENTATION('',(#588),#596); +#588 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#589,#590,#591,#592,#593,#594 +,#595),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#589 = CARTESIAN_POINT('',(-49.56097374539,-47.1383620928)); +#590 = CARTESIAN_POINT('',(-49.56097374539,-4.590120590624)); +#591 = CARTESIAN_POINT('',(-86.40883177263,-25.86424134171)); +#592 = CARTESIAN_POINT('',(-123.2566897998,-47.1383620928)); +#593 = CARTESIAN_POINT('',(-86.40883177263,-68.41248284389)); +#594 = CARTESIAN_POINT('',(-49.56097374539,-89.68660359498)); +#595 = CARTESIAN_POINT('',(-49.56097374539,-47.1383620928)); +#596 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#597 = ORIENTED_EDGE('',*,*,#598,.F.); +#598 = EDGE_CURVE('',#150,#572,#599,.T.); +#599 = SURFACE_CURVE('',#600,(#604,#610),.PCURVE_S2.); +#600 = LINE('',#601,#602); +#601 = CARTESIAN_POINT('',(-88.51642906665,-27.22925320267, + -19.99999955296)); +#602 = VECTOR('',#603,1.); +#603 = DIRECTION('',(0.,0.,1.)); +#604 = PCURVE('',#170,#605); +#605 = DEFINITIONAL_REPRESENTATION('',(#606),#609); +#606 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#607,#608),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#607 = CARTESIAN_POINT('',(2.196658099744,0.)); +#608 = CARTESIAN_POINT('',(2.196658099744,39.99999910593)); +#609 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#610 = PCURVE('',#202,#611); +#611 = DEFINITIONAL_REPRESENTATION('',(#612),#615); +#612 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#613,#614),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#613 = CARTESIAN_POINT('',(0.944934553846,0.)); +#614 = CARTESIAN_POINT('',(0.944934553846,-39.99999910593)); +#615 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#616 = ORIENTED_EDGE('',*,*,#149,.F.); +#617 = ADVANCED_FACE('',(#618),#202,.T.); +#618 = FACE_BOUND('',#619,.T.); +#619 = EDGE_LOOP('',(#620,#621,#648,#667)); +#620 = ORIENTED_EDGE('',*,*,#598,.T.); +#621 = ORIENTED_EDGE('',*,*,#622,.T.); +#622 = EDGE_CURVE('',#572,#623,#625,.T.); +#623 = VERTEX_POINT('',#624); +#624 = CARTESIAN_POINT('',(-88.51642906665,21.039046347141, + 19.999999552965)); +#625 = SURFACE_CURVE('',#626,(#631,#637),.PCURVE_S2.); +#626 = CIRCLE('',#627,29.778387016109); +#627 = AXIS2_PLACEMENT_3D('',#628,#629,#630); +#628 = CARTESIAN_POINT('',(-105.9604867346,-3.095103427768, + 19.999999552965)); +#629 = DIRECTION('',(0.,0.,-1.)); +#630 = DIRECTION('',(1.,0.,0.)); +#631 = PCURVE('',#202,#632); +#632 = DEFINITIONAL_REPRESENTATION('',(#633),#636); +#633 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#634,#635),.UNSPECIFIED.,.F.,.F., + (2,2),(0.944934553846,5.338250753333),.PIECEWISE_BEZIER_KNOTS.); +#634 = CARTESIAN_POINT('',(0.944934553846,-39.99999910593)); +#635 = CARTESIAN_POINT('',(5.338250753333,-39.99999910593)); +#636 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#637 = PCURVE('',#380,#638); +#638 = DEFINITIONAL_REPRESENTATION('',(#639),#647); +#639 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#640,#641,#642,#643,#644,#645 +,#646),.UNSPECIFIED.,.T.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#640 = CARTESIAN_POINT('',(-76.18209971851,-3.095103427768)); +#641 = CARTESIAN_POINT('',(-76.18209971851,-54.67278270711)); +#642 = CARTESIAN_POINT('',(-120.8496802426,-28.88394306744)); +#643 = CARTESIAN_POINT('',(-165.5172607668,-3.095103427768)); +#644 = CARTESIAN_POINT('',(-120.8496802426,22.693736211908)); +#645 = CARTESIAN_POINT('',(-76.18209971851,48.482575851583)); +#646 = CARTESIAN_POINT('',(-76.18209971851,-3.095103427768)); +#647 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#648 = ORIENTED_EDGE('',*,*,#649,.F.); +#649 = EDGE_CURVE('',#182,#623,#650,.T.); +#650 = SURFACE_CURVE('',#651,(#655,#661),.PCURVE_S2.); +#651 = LINE('',#652,#653); +#652 = CARTESIAN_POINT('',(-88.51642906665,21.039046347141, + -19.99999955296)); +#653 = VECTOR('',#654,1.); +#654 = DIRECTION('',(0.,0.,1.)); +#655 = PCURVE('',#202,#656); +#656 = DEFINITIONAL_REPRESENTATION('',(#657),#660); +#657 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#658,#659),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#658 = CARTESIAN_POINT('',(5.338250753333,0.)); +#659 = CARTESIAN_POINT('',(5.338250753333,-39.99999910593)); +#660 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#661 = PCURVE('',#234,#662); +#662 = DEFINITIONAL_REPRESENTATION('',(#663),#666); +#663 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#664,#665),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#664 = CARTESIAN_POINT('',(4.086527207436,0.)); +#665 = CARTESIAN_POINT('',(4.086527207436,39.99999910593)); +#666 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#667 = ORIENTED_EDGE('',*,*,#181,.F.); +#668 = ADVANCED_FACE('',(#669),#234,.F.); +#669 = FACE_BOUND('',#670,.T.); +#670 = EDGE_LOOP('',(#671,#672,#699,#719)); +#671 = ORIENTED_EDGE('',*,*,#649,.T.); +#672 = ORIENTED_EDGE('',*,*,#673,.T.); +#673 = EDGE_CURVE('',#623,#674,#676,.T.); +#674 = VERTEX_POINT('',#675); +#675 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + 19.999999552965)); +#676 = SURFACE_CURVE('',#677,(#682,#688),.PCURVE_S2.); +#677 = CIRCLE('',#678,20.41914254867); +#678 = AXIS2_PLACEMENT_3D('',#679,#680,#681); +#679 = CARTESIAN_POINT('',(-76.55497863763,37.587915977932, + 19.999999552965)); +#680 = DIRECTION('',(0.,0.,1.)); +#681 = DIRECTION('',(1.,0.,0.)); +#682 = PCURVE('',#234,#683); +#683 = DEFINITIONAL_REPRESENTATION('',(#684),#687); +#684 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#685,#686),.UNSPECIFIED.,.F.,.F., + (2,2),(4.086527207436,4.916177873213),.PIECEWISE_BEZIER_KNOTS.); +#685 = CARTESIAN_POINT('',(4.086527207436,39.99999910593)); +#686 = CARTESIAN_POINT('',(4.916177873213,39.99999910593)); +#687 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#688 = PCURVE('',#380,#689); +#689 = DEFINITIONAL_REPRESENTATION('',(#690),#698); +#690 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#691,#692,#693,#694,#695,#696 +,#697),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#691 = CARTESIAN_POINT('',(-56.13583608896,37.587915977932)); +#692 = CARTESIAN_POINT('',(-56.13583608896,72.954908319219)); +#693 = CARTESIAN_POINT('',(-86.76454991196,55.271412148575)); +#694 = CARTESIAN_POINT('',(-117.3932637349,37.587915977932)); +#695 = CARTESIAN_POINT('',(-86.76454991196,19.904419807288)); +#696 = CARTESIAN_POINT('',(-56.13583608896,2.220923636644)); +#697 = CARTESIAN_POINT('',(-56.13583608896,37.587915977932)); +#698 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#699 = ORIENTED_EDGE('',*,*,#700,.F.); +#700 = EDGE_CURVE('',#214,#674,#701,.T.); +#701 = SURFACE_CURVE('',#702,(#706,#712),.PCURVE_S2.); +#702 = LINE('',#703,#704); +#703 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + -19.99999955296)); +#704 = VECTOR('',#705,1.); +#705 = DIRECTION('',(0.,0.,1.)); +#706 = PCURVE('',#234,#707); +#707 = DEFINITIONAL_REPRESENTATION('',(#708),#711); +#708 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#709,#710),.UNSPECIFIED.,.F.,.F., + (2,2),(0.,39.99999910593),.PIECEWISE_BEZIER_KNOTS.); +#709 = CARTESIAN_POINT('',(4.916177873213,0.)); +#710 = CARTESIAN_POINT('',(4.916177873213,39.99999910593)); +#711 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#712 = PCURVE('',#259,#713); +#713 = DEFINITIONAL_REPRESENTATION('',(#714),#718); +#714 = LINE('',#715,#716); +#715 = CARTESIAN_POINT('',(0.,0.)); +#716 = VECTOR('',#717,1.); +#717 = DIRECTION('',(0.,-1.)); +#718 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#719 = ORIENTED_EDGE('',*,*,#213,.F.); +#720 = ADVANCED_FACE('',(#721),#259,.T.); +#721 = FACE_BOUND('',#722,.T.); +#722 = EDGE_LOOP('',(#723,#724,#745,#746)); +#723 = ORIENTED_EDGE('',*,*,#700,.T.); +#724 = ORIENTED_EDGE('',*,*,#725,.T.); +#725 = EDGE_CURVE('',#674,#343,#726,.T.); +#726 = SURFACE_CURVE('',#727,(#731,#738),.PCURVE_S2.); +#727 = LINE('',#728,#729); +#728 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011, + 19.999999552965)); +#729 = VECTOR('',#730,1.); +#730 = DIRECTION('',(0.997121794488,7.581640296081E-02,0.)); +#731 = PCURVE('',#259,#732); +#732 = DEFINITIONAL_REPRESENTATION('',(#733),#737); +#733 = LINE('',#734,#735); +#734 = CARTESIAN_POINT('',(0.,-39.99999910593)); +#735 = VECTOR('',#736,1.); +#736 = DIRECTION('',(1.,0.)); +#737 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#738 = PCURVE('',#380,#739); +#739 = DEFINITIONAL_REPRESENTATION('',(#740),#744); +#740 = LINE('',#741,#742); +#741 = CARTESIAN_POINT('',(-72.42252677679,17.591310665011)); +#742 = VECTOR('',#743,1.); +#743 = DIRECTION('',(0.997121794488,7.581640296081E-02)); +#744 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#745 = ORIENTED_EDGE('',*,*,#342,.F.); +#746 = ORIENTED_EDGE('',*,*,#245,.F.); +#747 = ADVANCED_FACE('',(#748),#294,.F.); +#748 = FACE_BOUND('',#749,.T.); +#749 = EDGE_LOOP('',(#750,#771,#796,#797)); +#750 = ORIENTED_EDGE('',*,*,#751,.T.); +#751 = EDGE_CURVE('',#274,#752,#754,.T.); +#752 = VERTEX_POINT('',#753); +#753 = CARTESIAN_POINT('',(-91.4143372247,-2.809300087392, + 19.999999552965)); +#754 = SEAM_CURVE('',#755,(#759,#765),.PCURVE_S2.); +#755 = LINE('',#756,#757); +#756 = CARTESIAN_POINT('',(-91.4143372247,-2.809300087392, + -40.00019910593)); +#757 = VECTOR('',#758,1.); +#758 = DIRECTION('',(0.,0.,1.)); +#759 = PCURVE('',#294,#760); +#760 = DEFINITIONAL_REPRESENTATION('',(#761),#764); +#761 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#762,#763),.UNSPECIFIED.,.F.,.F., + (2,2),(20.000199552965,60.000198658895),.PIECEWISE_BEZIER_KNOTS.); +#762 = CARTESIAN_POINT('',(0.,20.000199552965)); +#763 = CARTESIAN_POINT('',(0.,60.000198658895)); +#764 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#765 = PCURVE('',#294,#766); +#766 = DEFINITIONAL_REPRESENTATION('',(#767),#770); +#767 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#768,#769),.UNSPECIFIED.,.F.,.F., + (2,2),(20.000199552965,60.000198658895),.PIECEWISE_BEZIER_KNOTS.); +#768 = CARTESIAN_POINT('',(6.28318530718,20.000199552965)); +#769 = CARTESIAN_POINT('',(6.28318530718,60.000198658895)); +#770 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#771 = ORIENTED_EDGE('',*,*,#772,.F.); +#772 = EDGE_CURVE('',#752,#752,#773,.T.); +#773 = SURFACE_CURVE('',#774,(#779,#785),.PCURVE_S2.); +#774 = CIRCLE('',#775,15.057678156153); +#775 = AXIS2_PLACEMENT_3D('',#776,#777,#778); +#776 = CARTESIAN_POINT('',(-106.4720153808,-2.809300087392, + 19.999999552965)); +#777 = DIRECTION('',(0.,0.,-1.)); +#778 = DIRECTION('',(0.,1.,0.)); +#779 = PCURVE('',#294,#780); +#780 = DEFINITIONAL_REPRESENTATION('',(#781),#784); +#781 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#782,#783),.UNSPECIFIED.,.F.,.F., + (2,2),(1.570796326795,7.853981633974),.PIECEWISE_BEZIER_KNOTS.); +#782 = CARTESIAN_POINT('',(6.28318530718,60.000198658895)); +#783 = CARTESIAN_POINT('',(0.,60.000198658895)); +#784 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#785 = PCURVE('',#380,#786); +#786 = DEFINITIONAL_REPRESENTATION('',(#787),#795); +#787 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#788,#789,#790,#791,#792,#793 +,#794),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#788 = CARTESIAN_POINT('',(-106.4720153808,12.24837806876)); +#789 = CARTESIAN_POINT('',(-80.39135177038,12.24837806876)); +#790 = CARTESIAN_POINT('',(-93.43168357562,-10.33813916546)); +#791 = CARTESIAN_POINT('',(-106.4720153808,-32.92465639969)); +#792 = CARTESIAN_POINT('',(-119.512347186,-10.33813916546)); +#793 = CARTESIAN_POINT('',(-132.5526789913,12.24837806876)); +#794 = CARTESIAN_POINT('',(-106.4720153808,12.24837806876)); +#795 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#796 = ORIENTED_EDGE('',*,*,#751,.F.); +#797 = ORIENTED_EDGE('',*,*,#273,.T.); +#798 = ADVANCED_FACE('',(#799),#328,.F.); +#799 = FACE_BOUND('',#800,.T.); +#800 = EDGE_LOOP('',(#801,#822,#847,#848)); +#801 = ORIENTED_EDGE('',*,*,#802,.T.); +#802 = EDGE_CURVE('',#308,#803,#805,.T.); +#803 = VERTEX_POINT('',#804); +#804 = CARTESIAN_POINT('',(141.97662545896,-4.606760106981, + 19.999999552965)); +#805 = SEAM_CURVE('',#806,(#810,#816),.PCURVE_S2.); +#806 = LINE('',#807,#808); +#807 = CARTESIAN_POINT('',(141.97662545896,-4.606760106981, + -40.00019910593)); +#808 = VECTOR('',#809,1.); +#809 = DIRECTION('',(0.,0.,1.)); +#810 = PCURVE('',#328,#811); +#811 = DEFINITIONAL_REPRESENTATION('',(#812),#815); +#812 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#813,#814),.UNSPECIFIED.,.F.,.F., + (2,2),(20.000199552965,60.000198658895),.PIECEWISE_BEZIER_KNOTS.); +#813 = CARTESIAN_POINT('',(0.,20.000199552965)); +#814 = CARTESIAN_POINT('',(0.,60.000198658895)); +#815 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#816 = PCURVE('',#328,#817); +#817 = DEFINITIONAL_REPRESENTATION('',(#818),#821); +#818 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#819,#820),.UNSPECIFIED.,.F.,.F., + (2,2),(20.000199552965,60.000198658895),.PIECEWISE_BEZIER_KNOTS.); +#819 = CARTESIAN_POINT('',(6.28318530718,20.000199552965)); +#820 = CARTESIAN_POINT('',(6.28318530718,60.000198658895)); +#821 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#822 = ORIENTED_EDGE('',*,*,#823,.F.); +#823 = EDGE_CURVE('',#803,#803,#824,.T.); +#824 = SURFACE_CURVE('',#825,(#830,#836),.PCURVE_S2.); +#825 = CIRCLE('',#826,23.40416683412); +#826 = AXIS2_PLACEMENT_3D('',#827,#828,#829); +#827 = CARTESIAN_POINT('',(118.57245862484,-4.606760106981, + 19.999999552965)); +#828 = DIRECTION('',(0.,0.,-1.)); +#829 = DIRECTION('',(0.,1.,0.)); +#830 = PCURVE('',#328,#831); +#831 = DEFINITIONAL_REPRESENTATION('',(#832),#835); +#832 = B_SPLINE_CURVE_WITH_KNOTS('',1,(#833,#834),.UNSPECIFIED.,.F.,.F., + (2,2),(1.570796326795,7.853981633974),.PIECEWISE_BEZIER_KNOTS.); +#833 = CARTESIAN_POINT('',(6.28318530718,60.000198658895)); +#834 = CARTESIAN_POINT('',(0.,60.000198658895)); +#835 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#836 = PCURVE('',#380,#837); +#837 = DEFINITIONAL_REPRESENTATION('',(#838),#846); +#838 = ( BOUNDED_CURVE() B_SPLINE_CURVE(2,(#839,#840,#841,#842,#843,#844 +,#845),.UNSPECIFIED.,.F.,.F.) B_SPLINE_CURVE_WITH_KNOTS((1,2,2,2,2,1),( + -2.094395102393,0.,2.094395102393,4.188790204786,6.28318530718, +8.377580409573),.UNSPECIFIED.) CURVE() GEOMETRIC_REPRESENTATION_ITEM() +RATIONAL_B_SPLINE_CURVE((1.,0.5,1.,0.5,1.,0.5,1.)) REPRESENTATION_ITEM( + '') ); +#839 = CARTESIAN_POINT('',(118.57245862484,18.797406727139)); +#840 = CARTESIAN_POINT('',(159.10966469035,18.797406727139)); +#841 = CARTESIAN_POINT('',(138.84106165759,-16.30884352404)); +#842 = CARTESIAN_POINT('',(118.57245862484,-51.41509377522)); +#843 = CARTESIAN_POINT('',(98.303855592083,-16.30884352404)); +#844 = CARTESIAN_POINT('',(78.035252559326,18.797406727139)); +#845 = CARTESIAN_POINT('',(118.57245862484,18.797406727139)); +#846 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) +PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' + ) ); +#847 = ORIENTED_EDGE('',*,*,#802,.F.); +#848 = ORIENTED_EDGE('',*,*,#307,.T.); +#849 = ADVANCED_FACE('',(#850,#860,#863),#380,.T.); +#850 = FACE_BOUND('',#851,.F.); +#851 = EDGE_LOOP('',(#852,#853,#854,#855,#856,#857,#858,#859)); +#852 = ORIENTED_EDGE('',*,*,#364,.T.); +#853 = ORIENTED_EDGE('',*,*,#420,.T.); +#854 = ORIENTED_EDGE('',*,*,#471,.T.); +#855 = ORIENTED_EDGE('',*,*,#523,.T.); +#856 = ORIENTED_EDGE('',*,*,#571,.T.); +#857 = ORIENTED_EDGE('',*,*,#622,.T.); +#858 = ORIENTED_EDGE('',*,*,#673,.T.); +#859 = ORIENTED_EDGE('',*,*,#725,.T.); +#860 = FACE_BOUND('',#861,.T.); +#861 = EDGE_LOOP('',(#862)); +#862 = ORIENTED_EDGE('',*,*,#772,.T.); +#863 = FACE_BOUND('',#864,.T.); +#864 = EDGE_LOOP('',(#865)); +#865 = ORIENTED_EDGE('',*,*,#823,.T.); +#866 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#869)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#867,#868)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#867 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#868 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#869 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-04),#867, + 'distance_accuracy_value','Confusion accuracy'); +ENDSEC; +END-ISO-10303-21; + diff --git a/src/TEST_PY/test_unit/bielle_v1.py b/src/TEST_PY/test_unit/bielle_v1.py new file mode 100644 index 0000000..466e9c5 --- /dev/null +++ b/src/TEST_PY/test_unit/bielle_v1.py @@ -0,0 +1,275 @@ +# -*- coding: latin-1 -*- +# Copyright (C) 2009-2012 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# Francis KLOSS : 2011-2012 : CEA-Saclay, DEN, DM2S, SFME, LGLS, F-91191 Gif-sur-Yvette, France +# ============================================================================================= + +import math + +import geompy +import hexablock + +# Construire le modèle de bloc +# ============================ + +doc = hexablock.addDocument("bielle") + +# Construire les 2 grilles cylindriques +# ------------------------------------- + +centre_pb = doc.addVertex(0, 0, 0) +centre_gb = doc.addVertex(7, 0, 0) + +angle_px = math.pi / 3 +vecteur_px = doc.addVector(math.cos(angle_px), math.sin(angle_px), 0) +vecteur_gx = doc.addVector(1, 0, 0) + +vecteur_z = doc.addVector(0, 0, 1) + +grille_p = doc.makeCylindrical(centre_pb, vecteur_px, vecteur_z, 1, 360, 1, 1, 3, 1, False) +grille_g = doc.makeCylindrical(centre_gb, vecteur_gx, vecteur_z, 1, 360, 1, 1, 3, 1, False) + +# Relier les 2 grilles +# -------------------- + +quad_p = grille_p.getQuadJK(1, 2, 0) +quad_g = grille_g.getQuadJK(1, 1, 0) + +point_p1 = grille_p.getVertexIJK(1, 0, 0) +point_p2 = grille_p.getVertexIJK(1, 2, 0) + +point_g1 = grille_g.getVertexIJK(1, 1, 0) +point_g2 = grille_g.getVertexIJK(1, 2, 0) + +prisme = doc.joinQuad(quad_p, quad_g, point_p1, point_g1, point_p2, point_g2, 3) + +# Charger la géométrie +# ==================== + +bielle = geompy.ImportSTEP("bielle.stp") + +# Sélectionner des sous-parties de la géométrie +# --------------------------------------------- + +sommets = geompy.SubShapeAllSortedCentres(bielle, geompy.ShapeType["VERTEX"]) + +sommets_petit = [ 6, 8, 7, 9 ] +sommets_grand = [ 10, 12, 11, 13 ] + +aretes = geompy.SubShapeAllSortedCentres(bielle, geompy.ShapeType["EDGE"]) + +aretes_petit = [ 7, 9, 8, 10 ] +aretes_grand = [ 19, 21, 20, 22 ] + +ga_pbcd = aretes[ 0] +ga_pbe = aretes[ 2] + +ga_phcd = aretes[ 1] +ga_phe = aretes[ 3] + +ga_gbcd = aretes[27] +ga_gbe = aretes[25] + +ga_ghcd = aretes[28] +ga_ghe = aretes[26] + +# Associer le modèle de bloc avec la géométrie +# ============================================ + +doc.setShape(bielle) + +# Netoyer les associations implicites du prisme +# --------------------------------------------- + +for i in xrange( prisme.countEdge() ): + em = prisme.getEdge(i) + if em != None: + em.clearAssociation() + +# Associer les cercles extérieurs +# ------------------------------- + +def cercle(grille, k, ge, p): + ms = grille.getVertexIJK(0, 0, k) + + ma1 = grille.getEdgeJ(0, 2, k) + ma2 = grille.getEdgeJ(0, 1, k) + ma3 = grille.getEdgeJ(0, 0, k) + + doc.associateClosedLine(ms, ma1, [ ma2, ma3 ], ge, p, False, []) + +cercle(grille_p, 0, ga_pbe, 5.0/6) +cercle(grille_p, 1, ga_phe, 5.0/6) + +cercle(grille_g, 0, ga_gbe, 0) +cercle(grille_g, 1, ga_ghe, 0) + +# Associer les arcs extérieurs (excentrés) +# ---------------------------------------- + +def arc(grille, i1, i2, k, ge): + ma1 = grille.getEdgeJ(1, i1, k) + ma2 = grille.getEdgeJ(1, i2, k) + + doc.associateOpenedLine(ma1, [ ma2 ], ge, 0, [], 1) + +arc(grille_p, 1, 0, 0, ga_pbcd) +arc(grille_p, 1, 0, 1, ga_phcd) + +arc(grille_g, 0, 2, 0, ga_gbcd) +arc(grille_g, 0, 2, 1, ga_ghcd) + +# Associer les sommets des arcs de cercle de raccord +# -------------------------------------------------- + +hm = prisme.getHexa(1) +for i in xrange(0, 4): + vm = hm.getVertex(i) + ga = sommets[ sommets_petit[i] ] + vm.setAssociation(ga) + +hm = prisme.getHexa(2) +for i in xrange(0, 4): + vm = hm.getVertex(i) + ga = sommets[ sommets_grand[i] ] + vm.setAssociation(ga) + +# Associer les arcs de cercle de raccord +# -------------------------------------- + +hm = prisme.getHexa(0) +for i in xrange(0, 4): + em = hm.getEdge(i+8) + ga = aretes[ aretes_petit[i] ] + em.addAssociation(ga, 0, 1) + +hm = prisme.getHexa(2) +for i in xrange(0, 4): + em = hm.getEdge(i+8) + ga = aretes[ aretes_grand[i] ] + em.addAssociation(ga, 0, 1) + +# Arrondir des associations implicites cylindriques +# ------------------------------------------------- + +for h, i, ech in [ [0, 0, 0.95], [0, 1, 0.95], [2, 2, 0.85], [2, 3, 0.85] ]: + hm = prisme.getHexa(h) + em = hm.getEdge(i) + + va = em.getVertex(0).getAssociation() + vb = em.getVertex(1).getAssociation() + vax, vay, vaz = geompy.PointCoordinates(va) + vbx, vby, vbz = geompy.PointCoordinates(vb) + + va = em.getVertex(0) + vb = em.getVertex(1) + + print " vax, vay, vaz = ", vax, vay, vaz + vax = va.getAssoX (); + vay = va.getAssoY (); + vaz = va.getAssoZ (); + print " vax, vay, vaz = ", vax, vay, vaz + + print " vbx, vby, vbz = ", vbx, vby, vbz + vbx = vb.getAssoX (); + vby = vb.getAssoY (); + vbz = vb.getAssoZ (); + print " vbx, vby, vbz = ", vbx, vby, vbz + + vmx = ( vax + vbx ) / 2.0 * ech + vmy = ( vay + vby ) / 2.0 + vmz = ( vaz + vbz ) / 2.0 + vm = geompy.MakeVertex(vmx, vmy, vmz) + eg = geompy.MakeArc(va, vm, vb) + em.clearAssociation() + em.addAssociation(eg, 0, 1) + +# Mailler le modèle de bloc +# ========================= + +# Définir 5 groupes de faces +# -------------------------- + +groupe_petit = doc.addQuadGroup("Petit") +groupe_grand = doc.addQuadGroup("Grand") +groupe_bas = doc.addQuadGroup("Bas") +groupe_haut = doc.addQuadGroup("Haut") +groupe_contour = doc.addQuadGroup("Contour") + +# Constituer les groupes petit et grand +# ------------------------------------- + +for i in xrange(3): + groupe_petit.addElement( grille_p.getQuadJK(0, i, 0) ) + groupe_grand.addElement( grille_g.getQuadJK(0, i, 0) ) + +# Constituer les groupes bas et haut +# ---------------------------------- + +for i in xrange(3): + groupe_bas.addElement( grille_p.getQuadIJ(0, i, 0) ) + groupe_bas.addElement( grille_g.getQuadIJ(0, i, 0) ) + + groupe_haut.addElement( grille_p.getQuadIJ(0, i, 1) ) + groupe_haut.addElement( grille_g.getQuadIJ(0, i, 1) ) + +for i in xrange(3): + h = prisme.getHexa(i) + + groupe_bas.addElement( h.getQuad(2) ) + groupe_haut.addElement( h.getQuad(3) ) + +# Constituer le groupe contour +# ---------------------------- + +for i in xrange(2): + groupe_contour.addElement( grille_p.getQuadJK(1, i, 0) ) + +for i in [0, 2]: + groupe_contour.addElement( grille_g.getQuadJK(1, i, 0) ) + +for i in xrange(3): + h = prisme.getHexa(i) + + groupe_contour.addElement( h.getQuad(4) ) + groupe_contour.addElement( h.getQuad(5) ) + +# Définir 3 groupes de volumes +# ---------------------------- + +groupe_petit = doc.addHexaGroup("Petit") +groupe_grand = doc.addHexaGroup("Grand") +groupe_prisme = doc.addHexaGroup("Prisme") + +for i in xrange(3): + groupe_petit.addElement( grille_p.getHexa(i) ) + groupe_grand.addElement( grille_g.getHexa(i) ) + +for i in xrange(3): + groupe_prisme.addElement( prisme.getHexa(i) ) + +# Mailler le modèle de bloc avec association +# ------------------------------------------ + +hexablock.addLaws(doc, 0.003, True) + +blocs = hexablock.mesh(doc) + +muv, mue, muq, muh = hexablock.dump(doc, blocs) diff --git a/src/TEST_PY/test_unit/bielle_v5.py b/src/TEST_PY/test_unit/bielle_v5.py new file mode 100644 index 0000000..f16e97e --- /dev/null +++ b/src/TEST_PY/test_unit/bielle_v5.py @@ -0,0 +1,315 @@ +# -*- coding: latin-1 -*- +# Copyright (C) 2009-2012 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# Francis KLOSS : 2011-2012 : CEA-Saclay, DEN, DM2S, SFME, LGLS, F-91191 Gif-sur-Yvette, France +# ============================================================================================= + +import math + +import geompy +import hexablock + +# Construire le modele de bloc +# ============================ + +doc = hexablock.addDocument("bielle_v5") + +# Construire les 2 grilles cylindriques +# ------------------------------------- + +centre_pb = doc.addVertex(-0.107, 0, -0.02) +centre_gb = doc.addVertex(0.119, 0, -0.02) + +angle_px = math.pi / 3 +vecteur_px = doc.addVector(math.cos(angle_px), math.sin(angle_px), 0) +vecteur_gx = doc.addVector(1, 0, 0) + +vecteur_z = doc.addVector(0, 0, 1) + +grille_p = doc.makeCylindrical(centre_pb, vecteur_px, vecteur_z, 0.012, 360, 0.04, 1, 3, 1, False) +grille_g = doc.makeCylindrical(centre_gb, vecteur_gx, vecteur_z, 0.025, 360, 0.04, 1, 3, 1, False) + +# Relier les 2 grilles +# -------------------- + +quad_p = grille_p.getQuadJK(1, 2, 0) +quad_g = grille_g.getQuadJK(1, 1, 0) + +point_p1 = grille_p.getVertexIJK(1, 0, 0) +point_p2 = grille_p.getVertexIJK(1, 2, 0) + +point_g1 = grille_g.getVertexIJK(1, 1, 0) +point_g2 = grille_g.getVertexIJK(1, 2, 0) + +prisme = doc.joinQuad(quad_p, quad_g, point_p1, point_g1, point_p2, point_g2, 3) + +# Charger la geometrie +# ==================== + +bielle = geompy.ImportSTEP("bielle.stp") + +# Selectionner des sous-parties de la geometrie +# --------------------------------------------- + +sommets = geompy.SubShapeAllSortedCentres (bielle, geompy.ShapeType["VERTEX"]) +nodes_id = geompy.SubShapeAllSortedCentresIDs (bielle, geompy.ShapeType["VERTEX"]) + ## 0 1 2 3 4 5 6 7 8 9 + ## 23, 70, 15, 52, 17, 57, 13, 47, 19, 62, + ## 11, 42, 6, 30, 9, 37, 7, 32, 26, 75] + +sommets_petit = [ 6, 8, 7, 9 ] +sommets_grand = [ 10, 12, 11, 13 ] +node_little_subid = [ 13, 19, 47, 62 ] +node_big_subid = [ 11, 6, 42, 30 ] + +aretes = geompy.SubShapeAllSortedCentres (bielle, geompy.ShapeType["EDGE"]) +edge_id = geompy.SubShapeAllSortedCentresIDs (bielle, geompy.ShapeType["EDGE"]) + ## 0 1 2 3 4 5 6 7 8 9 + ## 16, 56, 22, 71, 69, 53, 58, 14, 51, 18, + ## 61, 48, 63, 12, 46, 20, 66, 43, 29, 10, + ## 41, 5, 31, 38, 33, 25, 76, 8, 36, 74 + + +aretes_petit = [ 7, 9, 8, 10 ] +aretes_grand = [ 19, 21, 20, 22 ] +arc_little_subid = [ 14, 18, 51, 61 ] +arc_big_subid = [ 10, 5, 41, 31 ] + +subid_pbcd = 16 +subid_pbe = 22 + +subid_phcd = 56 +subid_phe = 71 + +subid_gbcd = 8 +subid_gbe = 25 + +subid_ghcd = 36 +subid_ghe = 76 + +ga_pbcd = aretes[ 0] +ga_pbe = aretes[ 2] + +ga_phcd = aretes[ 1] +ga_phe = aretes[ 3] + +ga_gbcd = aretes[27] +ga_gbe = aretes[25] + +ga_ghcd = aretes[28] +ga_ghe = aretes[26] + +# Associer le modele de bloc avec la geometrie +# ============================================ + +geometry = doc.addShape(bielle, "bielle") +doc.setLevel (748) + +# Nettoyer les associations implicites du document +# ------------------------------------------------ + +doc.clearAssociation() + +# Associer les cercles exterieurs +# ------------------------------- + +def cercle(grille, k, subid, p): + ms = grille.getVertexIJK(0, 0, k) + + ma1 = grille.getEdgeJ (0, 2, k) + ma2 = grille.getEdgeJ (0, 1, k) + ma3 = grille.getEdgeJ (0, 0, k) + + doc.associateClosedLine (ms, [ma1, ma2, ma3 ], [geometry], [subid], p, False) + +cercle (grille_p, 0, subid_pbe, 5.0/6) +cercle (grille_p, 1, subid_phe, 5.0/6) + +cercle (grille_g, 0, subid_gbe, 0) +cercle (grille_g, 1, subid_ghe, 0) + +# Associer les arcs exterieurs (excentres) +# ---------------------------------------- + +def arc(grille, i1, i2, k, subid): + ma1 = grille.getEdgeJ(1, i1, k) + ma2 = grille.getEdgeJ(1, i2, k) + + doc.associateOpenedLine ([ma1, ma2 ], [geometry], [subid], 0, 1) + +arc(grille_p, 1, 0, 0, subid_pbcd) +arc(grille_p, 1, 0, 1, subid_phcd) + +arc(grille_g, 0, 2, 0, subid_gbcd) +arc(grille_g, 0, 2, 1, subid_ghcd) + +# Associer les sommets des arcs de cercle de raccord +# -------------------------------------------------- + +hm = prisme.getHexa(1) +for i in xrange(0, 4): + vm = hm.getVertex(i) + subid = node_little_subid [i] + vm.setAssociation (geometry, subid) + +hm = prisme.getHexa(2) +for i in xrange(0, 4): + vm = hm.getVertex(i) + subid = node_big_subid [i] + vm.setAssociation (geometry, subid) + +# Associer les arcs de cercle de raccord +# -------------------------------------- + +hm = prisme.getHexa(0) +for i in xrange(0, 4): + em = hm.getEdge(i+8) + subid = arc_little_subid [i] + em.addAssociation (geometry, subid, 0, 1) + +hm = prisme.getHexa(2) +for i in xrange(0, 4): + em = hm.getEdge(i+8) + subid = arc_big_subid [i] + em.addAssociation (geometry, subid, 0, 1) + +# Arrondir des associations implicites cylindriques +# ------------------------------------------------- + +larc = [] +for h, i, ech in [ [0, 0, 0.95], [0, 1, 0.95], [2, 2, 0.85], [2, 3, 0.85] ]: + hm = prisme.getHexa(h) + em = hm.getEdge(i) + + v1 = em.getVertex(0) + v2 = em.getVertex(1) + + vax = v1.getAssoX (); + vay = v1.getAssoY (); + vaz = v1.getAssoZ (); + + vbx = v2.getAssoX (); + vby = v2.getAssoY (); + vbz = v2.getAssoZ (); + + vmx = ( vax + vbx ) / 2.0 * ech + vmy = ( vay + vby ) / 2.0 + vmz = ( vaz + vbz ) / 2.0 + + va = geompy.MakeVertex(vax, vay, vaz) + vb = geompy.MakeVertex(vbx, vby, vbz) + vm = geompy.MakeVertex(vmx, vmy, vmz) + eg = geompy.MakeArc(va, vm, vb) + larc.append(eg) + +arc = geompy.MakeCompound(larc) +shape = doc.addShape (arc, "arc") + +# Mailler le modele de bloc +for h, i in [ [0, 0], [0, 1], [2, 2], [2, 3] ]: + hm = prisme.getHexa(h) + em = hm.getEdge(i) + + em.clearAssociation() + shape_subid = 2+3*i + em.addAssociation (shape, shape_subid, 0.0, 1.0) + +# Mailler le modele de bloc +# ========================= + +# Definir 5 groupes de faces +# -------------------------- + +groupe_petit = doc.addQuadGroup("Petit") +groupe_grand = doc.addQuadGroup("Grand") +groupe_bas = doc.addQuadGroup("Bas") +groupe_haut = doc.addQuadGroup("Haut") +groupe_contour = doc.addQuadGroup("Contour") + +# Constituer les groupes petit et grand +# ------------------------------------- + +for i in xrange(3): + groupe_petit.addElement( grille_p.getQuadJK(0, i, 0) ) + groupe_grand.addElement( grille_g.getQuadJK(0, i, 0) ) + +# Constituer les groupes bas et haut +# ---------------------------------- + +for i in xrange(3): + groupe_bas.addElement( grille_p.getQuadIJ(0, i, 0) ) + groupe_bas.addElement( grille_g.getQuadIJ(0, i, 0) ) + + groupe_haut.addElement( grille_p.getQuadIJ(0, i, 1) ) + groupe_haut.addElement( grille_g.getQuadIJ(0, i, 1) ) + +for i in xrange(3): + h = prisme.getHexa(i) + + groupe_bas.addElement( h.getQuad(2) ) + groupe_haut.addElement( h.getQuad(3) ) + +# Constituer le groupe contour +# ---------------------------- + +for i in xrange(2): + groupe_contour.addElement( grille_p.getQuadJK(1, i, 0) ) + +for i in [0, 2]: + groupe_contour.addElement( grille_g.getQuadJK(1, i, 0) ) + +for i in xrange(3): + h = prisme.getHexa(i) + + groupe_contour.addElement( h.getQuad(4) ) + groupe_contour.addElement( h.getQuad(5) ) + +# Definir 3 groupes de volumes +# ---------------------------- + +groupe_petit = doc.addHexaGroup("Petit") +groupe_grand = doc.addHexaGroup("Grand") +groupe_prisme = doc.addHexaGroup("Prisme") + +for i in xrange(3): + groupe_petit.addElement( grille_p.getHexa(i) ) + groupe_grand.addElement( grille_g.getHexa(i) ) + +for i in xrange(3): + groupe_prisme.addElement( prisme.getHexa(i) ) + +# Mailler le modele de bloc avec association +# ------------------------------------------ + +########## hexablock.addLaws(doc, 0.003, True) Ne marche plus !!!! + +law = doc.addLaw("Uniform", 4) + +for j in range(doc.countPropagation()): + propa = doc.getPropagation(j) + propa.setLaw(law) + +doc.save("bielle_v5") +doc.setName("bielle_v5") +hexablock.addToStudy(doc) + +blocs = hexablock.mesh(doc) + +muv, mue, muq, muh = hexablock.dump(doc, blocs) diff --git a/src/TEST_PY/test_unit/cut_grille.py b/src/TEST_PY/test_unit/cut_grille.py new file mode 100644 index 0000000..4d30d6b --- /dev/null +++ b/src/TEST_PY/test_unit/cut_grille.py @@ -0,0 +1,94 @@ +# -*- coding: latin-1 -*- + +# Francis KLOSS - 2011 - CEA-Saclay, DEN, DM2S, SFME, LGLS, F-91191 Gif-sur-Yvette, France +# ======================================================================================== + +import geompy +import hexablock + +# Construire le modèle de blocs +# ============================= + +nom = "exemple_cut" + +# Créer le document +# ----------------- + +doc = hexablock.addDocument("default") + +# Construire la grille sphérique +# ------------------------------ + +centre = doc.addVertex(0, 0, 0) + +vecteur_x = doc.addVector(1, 0, 0) +vecteur_y = doc.addVector(0, 1, 0) +vecteur_z = doc.addVector(0, 0, 1) + +grille = doc.makeCartesian(centre, vecteur_x, vecteur_y, vecteur_z, 4, 3, 2) + +# Associer une arête, puis couper cettee arête +# -------------------------------------------- + +arete = grille.getEdgeJ(0, 1, 0) + +sommet_a = arete.getVertex(0) +sommet_b = arete.getVertex(1) + +ax = sommet_a.getX() +ay = sommet_a.getY() +az = sommet_a.getZ() + +bx = sommet_b.getX() +by = sommet_b.getY() +bz = sommet_b.getZ() + +mx = (ax+bx)/2.0 - 0.25 +my = (ay+by)/2.0 +mz = (az+bz)/2.0 + +vertex_d = geompy.MakeVertex(ax, ay, az) +vertex_m = geompy.MakeVertex(mx, my, mz) +vertex_f = geompy.MakeVertex(bx, by, bz) + +edge = geompy.MakeArc(vertex_d, vertex_m, vertex_f) +geompy.addToStudy(edge, "arc") +geompy.addToStudy(vertex_d, "debut") +geompy.addToStudy(vertex_m, "milieu") +geompy.addToStudy(vertex_f, "fin") + +sommet_a.setAssociation(vertex_d) +sommet_b.setAssociation(vertex_f) + +arete.addAssociation(edge, 0, 1) + +elements = doc.cut(arete, 4) + +# Définir la loi de maillage sur les propagations +# ----------------------------------------------- + +l = doc.addLaw("Uniform", 5) +n = doc.countPropagation() + +for i in xrange(n): + p = doc.getPropagation(i) + p.setLaw(l) + +# Générer le maillage +# ------------------- +maillage = hexablock.mesh (doc) + +# Afficher des informations +# ------------------------- + +print "Sur le document:" +print "nombre de sommets du modèle de bloc: ", doc.countUsedVertex() +print "nombre d'arêtes du modèle de bloc: ", doc.countUsedEdge() +print "nombre de quadrangles du modèle de bloc: ", doc.countUsedQuad() +print "nombre de blocs du modèle de bloc: ", doc.countUsedHexa() + +print "Sur le maillage:" +print " - Nombre de noeuds : ", maillage.NbNodes() +print " - Nombre de segments : ", maillage.NbEdges() +print " - Nombre de quadrangles: ", maillage.NbQuadrangles() +print " - Nombre d'hexaèdres : ", maillage.NbHexas() diff --git a/src/TEST_PY/test_unit/hexa_quads.py b/src/TEST_PY/test_unit/hexa_quads.py index 15cda17..ddb48d2 100644 --- a/src/TEST_PY/test_unit/hexa_quads.py +++ b/src/TEST_PY/test_unit/hexa_quads.py @@ -77,7 +77,7 @@ def test_hexa_quads_5 () : # ========================================================== test_hexa_quads_ab def test_hexa_quads_ab () : - doc = hexablock.addDocument() + doc = hexablock.addDocument ("default") vtk = FileVtk (doc, "HexaQuadsAB"); grid = add_grid (doc, 1, 1, 3) vtk.save () @@ -105,7 +105,7 @@ def test_hexa_quads_ab () : # ========================================================== test_hexa_quads_ac def test_hexa_quads_ac () : - doc = hexablock.addDocument() + doc = hexablock.addDocument ("default") vtk = FileVtk (doc, "HexaQuadsAC"); grid = add_grid (doc, 2, 1, 2) vtk.save () @@ -134,7 +134,7 @@ def test_hexa_quads_ac () : # ======================================================= test_hexa_quads_acd def test_hexa_quads_acd () : - doc = hexablock.addDocument() + doc = hexablock.addDocument ("default") vtk = FileVtk (doc, "HexaQuadsACD"); grid = add_grid (doc, 3, 1, 2) vtk.save () @@ -163,7 +163,7 @@ def test_hexa_quads_acd () : # ======================================================= test_hexa_quads_ace def test_hexa_quads_ace () : - doc = hexablock.addDocument() + doc = hexablock.addDocument ("default") vtk = FileVtk (doc, "HexaQuadsACE"); grid = add_grid (doc, 2, 2, 2) vtk.save () @@ -191,7 +191,7 @@ def test_hexa_quads_ace () : # ======================================================= test_hexa_quads_abcd def test_hexa_quads_abcd () : - doc = hexablock.addDocument() + doc = hexablock.addDocument ("default") vtk = FileVtk (doc, "HexaQuadsABCD"); grid = add_grid (doc, 3, 1, 3) vtk.save () @@ -218,7 +218,7 @@ def test_hexa_quads_abcd () : # ======================================================= test_hexa_quads_abce def test_hexa_quads_abce () : - doc = hexablock.addDocument() + doc = hexablock.addDocument ("default") vtk = FileVtk (doc, "HexaQuadsABCE"); grid = add_grid (doc, 3, 2, 2) vtk.save () diff --git a/src/TEST_PY/test_unit/test_cone.py b/src/TEST_PY/test_unit/test_cone.py new file mode 100644 index 0000000..24d9454 --- /dev/null +++ b/src/TEST_PY/test_unit/test_cone.py @@ -0,0 +1,76 @@ +# -*- coding: latin-1 -*- +# Hexa : Creation d'hexaedres + +# Copyright (C) 2009-2012 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ +# or email : webmaster.salome@opencascade.com +# + +import hexablock +import os +import geompy + +#---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 + + +doc = hexablock.addDocument ("test_cone") + +orig = doc.addVertex (0, 0, 0) +ori2 = doc.addVertex (0, 0, 10) +vz = doc.addVector (0, 0, 1) +vx = doc.addVector (1 ,0, 0) + +rad1 = 2.0 +rad2 = 1.0 +height = 5.0 +angle = 270.0 +hollow = False + +nr = 2 +na = 8 +nl = 1 + +c1 = doc.makeCylindrical (orig, vx,vz, rad1, angle, height, nr,na,nl, hollow) +c2 = doc.makeCylindrical (ori2, vx,vz, rad2, angle, height, nr,na,nl, hollow) + +vh0 = c2.getVertexIJK (0, 0, 0) +vh1 = c2.getVertexIJK (1, 0, 0) + +vb0 = c1.getVertexIJK (0, 0, nl) +vb1 = c1.getVertexIJK (1, 0, nl) + +qcible = c2.getQuadIJ (0, 0, 0) +qliste = [] +for ni in range (nr) : + for nj in range (na) : + quad = c1.getQuadIJ (ni, nj, nl) + qliste.append (quad) + + ## Join quads to make a cone between the 2 cylinders +doc.joinQuads (qliste, qcible, vb0, vh0, vb1, vh1, 1) + + ### -------------------- Mesh + +law = doc.addLaw ("Uniform", 4) + +for np in range(doc.countPropagation()): + propa = doc.getPropagation (np) + propa.setLaw (law) + +mesh_hexas = hexablock.mesh(doc) + diff --git a/src/TEST_PY/test_unit/test_cross.py b/src/TEST_PY/test_unit/test_cross.py index 05b2e28..692bf7b 100644 --- a/src/TEST_PY/test_unit/test_cross.py +++ b/src/TEST_PY/test_unit/test_cross.py @@ -48,6 +48,7 @@ def test_pipes () : pipe2 = doc.addPipe (ori2, vx, ni2, nr2, nl2) grid = doc.makePipes (pipe1, pipe2) + doc.save ("pipes") doc.saveVtk ("pipes.vtk") return doc @@ -78,6 +79,7 @@ def test_croix () : # ================================================================= Begin doc = test_pipes () +doc.setLevel (747) law = doc.addLaw("Uniform", 4) @@ -85,5 +87,5 @@ for j in range(doc.countPropagation()): propa = doc.getPropagation(j) propa.setLaw(law) -mesh_hexas = hexablock.mesh(doc, "maillage:hexas") +mesh_hexas = hexablock.mesh (doc, "maillage:hexas") diff --git a/src/TEST_PY/test_unit/test_cylinders.py b/src/TEST_PY/test_unit/test_cylinders.py index ef33272..1b8462f 100644 --- a/src/TEST_PY/test_unit/test_cylinders.py +++ b/src/TEST_PY/test_unit/test_cylinders.py @@ -30,33 +30,93 @@ import geompy # ======================================================= test_cylindricals def test_cylindricals () : - doc = hexablock.addDocument ("rind:hexas") + doc = hexablock.addDocument ("cyl:hexas") orig = doc.addVertex (0, 0, 0) vz = doc.addVector (0, 0, 1) vx = doc.addVector (1 ,0, 0) + tdr = [ 1, 1, 1, 1 ] + tda = [ 45, 45, 45, 45, 45, 45, 45, 45 ] + tdl = [ 1, 1, 1 ] + tdr = [ 1, 2, 0.5 ] tda = [ 30, 30, 30, 10, 10, 10, 10, 10, 10, 10, 10, 10, 30, 30, 30, 10, 10, 10, 10, 10, 10, 10, 10, 10 ] tdl = [ 1, 2, 3 ] - tdr = [ 1, 1, 1, 1 ] - tda = [ 45, 45, 45, 45, 45, 45, 45, 45 ] - tdl = [ 1, 1, 1 ] - c1 = doc.makeCylindricals (orig, vx,vz, tdr, tda, tdl, False) - ## c1 = doc.makeCylindrical (orig, vx,vz, 1.0, 360.0, 1.0, 3, 8, 3, False) + + doc.saveVtk ("cylindricals.vtk") + return doc + +# ======================================================= test_cylindrical +def test_cylindrical () : + + doc = hexablock.addDocument ("cyl:hexas") + + orig = doc.addVertex (0, 0, 0) + vz = doc.addVector (0, 0, 1) + vx = doc.addVector (1 ,0, 0) + + nr = 3 + na = 8 + nl = 3 + c1 = doc.makeCylindrical (orig, vx,vz, 1.0, 360.0, 1.0, nr,na,nl, False) doc.saveVtk ("cylindricals.vtk") return doc + +# ======================================================= test_cone +def test_cone () : + + doc = hexablock.addDocument ("cyl:hexas") + + orig = doc.addVertex (0, 0, 0) + ori2 = doc.addVertex (0, 0, 10) + vz = doc.addVector (0, 0, 1) + vx = doc.addVector (1 ,0, 0) + + nr = 2 + na = 8 + nl = 1 + c1 = doc.makeCylindrical (orig, vx,vz, 2.0, 360.0, 5.0, nr,na,nl, False) + c2 = doc.makeCylindrical (ori2, vx,vz, 1.0, 360.0, 5.0, nr,na,nl, False) + + vh0 = c2.getVertexIJK (0, 0, 0) + vh1 = c2.getVertexIJK (1, 0, 0) + + vb0 = c1.getVertexIJK (0, 0, nl) + vb1 = c1.getVertexIJK (1, 0, nl) + + qcible = c2.getQuadIJ (0, 0, 0) + qliste = [] + for ni in range (nr) : + for nj in range (na) : + quad = c1.getQuadIJ (ni, nj, nl) + qliste.append (quad) + quad .setColor (3); + + qcible.setColor (3); + vb0.setColor (5); + vh0.setColor (5); + vb1.setColor (5); + vh1.setColor (5); + + doc.joinQuads (qliste, qcible, vb0, vh0, vb1, vh1, 1) + + doc.saveVtk ("cone.vtk") + return doc + # ================================================================= Begin -doc = test_cylindricals () +#### doc = test_cylindricals () +#### doc = test_cylindrical () +doc = test_cone () law = doc.addLaw("Uniform", 4) diff --git a/src/TEST_PY/test_unit/test_disco.py b/src/TEST_PY/test_unit/test_disco.py index 0d53e73..bf1af59 100644 --- a/src/TEST_PY/test_unit/test_disco.py +++ b/src/TEST_PY/test_unit/test_disco.py @@ -38,18 +38,19 @@ def test_disco_edges () : vy = doc.addVector ( 0, 1, 1) vx = doc.addVector ( 1 ,0, 0) - size_x = 2 + size_x = 1 size_y = 2 - size_z = 5 + size_z = 2 grid = doc.makeCartesian (ori, vx, vy, vz, size_x, size_y, size_z) t_hexas = [] t_edges = [] + doc.setLevel (1) for nk in range (size_z) : - t_hexas.append (grid.getHexaIJK (1,1,nk)) - t_edges.append (grid.getEdgeK (1,2,nk)) + t_hexas.append (grid.getHexaIJK (0,0,nk)) + t_edges.append (grid.getEdgeK (0,1,nk)) disco_edges = doc.disconnectEdges (t_hexas, t_edges) return doc diff --git a/src/TEST_PY/test_unit/test_double_t.py b/src/TEST_PY/test_unit/test_double_t.py index d02fca6..158bab8 100644 --- a/src/TEST_PY/test_unit/test_double_t.py +++ b/src/TEST_PY/test_unit/test_double_t.py @@ -108,7 +108,7 @@ def test_lorraine () : rsmall = 1 rmoy = 3 - rbig = 5 + rbig = 4 cyl1 = doc.addCylinder (ori1, vz, rmoy, nl1) cyl2 = doc.addCylinder (ori2, vx, rsmall, nl2) @@ -155,7 +155,7 @@ def test_lorraine () : # ================================================================= Begin -doc = test_lorraine () +doc = test_double_t () law = doc.addLaw("Uniform", 4) diff --git a/src/TEST_PY/test_unit/test_perform.py b/src/TEST_PY/test_unit/test_perform.py new file mode 100644 index 0000000..8dde7ee --- /dev/null +++ b/src/TEST_PY/test_unit/test_perform.py @@ -0,0 +1,125 @@ +# -*- coding: latin-1 -*- +# Copyright (C) 2009-2012 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# Hexa : Creation d'hexaedres + +import hexablock +import os +import geompy + +#---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8 + + +# ======================================================= make_grid +def make_grid (doc) : + + ori = doc.addVertex ( 0, 0, 0) + vz = doc.addVector ( 0, 0, 1) + vx = doc.addVector ( 1 ,0, 0) + + dr = 1 + da = 360 + dl = 1 + + nr = 1 + na = 6 + nl = 1 + grid = doc.makeCylindrical (ori, vx,vz, dr,da,dl, nr,na,nl, False) + doc .saveVtk ("transfo1.vtk") + return grid + +# ======================================================= test_translation +def test_translation () : + + doc = hexablock.addDocument ("default") + grid = make_grid (doc) + + devant = doc.addVector (10, 0, 0) + grid2 = doc.performTranslation (grid, devant) + + doc .saveVtk ("transfo2.vtk") + return doc + +# ======================================================= test_scale +def test_scale () : + + doc = hexablock.addDocument ("default") + grid = make_grid (doc) + + dest = doc.addVertex (15, 0, 0) + grid2 = doc.performScale (grid, dest, 0.5) + + doc .saveVtk ("transfo3.vtk") + return doc + +# ======================================================= test_sym_point +def test_sym_point () : + + doc = hexablock.addDocument ("default") + grid = make_grid (doc) + + orig = doc.addVertex (5, 0, 0) + ier = doc.performSymmetryPoint (grid, orig) + + doc .saveVtk ("transfo4.vtk") + return doc + +# ======================================================= test_sym_line +def test_sym_line () : + + doc = hexablock.addDocument ("default") + grid = make_grid (doc) + + orig = doc.addVertex (5, 0, 0) + dir = doc.addVector (0, 0, 1); + ier = doc.performSymmetryLine (grid, orig, dir) + + doc .saveVtk ("transfo5.vtk") + return doc + +# ======================================================= test_sym_plan +def test_sym_plan () : + + doc = hexablock.addDocument ("default") + grid = make_grid (doc) + + orig = doc.addVertex (5, 0, 0) + dir = doc.addVector (1, 0, 0); + ier = doc.performSymmetryPlane (grid, orig, dir) + + doc .saveVtk ("transfo6.vtk") + return doc + +# ================================================================= Begin + +### doc = test_translation () +doc = test_scale () +### doc = test_sym_point () +### doc = test_sym_line () +### doc = test_sym_plan () + +law = doc.addLaw("Uniform", 4) + +for j in range(doc.countPropagation()): + propa = doc.getPropagation(j) + propa.setLaw(law) + +mesh_hexas = hexablock.mesh(doc, "maillage:hexas") + diff --git a/src/TEST_PY/test_unit/test_shapes.py b/src/TEST_PY/test_unit/test_shapes.py new file mode 100644 index 0000000..0e2a2c9 --- /dev/null +++ b/src/TEST_PY/test_unit/test_shapes.py @@ -0,0 +1,48 @@ +# -*- coding: latin-1 -*- + +# Francis KLOSS : 2011-2012 : CEA-Saclay, DEN, DM2S, SFME, LGLS, F-91191 Gif-sur-Yvette, France +# ============================================================================================= + +import math + +import geompy +import hexablock + +# Construire le modèle de bloc +# ============================ + +doc = hexablock.addDocument("bielle") + +# Charger la géométrie +# ==================== + +bielle = geompy.ImportSTEP("bielle.stp") +shape = doc.addShape (bielle, "bielle") + + +# Sélectionner des sous-parties de la géométrie +# --------------------------------------------- + +sommets = geompy.SubShapeAllIDs (bielle, geompy.ShapeType["VERTEX"]) +aretes = geompy.SubShapeAllIDs (bielle, geompy.ShapeType["EDGE"]) + +print " ... Aretes = ", aretes +print " ... Sommets = ", sommets + +nbfaces = shape.countFace () +nbedges = shape.countEdge () +nbvertex = shape.countVertex () + +for n in range (nbfaces) : + print " Face nro %d = %s" % (n , shape.getNameFace (n)) +print + +for n in range (nbedges) : + print " Edge nro %d = %s" % (n , shape.getNameEdge (n)) +print + +for n in range (nbvertex) : + print " Vertex nro %d = %s" % (n , shape.getNameVertex (n)) + + + diff --git a/src/TEST_PY/test_unit/test_xml.py b/src/TEST_PY/test_unit/test_xml.py new file mode 100644 index 0000000..594780f --- /dev/null +++ b/src/TEST_PY/test_unit/test_xml.py @@ -0,0 +1,9 @@ + +import hexablock + +# Construire le modele de bloc +# ============================ + +doc = hexablock.loadDocument("bielle_v5") +doc.save("pipo") + diff --git a/src/TEST_PY/test_unit/troisCylindres.brep b/src/TEST_PY/test_unit/troisCylindres.brep new file mode 100644 index 0000000..f07be10 --- /dev/null +++ b/src/TEST_PY/test_unit/troisCylindres.brep @@ -0,0 +1,509 @@ + +CASCADE Topology V1, (c) Matra-Datavision +Locations 8 +1 +1.11022302462516e-16 0 1 0 + 0 1 0 0 + -1 0 1.11022302462516e-16 400 +1 + 1 0 0 190 + 0 1 0 0 + 0 0 1 380 +1 + 1 0 0 190 + 0 1 0 0 + 0 0 1 220 +2 1 -1 0 +2 2 -1 0 +2 2 1 3 -1 0 +2 3 -1 0 +2 3 1 2 -1 0 +Curve2ds 38 +1 0 800 1 0 +2 0 0 1 0 -0 1 100 +7 0 0 8 23 4 5.7595865315812871 400 5.7595865315812871 396.4531264233774 5.7629069293083175 392.92833608277681 5.7694749436140853 389.51230084494648 5.7788372822703087 386.24424709027198 5.7905468978363102 383.14348794697975 5.8042009023008854 380.21545709727701 5.8195042660091962 377.45508725218542 5.8543892203674739 372.04985730479018 5.8742056575325181 369.42820567367704 5.89564313364939 366.96284011636072 5.9186431153591617 364.64644480202827 5.9431911157077195 362.47799188863092 5.969306315324145 360.46051727651405 5.997060367620036 358.60197280754011 6.0537021647479774 355.37514358939779 6.082311505809308 353.97770142062154 6.1125302711814751 352.74076825489283 6.1443482006914323 351.69171562635694 6.1776550181455665 350.86267948835513 6.212224813535169 350.28862243838159 6.2476523776714217 350.00000035532935 6.2831853071795862 350 + 0 9 0.32715155003298801 7 0.67848367377663077 7 1 9 +7 0 0 8 23 4 4.7123889803846897 86.602540378443834 4.7833264519171417 86.602540378443834 4.8538221133434041 86.768554360301735 4.9226876586617614 87.096991301102832 4.9896492478955832 87.559643674082267 5.0546217349220237 88.124612677936994 5.1177137403899753 88.763476885346691 5.1791713917111073 89.453947255999054 5.3042530285650589 90.961452312325122 5.3677102240744938 91.784169844339971 5.4305599185356694 92.631457510690808 5.4932602887666402 93.488642372673752 5.5562165742572436 94.341495300176803 5.6198260616794098 95.175736723592024 5.6845162320744418 95.976668732951339 5.8116848841313695 97.413920783548804 5.8739248236055932 98.05887438439521 5.9379452637785519 98.646808131231438 6.0038837402756018 99.157716247916923 6.071712633333922 99.568620170602287 6.1412648768472247 99.855699662295933 6.2121194481632589 99.999999822335369 6.2831853071795862 100 + 0 9 0.32715155003298801 7 0.67848367377663077 7 1 9 +1 6.2831853071795862 -0 0 1 +1 0 -0 0 1 +1 0 0 1 0 +2 0 0 1 0 -0 1 100 +7 0 0 8 23 4 0 350 0.033576530560921469 349.99999966423474 0.067082892452182463 350.25770810060493 0.099869308879887875 350.77111458667099 0.13156628624254196 351.51570531988671 0.16195866809536152 352.46209608878792 0.19093398028496456 353.58237755135616 0.21846654983792213 354.85222820605424 0.27426368959368119 357.84920888955003 0.3021491186068328 359.61622715531161 0.32842484744605827 361.54040041871144 0.35316416580412735 363.61204164396673 0.37639683220717668 365.8264229027584 0.39812537333505649 368.18305324271273 0.41831630740511905 370.68769525783222 0.4557439761033848 376.0736018517199 0.47292011875991768 378.9594576910697 0.48830018181480117 382.03427944841542 0.50156023379092929 385.30662787333353 0.51222803597861422 388.77333266748747 0.51976991720685906 392.41514581060738 0.52359877559829915 396.1912597343462 0.52359877559829915 400 + 0 9 0.30404471865854837 7 0.64918916271671423 7 1 9 +7 0 0 8 23 4 -8.8817841970012523e-16 100 0.06715306112184205 100.00000016788263 0.13416540811772926 99.871153979566813 0.2000859947170639 99.614413693494853 0.26450877997241218 99.244989236204376 0.32725315809820543 98.782719490159323 0.38826782246932368 98.247314081382243 0.44764126817363259 97.656293340043064 0.57139795897359669 96.305069830741061 0.63542889192342944 95.53220561073141 0.69827952069100885 94.722154327366113 0.76035187352387279 93.8895784161206 0.82202051989645941 93.048311226451347 0.8836693219130547 92.211706870163411 0.9457321983952216 91.393072001530811 1.0730247241787252 89.809460344875689 1.138267311008704 89.045865019642434 1.2052426425872236 88.333353522290537 1.2742871129404838 87.697209384435382 1.3455881079195908 87.171127692761559 1.4190994971417732 86.793973628457834 1.4946215214818199 86.602540378443862 1.5707963267948957 86.602540378443862 + 0 9 0.30404471865854837 7 0.64918916271671423 7 1 9 +7 0 0 8 23 4 0 450 0.033576535464432844 450 0.06708288862795353 449.74229256882165 0.099869310240679354 449.22888491692595 0.13156628503243795 448.48429456674455 0.16195866455356001 447.53790447273542 0.19093398418656715 446.41762209624159 0.21846654988386938 445.14777179147779 0.27426368959368741 442.15079111044957 0.3021491186068106 440.38377284469061 0.32842484744608935 438.45959958128537 0.3531641658041238 436.38795835603389 0.37639683220714382 434.17357709724484 0.39812537333508846 431.81694675728357 0.41831630740511105 429.31230474216915 0.45574397610337858 423.92639814828101 0.4729201187599914 421.04054230892496 0.48830018181460044 417.96572055159834 0.50156023379119397 414.6933721266472 0.51222803597843036 411.22666733252822 0.51976991720691501 407.58485418938534 0.52359877559829915 403.80874026565544 0.52359877559829915 400 + 0 9 0.30404471828653629 7 0.64918916252934122 7 1 9 +7 0 0 8 23 4 3.1415926535897931 100 3.0744395826609292 100 3.0074272532690807 99.871154312247398 2.9415066557379972 99.614413450152753 2.8770838762873723 99.24498917729909 2.8143395030913991 98.782719765237147 2.7533248227475049 98.247313911151892 2.6939513853142487 97.656293338930354 2.5701946946161791 96.305069830740877 2.5061637616664392 95.532205610732049 2.4433131328986759 94.722154327365189 2.3812407800659359 93.889578416120742 2.319572133693443 93.048311226452213 2.257923331676631 92.211706870162374 2.195860455194603 91.393072001531209 2.0685679294110897 89.809460344875959 2.003325342581054 89.04586501964134 1.9363500110025664 88.333353522292768 1.8673055406493542 87.697209384432796 1.7960045456701803 87.171127692763221 1.7224931564479862 86.793973628457351 1.6469711321080045 86.602540378443862 1.5707963267948963 86.602540378443862 + 0 9 0.30404471828653629 7 0.64918916252934122 7 1 9 +7 0 0 8 23 4 5.7595865315812871 400 5.7595865315812871 403.54687357661732 5.7629069293083264 407.0716639172436 5.7694749436140578 410.487699155016 5.7788372822703495 413.75575290976724 5.7905468978362755 416.85651205299661 5.804200902300904 419.78454290273055 5.8195042660091909 422.54491274781367 5.8543892203674712 427.95014269520948 5.874205657532519 430.57179432632284 5.8956431336493971 433.03715988364036 5.9186431153591563 435.35355519797133 5.9431911157077124 437.52200811136817 5.9693063153241566 439.53948272348691 5.9970603676200325 441.39802719245961 6.0537021647981906 444.62485641346274 6.0823115099356198 446.02229896119849 6.1125302674090722 447.25923114449233 6.1443481994298761 448.30828448674504 6.1776550195756252 449.13732104001321 6.2122248094106727 449.71137685489032 6.2476523829853585 450 6.2831853071795862 450 + 0 9 0.32715154983796968 7 0.67848367337201809 7 1 9 +7 0 0 8 23 4 4.7123889803846897 86.602540378443834 4.6414515088523443 86.602540378443834 4.5709558474254868 86.76855436030219 4.5020903021086447 87.096991301101312 4.4351287128726282 87.559643674084498 4.3701562258480955 88.124612677935161 4.3070642203791722 88.7634768853476 4.2456065690582925 89.453947255998813 4.1205249322043267 90.961452312325036 4.0570677366948757 91.784169844340013 3.9942180422337055 92.631457510690936 3.9315176720027551 93.48864237267361 3.8685613865121442 94.341495300176661 3.8049518990899482 95.175736723592308 3.7402617286949473 95.976668732951225 3.6130930765252778 97.413920784822892 3.5508531282366924 98.058874567884871 3.4868327051487182 98.646807838009721 3.4208942233135531 99.157716307234637 3.3530653240854145 99.568620428735727 3.2835130923467619 99.855699311460796 3.2126585019782485 100 3.1415926535897931 100 + 0 9 0.32715154983796968 7 0.67848367337201809 7 1 9 +7 0 0 8 86 13 2.7300758075223057 190 2.7300758075223057 188.76161711057227 2.73198839472064 187.55133668015193 2.7356595879105567 186.40804485479049 2.7406522245640779 185.33795497726547 2.7466665999124618 184.34258844053036 2.7534345015999824 183.4162771353935 2.7608247966701325 182.54924607309326 2.7805106679886924 180.5313877921306 2.7934228662572296 179.44012090542088 2.8074042576548592 178.42489439075112 2.8224021612079322 177.47714125871727 2.8383853128399443 176.58765276942751 2.8553986657883739 175.75234570339671 2.8735299500160485 174.96696097018872 2.9096367995004702 173.60217638596475 2.927074703391964 173.01544757903642 2.9455701846587412 172.46336132523098 2.9653382299711857 171.94696597602535 2.9865550769566158 171.47070368601692 3.0094637838744882 171.044924719389 3.0342362135094789 170.68192128165288 3.0846904814586811 170.16788483391167 3.110457736212882 169.98675095042276 3.1373772459573144 169.90241768877223 3.1644097931300808 169.92983296212577 3.1907387356792545 170.06246027525333 3.2157117427758561 170.28378283343829 3.2387860886964592 170.56795276727468 3.2857128896829386 171.28490034470798 3.3095267559518353 171.75813983885746 3.3315889559519829 172.28669212661248 3.3520793566732001 172.86264456356133 3.3712426139199891 173.47925753251525 3.3892171781517373 174.13467786991569 3.4061709628706178 174.82956714675092 3.4315765607080646 176.00111900189935 3.4406202276953 176.44739232078726 3.4493683641263591 176.90942117645849 3.4578076048696391 177.38676190073474 3.4659242604470752 177.87897923803828 3.473704317034132 178.38564634539176 3.4811334364598099 178.90634479241825 3.4952602825731667 179.97496970201598 3.5019582387828598 180.52299721930251 3.5082759977769666 181.08420673921333 3.5141984025436779 181.65818491571483 3.5197099661181288 182.24464543072799 3.5247948715823951 182.84342899412766 3.5294369720654961 183.45450334374323 3.5385783136065494 184.81704385450712 3.5430774304692174 185.60147540318962 3.5470027815210834 186.43393805468477 3.550193052094881 187.31387149619184 3.552464823959987 188.23647567906212 3.553634828362437 189.1915419192367 3.5535877444215225 190.16041200836165 3.5507263605782593 192.52143481281828 3.5466264819059488 193.84478773876532 3.540673500034889 195.06679581640853 3.5333903287665258 196.19442250073351 3.5251084225945828 197.2339901412731 3.516072019876451 198.19784034352128 3.5063476353219669 199.100910190511 3.4816461951625191 201.11765616922102 3.4662615750150878 202.17669187279171 3.4497197612770401 203.16359594026292 3.4319965274128248 204.08585426002017 3.4130562502099866 204.9499797977617 3.3927629809540236 205.75731315708825 3.370961354722068 206.5085724462667 3.3350837042681274 207.55059273349855 3.3227385987925833 207.87877699148535 3.3101400373711489 208.18373555748497 3.2973072930831178 208.46471177911445 3.2842597447996993 208.72099547901203 3.2710176981806867 208.95192203202214 3.2576032066711278 209.15687144238044 3.2326080049219881 209.48565334621975 3.2207392065634544 209.6214488622964 3.2084220832166892 209.74086778055747 3.1956632541851522 209.841223344334 3.1824987868080563 209.9195218531847 3.1690046109869345 209.9730562872202 3.1553069337122155 209.99999993142859 3.1415926535897936 210 + 0 9 0.073876687960228921 7 0.18146279930185341 7 0.27297502317927325 7 0.35146796836731969 7 0.45078644852611266 7 0.50839166691615778 7 0.56599530822916722 7 0.63428155117843577 7 0.73589383894819183 7 0.87241439129297038 7 0.94164192250558687 7 1 9 +7 0 0 8 86 13 1.5707963267948968 65.825756949558411 1.6327154712662824 65.825756949558411 1.6932291717524472 65.864006867500905 1.7507575795202066 65.937442892223871 1.8052712051910964 66.036312569896907 1.856761496125801 66.15335170344234 1.9055415063953094 66.282483552944811 1.952099936317812 66.420471346860978 2.0629161296348029 66.778932482089601 2.1250872198225084 67.006800398456491 2.1853339544706767 67.244156185569551 2.2442620112456466 67.487414231305635 2.3025351264202438 67.733314062545347 2.3606629110135016 67.979402450812643 2.4192472016931634 68.223500209089394 2.5302050784324877 68.667615336463385 2.5817194923431264 68.866839100938464 2.6345541235314025 69.06107511247879 2.6893439271069774 69.248614551513228 2.746579728106743 69.426477008510119 2.8069200610078164 69.589274370436641 2.8708713445249514 69.730508107268591 2.9992017060969078 69.932606288496331 3.0640476966405026 70.004909868877107 3.1311719850682302 70.039355662624061 3.1983917367763195 70.028318240219718 3.2641727172498611 69.974453483590707 3.3272181349982342 69.886050094789667 3.3862870149554607 69.774683728264634 3.5081798163713582 69.498670248443474 3.5714250919605042 69.319625207022071 3.6315898963777626 69.124464927538256 3.6892108940849053 68.918088997427191 3.7449840031488155 68.70476714178713 3.7993700099136132 68.486956905337252 3.8529595443561395 68.266363258980974 3.937551875106212 67.914511323779521 3.9686270521261031 67.784481815413258 3.9997344878372516 67.654297451190075 4.0308853739217598 67.524679509972557 4.0620919606083179 67.396357443356322 4.0933675566722023 67.270068875670106 4.124726529435276 67.146559603975803 4.1876412188668342 66.906610876783731 4.2192025058601512 66.790155974378578 4.2508767385050721 66.677978633765278 4.2826801747989798 66.570823982696439 4.3146367579775191 66.469422533765098 4.346778116514594 66.374490184404721 4.3791435641223728 66.286728216889173 4.4504690845129815 66.11210000381476 4.491002003142964 66.024851515159256 4.5335175110851669 65.947703969718717 4.5780101363095511 65.884232047726371 4.6242947661492 65.838676004199897 4.671990288798467 65.815204415050005 4.7203649033722543 65.816217123196935 4.8385980686239742 65.873356695599171 4.9051850188102994 65.955074132754632 4.9674898644093322 66.072897682052684 5.0260608936826561 66.214413321800095 5.0812532833458581 66.371581754615221 5.1336879948128482 66.538559525712174 5.1841437822594489 66.713161178984919 5.3004316740301887 67.141550836337416 5.3644149845568734 67.397608881735124 5.4271937142726046 67.659694988105471 5.4894601011457427 67.92460429403188 5.5518865820242498 68.189151454086755 5.6151397004226302 68.450150063818768 5.6799108441584014 68.704352379472581 5.7820106096441055 69.070516194378229 5.8164404445381965 69.188355493726078 5.850946054836804 69.299959962125172 5.8855291296563488 69.404507511993899 5.9201917940156994 69.501233167507081 5.9549345429758302 69.589436335509944 5.9897541757794714 69.668488076432126 6.0540515696396966 69.796299944449615 6.084361898704401 69.849526935371983 6.1156117040988267 69.896686629941101 6.1478015408718143 69.936560691373231 6.1808677843451756 69.967806999600143 6.2146568822517638 69.989221486740504 6.2488996068735307 69.999999972571445 6.2831853071795862 70 + 0 9 0.073876687960228921 7 0.18146279930185341 7 0.27297502317927325 7 0.35146796836731969 7 0.45078644852611266 7 0.50839166691615778 7 0.56599530822916722 7 0.63428155117843577 7 0.73589383894819183 7 0.87241439129297038 7 0.94164192250558687 7 1 9 +7 0 0 8 23 4 3.1415926535897931 210 3.1210614961277394 210.00000010265583 3.1005291311075647 209.93977343220345 3.0802162982823336 209.81934542997405 3.060284995992693 209.64146807704995 3.0408510042354786 209.41030407615489 3.0219936054749454 209.13045541836325 3.0037625031966315 208.80633633462796 2.9570088239511896 207.83713099429386 2.9296594696116953 207.12197755130393 2.9040228867397606 206.31025246004447 2.8800610357605061 205.41069337265455 2.8577522026420392 204.42944864183883 2.8371056950111546 203.36899179251105 2.8181483011816177 202.22871149661322 2.7852216827921472 199.8723811516461 2.7709760875281595 198.67075640785762 2.7583507212744514 197.39099658337528 2.7475970196832398 196.03237707895312 2.739053731187802 194.5987376061355 2.7330886214394798 193.09989869850125 2.7300758075223053 191.554374056744 2.7300758075223053 190 + 0 9 0.23911948610599457 7 0.63591333721726562 7 1 9 +7 0 0 8 23 4 0 70 0.051327893655133572 70.000000041062307 0.1026585095332937 69.975913030090624 0.1536145142233849 69.927731557706068 0.20396142023838504 69.856930569898694 0.25355894084285602 69.765831025734656 0.30232997965063024 69.65711085521778 0.35024725499271447 69.533463217305211 0.47547900793230546 69.171622753195393 0.55125596438760471 68.911912620840965 0.62536924204793554 68.628209581487553 0.69830566983646758 68.329050162545343 0.77052910495163474 68.022247356855743 0.84253146084878594 67.71504812589032 0.91487134073599652 67.414277104885272 1.0559406020423046 66.864292017065196 1.1244501887663443 66.612974265628466 1.1944986103494166 66.379922852188102 1.2663529078851745 66.17381782714574 1.340143255040398 66.005326901049187 1.4158015554213002 65.886011034309178 1.4930776239576975 65.825756949558411 1.5707963267948966 65.825756949558411 + 0 9 0.23911948610599457 7 0.63591333721726562 7 1 9 +7 0 0 7 20 4 5.8716684611120975 190 5.8716684611120975 188.40529526822812 5.8749059028716166 186.81699263164407 5.8813321069643507 185.28146610968872 5.8904651265717982 183.8194733092634 5.9018780409367047 182.44087859992891 5.9151979318998391 181.14756859074458 5.9462084611711727 178.64894098900859 5.9641289663954833 177.45327801148096 5.9838251760732435 176.34076071834318 6.0052210062401752 175.31033358514742 6.0282871279818746 174.36355769593391 6.0530414572620703 173.50466322258802 6.1044269515590086 172.03087512917583 6.1308375000050619 171.40311466706285 6.1588814209752867 170.86877872094436 6.1884827860001463 170.44450690892319 6.2194178500469297 170.14859873510889 6.2512650406347934 170 6.2831853071795862 170 + 0 8 0.32749647483565042 6 0.67535626432716744 6 1 8 +7 0 0 7 20 4 4.7123889803846897 134.17424305044165 4.6326537437960944 134.17424305044165 4.5532394662454161 134.10950158823803 4.4756303392982897 133.98093441747497 4.4000913717954164 133.80144025823813 4.3266832464327729 133.58463698586775 4.2551915157717408 133.34204238483454 4.1106230834163906 132.80607638506953 4.0376765392582641 132.51031302161269 3.9653735469234719 132.20408324999829 3.8931647386010106 131.89522935165351 3.8205023141418311 131.591632576276 3.7468598154328787 131.30105579191766 3.6010565258622278 130.78164824019552 3.5290824764252773 130.54984232049199 3.4551199134103063 130.34511406165251 3.3790487521878019 130.1778232028887 3.3010107446235413 130.05943531939073 3.2213933199517744 130 3.1415926535897931 130 + 0 8 0.32749647483565042 6 0.67535626432716744 6 1 8 +1 6.2831853071795862 -0 0 1 +1 0 -0 0 1 +7 0 0 7 20 4 0 170 0.030225785850175768 170 0.060403942208535177 170.13323829157676 0.089809656452376707 170.39892023771003 0.11805541204867875 170.78166224300142 0.14492818020641529 171.26570088958786 0.17034350106111606 171.83645995042141 0.22097719814426409 173.20566738156501 0.24587007505197889 174.02300961145505 0.26911311729308007 174.92708234710466 0.29073064043857233 175.91279129804428 0.31070894112663172 176.97782263526184 0.32899625972681701 178.12264337007468 0.36230785920280351 180.61524721177804 0.37725325445837399 181.9676846606753 0.39011764872841503 183.41728858328361 0.40046937309713293 184.96339172675098 0.40780791812416606 186.59601333953287 0.41151684606748784 188.29315701982478 0.41151684606748784 190 + 0 8 0.30759457669048318 6 0.64982227833657946 6 1 8 +7 0 0 7 20 4 3.1415926535897931 130 3.0660281889643519 130 2.990583169127206 130.05329228421115 2.9164748151389448 130.15958274693631 2.8440992178683127 130.31074365945841 2.7736158232905277 130.49706344959191 2.70495819896867 130.70955796991018 2.5631379941723229 131.19840252074181 2.490285660793738 131.47942926704206 2.4185365367169682 131.77519479638855 2.3473926232230196 132.07805706842547 2.2763352439147004 132.38049995237745 2.2048371881245359 132.67525479805303 2.0576203695522826 133.23927066004759 1.9818085176967826 133.50790196241167 1.9039233721279634 133.75038739924142 1.8236483193528268 133.95324155007785 1.7409942942068719 134.10007506789546 1.6561384758036586 134.17424305044159 1.5707963267948966 134.17424305044159 + 0 8 0.30759457669048318 6 0.64982227833657946 6 1 8 +7 0 0 7 20 4 0 210 0.030225781949774877 210.00000015112892 0.060403947046212103 209.86676130590678 0.089809652021665798 209.60108031223749 0.11805541820573318 209.218337305402 0.14492817656264201 208.73429928613263 0.17034350101405416 208.16354005084071 0.22097719814238648 206.79433261849749 0.24587007505078695 205.97699038859366 0.26911311729224341 205.07291765293593 0.29073064043839469 204.0872087019697 0.31070894112672143 203.02217736473835 0.32899625972729307 201.87735662989815 0.36230785920336483 199.38475278817143 0.37725325445872215 198.03231533928286 0.390117648728741 196.58271141667572 0.40046937309720754 195.03660827322122 0.40780791812423445 193.40398666044547 0.41151684606748784 191.70684298016479 0.41151684606748784 190 + 0 8 0.30759457708374965 6 0.64982227853976171 6 1 8 +7 0 0 7 20 4 0 130 0.075564454874439413 129.99999993954845 0.15100949674968245 130.05329244438005 0.22511782661739943 130.15958252985621 0.29749345235156621 130.31074383584001 0.36797682046048319 130.49706338173036 0.43663445448953642 130.70955796945879 0.57845465941195773 131.19840252072038 0.65130699279232651 131.47942926702643 0.72305611686996407 131.77519479637638 0.79420003036601372 132.07805706842194 0.86525740967521614 132.38049995237844 0.9367554654670105 132.67525479806048 1.083972284040347 133.23927066005763 1.1597841358952055 133.50790196241874 1.237669281464072 133.75038739924679 1.3179443342382484 133.95324155008026 1.4005983593840572 134.10007506789648 1.4854541777866581 134.17424305044159 1.5707963267948966 134.17424305044159 + 0 8 0.30759457708374965 6 0.64982227853976171 6 1 8 +1 0 300 1 0 +2 0 0 1 0 -0 1 50 +7 0 0 7 20 4 5.8716684611120975 190 5.8716684611120975 191.59470473177032 5.8749059028716193 193.18300736835764 5.8813321069643223 194.71853389030395 5.8904651265718124 196.18052669073927 5.9018780409366576 197.55912140006541 5.9151979318998142 198.85243140925283 5.9462084611708423 201.35105901096543 5.9641289663948038 202.54672198847359 5.9838251760721368 203.65923928159609 6.0052210062386386 204.68966641477729 6.0282871279797714 205.63644230398049 6.0530414572594031 206.49533677731949 6.1044269515080547 207.96912486937774 6.1308374961490646 208.59688514306879 6.1588814275196162 209.13122176228288 6.1884827812567487 209.55549250885861 6.2194178552699579 209.85140168924835 6.2512650364101381 209.99999984039866 6.2831853071795862 210 + 0 8 0.32749647504072238 6 0.67535626474437049 6 1 8 +7 0 0 7 20 4 4.7123889803846897 134.17424305044165 4.792124216973205 134.17424305044165 4.871538494524069 134.109501588238 4.9491476214706687 133.98093441747562 5.0246865889741397 133.80144025823762 5.0980947143362885 133.58463698586883 5.1695864449974964 133.342042384835 5.3141548773514753 132.80607638507519 5.3871014215083353 132.51031302162392 5.4594044138419315 132.20408325001534 5.5316132221631182 131.89522935167579 5.60427564662095 131.59163257630365 5.677918145328567 131.30105579194895 5.8237214347629163 130.78164824070652 5.8956954738428466 130.54984239343437 5.9696580651840625 130.34511387364307 6.0457291958282866 130.17782343218008 6.1237672294309933 130.05943515068626 6.2033846302559654 130.00000006384056 6.2831853071795862 130 + 0 8 0.32749647504072238 6 0.67535626474437049 6 1 8 +1 6.2831853071795862 -0 0 1 +1 0 -0 0 1 +1 0 200 1 0 +2 0 0 1 0 -0 1 20 +1 0 40 1 0 +1 0 0 1 0 +2 0 0 1 0 -0 1 20 +1 0 160 1 0 +Curves 18 +2 0 0 800 0 0 1 1 0 -0 -0 1 0 100 +7 0 0 8 23 4 86.602540378443834 -50.000000000000043 400 86.602540378443834 -50.000000000000043 396.4531264233774 86.768554360301678 -49.712441623392252 392.92833608277681 87.096991301103003 -49.143655969881841 389.51230084494648 87.559643674082039 -48.329700648459557 386.24424709027198 88.124612677937151 -47.303758601946697 383.14348794697975 88.763476885346648 -46.096633933969066 380.21545709727701 89.453947255999054 -44.730534623268426 377.45508725218542 90.961452312325122 -41.584580251230875 372.04985730479018 91.784169844339857 -39.781402281845395 369.42820567367704 92.631457510690922 -37.81125762107866 366.96284011636072 93.48864237267378 -35.675359427746407 364.64644480202827 94.341495300176689 -33.371375094216411 362.47799188863092 95.175736723592081 -30.894400229760695 360.46051727651405 95.976668732951339 -28.235197605551782 358.60197280754011 97.413920783548775 -22.756398616550438 355.37514358939779 98.05887438439548 -19.967859727516355 353.97770142062154 98.646808131230941 -17.001060903351803 352.74076825489283 99.157716247916952 -13.856554777440659 351.69171562635694 99.568620170602742 -10.546176703746648 350.86267948835513 99.855699662295592 -7.0960544318152783 350.28862243838159 99.999999822335354 -3.55329295081635 350.00000035532935 100 0 350 + 0 9 0.32715155003298801 7 0.67848367377663077 7 1 9 +1 100 -2.4492127076447545e-14 0 0 0 1 +2 0 0 0 0 0 1 1 0 -0 -0 1 0 100 +7 0 0 8 23 4 100 0 350 100.00000016788265 3.357653056092063 349.99999966423474 99.871153979567325 6.7082922507060294 350.25770810060493 99.614413693494157 9.9811535532793023 350.77111458667099 99.244989236204319 13.133667254014087 351.51570531988671 98.782719490160005 16.14106204554367 352.46209608878792 98.247314081381845 18.991065369133018 353.58237755135616 97.656293340043064 21.681267443995591 354.85222820605424 96.305069830741061 27.094898672399299 357.84920888955003 95.532205610731751 29.776083412862121 359.61622715531161 94.722154327365587 32.277992523382729 361.54040041871144 93.889578416120571 34.609753071732321 363.61204164396673 93.048311226451844 36.776998731952766 365.8264229027584 92.211706870163113 38.783329440035715 368.18305324271273 91.393072001530825 40.629443402342417 370.68769525783222 89.809460344875703 44.020678864939597 376.0736018517199 89.045865019642378 45.559762660744155 378.9594576910697 88.333353522290722 46.923337441037496 382.03427944841542 87.697209384435155 48.087216148864847 385.30662787333353 87.171127692761729 49.015295205844701 388.77333266748747 86.793973628457792 49.668405227687359 392.41514581060738 86.602540378443862 50 396.1912597343462 86.602540378443862 50 400 + 0 9 0.30404471865854837 7 0.64918916271671423 7 1 9 +7 0 0 8 23 4 100 0 450 100 3.3576535464432191 450 99.871154312247143 6.7082918702808545 449.74229256882165 99.614413450153194 9.9811536835594623 449.22888491692595 99.244989177299104 13.133667136739369 448.48429456674455 98.782719765236706 16.141061698735722 447.53790447273542 98.247313911152233 18.991065751063456 446.41762209624159 97.656293338930354 21.681267448453593 445.14777179147779 96.305069830740891 27.09489867239995 442.15079111044957 95.532205610732319 29.776083412860999 440.38377284469061 94.722154327364748 32.277992523383702 438.45959958128537 93.88957841612077 34.609753071732086 436.38795835603389 93.048311226452682 36.776998731951778 434.17357709724484 92.211706870162118 38.783329440037349 431.81694675728357 91.393072001531223 40.629443402341558 429.31230474216915 89.809460344875973 44.020678864939015 423.92639814828101 89.045865019641511 45.559762660746543 421.04054230892496 88.333353522292256 46.923337441033972 417.96572055159834 87.697209384433535 48.087216148866737 414.6933721266472 87.17112769276271 49.015295205845263 411.22666733252822 86.793973628457522 49.668405227686577 407.58485418938534 86.602540378443862 50 403.80874026565544 86.602540378443862 50 400 + 0 9 0.30404471828653629 7 0.64918916252934122 7 1 9 +7 0 0 8 23 4 86.602540378443834 -50.000000000000043 400 86.602540378443834 -50.000000000000043 403.54687357661732 86.768554360302232 -49.712441623391754 407.0716639172436 87.09699130110117 -49.143655969883547 410.487699155016 87.559643674084654 -48.329700648456935 413.75575290976724 88.124612677935062 -47.303758601949092 416.85651205299661 88.763476885347615 -46.096633933967624 419.78454290273055 89.453947255998813 -44.730534623268937 422.54491274781367 90.961452312325036 -41.584580251231031 427.95014269520948 91.784169844340013 -39.781402281845253 430.57179432632284 92.631457510690936 -37.811257621078354 433.03715988364036 93.488642372673581 -35.675359427746841 435.35355519797133 94.341495300176646 -33.37137509421671 437.52200811136817 95.175736723592308 -30.89440022975991 439.53948272348691 95.976668732951225 -28.235197605552226 441.39802719245961 97.413920784822892 -22.756398611693562 444.62485641346274 98.058874567884601 -19.967859324472435 446.02229896119849 98.646807838010218 -17.001061271986877 447.25923114449233 99.157716307234622 -13.856554899211012 448.30828448674504 99.568620428735201 -10.546176567483982 449.13732104001321 99.855699311461152 -7.0960548419637099 449.71137685489032 100 -3.5532924194227782 450 100 0 450 + 0 9 0.32715154983796968 7 0.67848367337201809 7 1 9 +7 0 0 8 86 13 190 20 445.82575694955841 188.76161711057227 20 445.82575694955841 187.55133668015193 19.91235337387026 445.86400686750096 186.40804485479049 19.744123905050216 445.93744289222383 185.33795497726547 19.514902285540977 446.03631256989695 184.34258844053036 19.237873159851539 446.15335170344235 183.4162771353935 18.925064118927583 446.28248355294483 182.54924607309326 18.582260868803356 446.42047134686101 180.5313877921306 17.665560569655433 446.7789324820896 179.44012090542088 17.061450737150739 447.00680039845656 178.42489439075112 16.40377787695131 447.2441561855693 177.47714125871727 15.694221315276218 447.4874142313061 176.58765276942751 14.933544392727526 447.73331406254499 175.75234570339671 14.118946812391625 447.97940245081276 174.96696097018872 13.245592454199262 448.22350020908942 173.60217638596475 11.495728687255017 448.66761533646343 173.01544757903642 10.646755069979088 448.86683910093825 172.46336132523098 9.7423084173559129 449.0610751124795 171.94696597602535 8.771423029278985 449.24861455151228 171.47070368601692 7.7249441623440038 449.42647700851086 171.044924719389 6.5904239412074901 449.58927437043644 170.68192128165288 5.3591604830220598 449.73050810726863 170.16788483391167 2.8445553031042996 449.93260628849634 169.98675095042276 1.5578500753039846 450.00490986887729 169.90241768877223 0.21126482985045633 450.03935566262362 169.92983296212577 -1.1418347912938847 450.02831824022019 170.06246027525333 -2.4583899354909087 449.97445348359048 170.28378283343829 -3.704622003922788 449.88605009478971 170.56795276727468 -4.8532125714778402 449.77468372826468 171.28490034470798 -7.1832615379201048 449.49867024844349 171.75813983885746 -8.3610693252848058 449.31962520702172 172.28669212661248 -9.4474000731872163 449.12446492753941 172.86264456356133 -10.451521549066081 448.91808899742563 173.47925753251525 -11.386037243846355 448.70476714178824 174.13467786991569 -12.258255622356449 448.48695690533697 174.82956714675092 -13.076870757778455 448.26636325898102 176.00111900189935 -14.297448989351548 447.91451132377955 176.44739232078726 -14.730560988794394 447.78448181541324 176.90942117645849 -15.148186634249697 447.65429745119013 177.38676190073474 -15.549790747042026 447.5246795099726 177.87897923803828 -15.934838498820188 447.39635744335635 178.38564634539176 -16.302795411557238 447.27006887567012 178.90634479241825 -16.653127357550481 447.14655960397596 179.97496970201598 -17.317464667277328 446.90661087678365 180.52299721930251 -17.631473643437698 446.79015597437859 181.08420673921333 -17.926789246506338 446.67797863376529 181.65818491571483 -18.202858939283349 446.57082398269648 182.24464543072799 -18.459115888765186 446.469422533765 182.84342899412766 -18.694978966144653 446.37449018440464 183.45450334374323 -18.909852746810909 446.28672821688906 184.81704385450712 -19.332245100108075 446.1121000038147 185.60147540318962 -19.539596822360508 446.02485151515918 186.43393805468477 -19.720072090406671 445.94770396971876 187.31387149619184 -19.866415718649087 445.8842320477263 188.23647567906212 -19.970468445414252 445.83867600419984 189.1915419192367 -20.02405348878451 445.81520441504995 190.16041200836165 -20.021926857902038 445.81621712319691 192.52143481281828 -19.89076336064802 445.87335669559917 193.84478773876532 -19.702761135389348 445.95507413275465 195.06679581640853 -19.429423733772833 446.07289768205271 196.19442250073351 -19.093863615052797 446.21441332180007 197.2339901412731 -18.710705503299977 446.37158175461525 198.19784034352128 -18.29082509447235 446.53855952571217 199.100910190511 -17.836992814585784 446.71316117898493 201.11765616922102 -16.678595142648216 447.14155083633744 202.17669187279171 -15.953143137007794 447.39760888173515 203.16359594026292 -15.168455096124706 447.6596949881054 204.08585426002017 -14.322479844337014 447.92460429403201 204.9499797977617 -13.41268261852915 448.1891514540867 205.75731315708825 -12.431663425542878 448.4501500638188 206.5085724462667 -11.371142075518817 448.7043523794726 207.55059273349855 -9.6150274534363902 449.07051619437817 207.87877699148535 -9.0090680862683605 449.18835549372614 208.18373555748497 -8.3889992621684186 449.29995996212511 208.46471177911445 -7.7557979054120896 449.40450751199393 208.72099547901203 -7.1104820307283623 449.50123316750705 208.95192203202214 -6.4541494263144097 449.5894363355099 209.15687144238044 -5.7880163368502879 449.66848807643208 209.48565334621975 -4.5448090320959809 449.7962999444498 209.6214488622964 -3.9537215627022064 449.84952693537196 209.74086778055747 -3.3395736896957944 449.89668662994114 209.841223344334 -2.702739282198082 449.93656069137319 209.9195218531847 -2.0451075411731523 449.9678069996001 209.9730562872202 -1.3706044135127382 449.98922148674052 209.99999993142859 -0.68571400612111455 449.9999999725714 210 -9.1940344226770776e-17 450 + 0 9 0.073876687960228921 7 0.18146279930185341 7 0.27297502317927325 7 0.35146796836731969 7 0.45078644852611266 7 0.50839166691615778 7 0.56599530822916722 7 0.63428155117843577 7 0.73589383894819183 7 0.87241439129297038 7 0.94164192250558687 7 1 9 +7 0 0 8 23 4 210 0 450 210.00000010265583 1.0265578731026479 450.00000004106238 209.93977343220345 2.0531775184097456 449.97591303009051 209.81934542997405 3.0681562548346761 449.92773155770618 209.64146807704995 4.0627445455190339 449.85693056989879 209.41030407615489 5.0306400381813221 449.76583102573477 209.13045541836325 5.967555357915689 449.65711085521787 208.80633633462796 6.8708596524406813 449.53346321730521 207.83713099429386 9.18036994382215 449.17162275319538 207.12197755130393 10.523829394329878 448.91191262084078 206.31025246004447 11.774932713181144 448.62820958148819 205.41069337265455 12.936028214861254 448.32905016254443 204.42944864183883 14.00912988520586 448.02224735685644 203.36899179251105 14.995089694532629 447.71504812589012 202.22871149661322 15.894132086087689 447.41427710488529 199.8723811516461 17.445880100292989 446.86429201706522 198.67075640785762 18.112500879287495 446.61297426562851 197.39099658337528 18.699329061251035 446.37992285218809 196.03237707895312 19.196046924645117 446.17381782714585 194.5987376061355 19.588584661696704 446.00532690104916 193.09989869850125 19.861934582966615 445.88601103430921 191.554374056744 20 445.82575694955841 190 20 445.82575694955841 + 0 9 0.23911948610599457 7 0.63591333721726562 7 1 9 +7 0 0 7 20 4 190 -20.000000000000004 354.17424305044159 188.40529526822812 -20.000000000000004 354.17424305044159 186.81699263164407 -19.85163748421305 354.10950158823778 185.28146610968872 -19.557176296119984 353.98093441747551 183.8194733092634 -19.137252010782827 353.80144025823751 182.44087859992891 -18.609272595736567 353.58463698586797 181.14756859074458 -17.988894519498103 353.34204238483449 178.64894098900859 -16.533946836137474 352.8060763850695 177.45327801148096 -15.688010730209923 352.51031302161272 176.34076071834318 -14.751671354023641 352.20408324999806 175.31033358514742 -13.726821040656557 351.89522935165371 174.36355769593391 -12.613431647889318 351.59163257627586 173.50466322258802 -11.409602762233769 351.30105579191763 172.03087512917583 -8.8933777413809842 350.78164824019547 171.40311466706285 -7.5928607668802197 350.54984232049196 170.86877872094436 -6.2046298165562233 350.34511406165245 170.44450690892319 -4.7324669523921434 350.1778232028887 170.14859873510889 -3.188373618690417 350.05943531939067 170 -1.5960133272396184 349.99999999999994 170 0 349.99999999999994 + 0 8 0.32749647483565042 6 0.67535626432716744 6 1 8 +1 50 -1.2246063538223773e-14 0 0 0 1 +7 0 0 7 20 4 170 0 350 170 1.5112892925088235 350 170.13323829157676 3.0201974972875441 350.05329228421118 170.39892023771003 4.4882262522719127 350.15958274693634 170.78166224300142 5.8937836338085239 350.31074365945841 171.26570088958786 7.2253835508502897 350.49706344959191 171.83645995042141 8.4787047126246602 350.70955796991018 173.20566738156501 10.962745615245275 351.19840252074181 174.02300961145505 12.175956849896046 351.47942926704201 174.92708234710466 13.300618833567951 351.77519479638875 175.91279129804428 14.338824970520468 352.07805706842532 176.97782263526184 15.29122457343451 352.38049995237753 178.12264337007468 16.156924091174648 352.67525479805306 180.61524721177804 17.724100774430205 353.23927066004762 181.9676846606753 18.42161104257076 353.50790196241178 183.41728858328361 19.017546268068447 353.75038739924128 184.96339172675098 19.493771560366365 353.95324155007802 186.59601333953287 19.830029166827707 354.10007506789543 188.29315701982478 19.999999999999982 354.17424305044159 190 19.999999999999982 354.17424305044159 + 0 8 0.30759457669048318 6 0.64982227833657946 6 1 8 +7 0 0 7 20 4 210 0 350 210.00000015112892 1.5112890974887772 349.99999993954845 209.86676130590678 3.0201977385758565 350.05329244438008 209.60108031223749 4.4882260331561916 350.15958252985627 209.218337305402 5.8937839375949101 350.31074383584001 208.73429928613263 7.2253833710765241 350.49706338173036 208.16354005084071 8.4787047103152631 350.70955796945879 206.79433261849749 10.962745615153812 351.19840252072038 205.97699038859366 12.175956849838967 351.47942926702643 205.07291765293593 13.300618833526656 351.77519479637635 204.0872087019697 14.338824970513437 352.07805706842197 203.02217736473835 15.291224573438482 352.38049995237844 201.87735662989815 16.156924091197233 352.67525479806051 199.38475278817143 17.724100774456375 353.23927066005763 198.03231533928286 18.421611042587735 353.50790196241871 196.58271141667572 19.017546268081134 353.75038739924679 195.03660827322122 19.493771560372139 353.95324155008029 193.40398666044547 19.830029166829849 354.10007506789646 191.70684298016479 19.999999999999982 354.17424305044159 190 19.999999999999982 354.17424305044159 + 0 8 0.30759457708374965 6 0.64982227853976171 6 1 8 +2 0 0 300 0 0 1 1 0 -0 -0 1 0 50 +7 0 0 7 20 4 190 -20.000000000000004 354.17424305044159 191.59470473177032 -20.000000000000004 354.17424305044165 193.18300736835764 -19.851637484212873 354.10950158823789 194.71853389030395 -19.557176296121398 353.98093441747574 196.18052669073927 -19.13725201078212 353.80144025823745 197.55912140006541 -18.609272595738776 353.58463698586883 198.85243140925283 -17.988894519499269 353.34204238483494 201.35105901096543 -16.533946836152985 352.80607638507519 202.54672198847359 -15.688010730242384 352.51031302162386 203.65923928159609 -14.751671354075334 352.2040832500154 204.68966641477729 -13.726821040731068 351.89522935167571 205.63644230398049 -12.613431647990538 351.59163257630365 206.49533677731949 -11.409602762363491 351.30105579194895 207.96912486937774 -8.8933777438768757 350.78164824070649 208.59688514306879 -7.592860956872455 350.54984239343435 209.13122176228288 -6.2046294940723943 350.34511387364302 209.55549250885861 -4.7324671867573436 350.17782343218005 209.85140168924835 -3.1883733582241396 350.05943515068623 209.99999984039866 -1.5960135384724008 350.0000000638405 210 0 349.99999999999994 + 0 8 0.32749647504072238 6 0.67535626474437049 6 1 8 +1 20 -4.898425415289509e-15 0 0 0 1 +2 0 0 200 0 0 1 1 0 -0 -0 1 0 20 +2 0 0 0 0 0 1 1 0 -0 -0 1 0 20 +Polygon3D 0 +PolygonOnTriangulations 0 +Surfaces 8 +1 0 0 800 0 0 1 1 0 -0 -0 1 0 +2 0 0 0 0 0 1 1 0 -0 -0 1 0 100 +2 0 0 0 0 0 1 1 0 -0 -0 1 0 50 +1 0 0 0 0 0 1 1 0 -0 -0 1 0 +2 0 0 0 0 0 1 1 0 -0 -0 1 0 20 +1 0 0 300 0 0 1 1 0 -0 -0 1 0 +1 0 0 200 0 0 1 1 0 -0 -0 1 0 +1 0 0 0 0 0 1 1 0 -0 -0 1 0 +Triangulations 0 + +TShapes 57 +Ve +1e-07 +100 -2.44921270764475e-14 800 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 1 0 0 6.28318530717959 +2 1 2 0 0 6.28318530717959 +2 2 1 0 0 6.28318530717959 +0 + +0101100 ++57 0 -57 0 * +Wi + +0101000 ++56 0 * +Fa +0 1e-07 1 0 + +0101000 ++55 0 * +Ve +3.77011308578173e-06 +86.6025403784438 -50 400 +0 0 + +0101101 +* +Ve +3.77011308578173e-06 +100 -1.83690953073357e-14 350 +0 0 + +0101101 +* +Ed + 3.77011308578173e-06 1 1 0 +1 2 0 0 1 +2 3 2 0 0 1 +2 4 3 1 0 1 +0 + +0101000 ++53 0 -52 0 * +Ve +1e-07 +100 -2.44921270764475e-14 0 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 3 0 0 350 +3 5 6CN 2 0 0 350 +0 + +0101000 ++50 0 -52 0 * +Ed + 1e-07 1 1 0 +1 4 0 0 6.28318530717959 +2 7 2 0 0 6.28318530717959 +2 8 4 0 0 6.28318530717959 +0 + +0101100 ++50 0 -50 0 * +Ve +3.77011308578173e-06 +86.6025403784439 50 400 +0 0 + +0101101 +* +Ed + 3.77011308578173e-06 1 1 0 +1 5 0 0 1 +2 9 2 0 0 1 +2 10 3 1 0 1 +0 + +0101000 ++52 0 -47 0 * +Ve +3.77011308578173e-06 +100 -2.44921270764475e-14 450 +0 0 + +0101101 +* +Ed + 3.77011308578173e-06 1 1 0 +1 6 0 0 1 +2 11 2 0 0 1 +2 12 3 1 0 1 +0 + +0101000 ++45 0 -47 0 * +Ed + 1e-07 1 1 0 +1 3 0 450 800 +3 5 6CN 2 0 450 800 +0 + +0101000 ++45 0 -57 0 * +Ed + 3.77011308578173e-06 1 1 0 +1 7 0 0 1 +2 13 2 0 0 1 +2 14 3 1 0 1 +0 + +0101000 ++53 0 -45 0 * +Wi + +0101000 +-51 0 +49 0 +48 0 -49 0 -46 0 +44 0 -43 0 -56 0 +43 0 +42 0 +* +Fa +0 1e-07 2 0 + +0101000 ++41 0 * +Ve +7.99539616382488e-05 +190 20 445.825756949558 +0 0 + +0101101 +* +Ve +7.99539616382488e-05 +210 -4.89842541528951e-15 450 +0 0 + +0101101 +* +Ed + 7.99539616382488e-05 1 1 0 +1 8 0 0 1 +2 15 3 1 0 1 +2 16 5 2 0 1 +0 + +0101000 ++39 0 -38 0 * +Ed + 7.99539616382488e-05 1 1 0 +1 9 0 0 1 +2 17 3 1 0 1 +2 18 5 2 0 1 +0 + +0101000 ++38 0 -39 0 * +Wi + +0101000 +-37 0 -36 0 * +Ve +1.92831599071361e-06 +190 -20 354.174243050442 +0 0 + +0101101 +* +Ve +1.92831599071361e-06 +170 -1.22460635382238e-14 350 +0 0 + +0101101 +* +Ed + 1.92831599071361e-06 1 1 0 +1 10 0 0 1 +2 19 3 1 0 1 +2 20 5 3 0 1 +0 + +0101000 ++34 0 -33 0 * +Ed + 1e-07 1 1 0 +1 11 0 100 170 +3 21 22CN 3 0 100 170 +0 + +0101000 ++52 4 -33 4 * +Ve +1.92831599071361e-06 +190 20 354.174243050442 +0 0 + +0101101 +* +Ed + 1.92831599071361e-06 1 1 0 +1 12 0 0 1 +2 23 3 1 0 1 +2 24 5 3 0 1 +0 + +0101000 ++33 0 -30 0 * +Ve +1.92831599071361e-06 +210 -8.57224447675664e-15 350 +0 0 + +0101101 +* +Ed + 1.92831599071361e-06 1 1 0 +1 13 0 0 1 +2 25 3 1 0 1 +2 26 5 3 0 1 +0 + +0101000 ++28 0 -30 0 * +Ve +1e-07 +50 -1.22460635382238e-14 300 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 11 0 210 300 +3 21 22CN 3 0 210 300 +0 + +0101000 ++28 4 -26 0 * +Ed + 1e-07 1 1 0 +1 14 0 0 6.28318530717959 +2 27 3 0 0 6.28318530717959 +2 28 6 0 0 6.28318530717959 +0 + +0101100 ++26 0 -26 0 * +Ed + 1.92831599071361e-06 1 1 0 +1 15 0 0 1 +2 29 3 1 0 1 +2 30 5 3 0 1 +0 + +0101000 ++34 0 -28 0 * +Wi + +0101000 +-32 0 +31 1 +51 0 -42 0 -44 0 +46 0 -31 1 -29 0 +27 0 -25 1 +-24 1 +25 1 +23 0 * +Fa +0 1e-07 3 1 + +0101000 ++35 0 +22 0 * +Wi + +0101000 +-48 0 * +Fa +0 1e-07 4 0 + +0101000 +-20 0 * +Ve +1e-07 +20 -4.89842541528951e-15 200 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 16 0 70 200 +3 31 32CN 5 0 70 200 +0 + +0101000 ++38 5 -18 0 * +Ed + 1e-07 1 1 0 +1 17 0 0 6.28318530717959 +2 33 5 0 0 6.28318530717959 +2 34 7 0 0 6.28318530717959 +2 35 5 6 0 6.28318530717959 +0 + +0101100 ++18 0 -18 0 * +Wi + +0101000 ++36 0 -17 2 -16 2 +17 2 +37 0 * +Fa +0 1e-07 5 2 + +0101000 ++15 0 * +Ve +1e-07 +20 -4.89842541528951e-15 0 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 16 0 0 130 +3 31 32CN 5 0 0 130 +0 + +0101000 ++13 0 -28 7 * +Ed + 1e-07 1 1 0 +1 18 0 0 6.28318530717959 +2 36 5 0 0 6.28318530717959 +2 37 8 0 0 6.28318530717959 +2 38 5 8 0 6.28318530717959 +0 + +0101100 ++13 0 -13 0 * +Wi + +0101000 +-23 0 +12 3 +11 3 -12 3 -27 0 +29 0 +32 0 * +Fa +0 1e-07 5 3 + +0101000 ++10 0 * +Wi + +0101000 ++24 0 * +Fa +0 1e-07 6 0 + +0101000 ++8 0 * +Wi + +0101000 ++16 0 * +Fa +0 1e-07 7 0 + +0101000 ++6 0 * +Wi + +0101000 +-11 0 * +Fa +0 1e-07 8 0 + +0101000 +-4 0 * +Sh + +0101000 ++54 0 +40 0 +21 0 -19 0 +14 0 +9 0 +7 1 +5 2 -3 3 * +So + +0100000 ++2 0 * + ++1 0 diff --git a/src/TEST_PY/test_unit/troisCylindres_v5.py b/src/TEST_PY/test_unit/troisCylindres_v5.py new file mode 100644 index 0000000..27dd1f9 --- /dev/null +++ b/src/TEST_PY/test_unit/troisCylindres_v5.py @@ -0,0 +1,216 @@ +# -*- coding: latin-1 -*- +# Copyright (C) 2009-2012 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# Francis KLOSS : 2012 : CEA-Saclay, DEN, DM2S, SFME, LGLS, F-91191 Gif-sur-Yvette, France +# ======================================================================================== + +import geompy +import hexablock + +# Charger la geometrie +# ==================== + +nom = "troisCylindres" + +piece = geompy.ImportBREP(nom+".brep") + +# Selectionner des sous-parties de la geometrie +# --------------------------------------------- + +sommets = geompy.SubShapeAllSortedCentres(piece, geompy.ShapeType["VERTEX"]) +aretes = geompy.SubShapeAllSortedCentres(piece, geompy.ShapeType["EDGE" ]) + +moy_b_x, moy_b_y, moy_b_z = geompy.PointCoordinates(sommets[14]) +moy_p_x, moy_p_y, moy_p_z = geompy.PointCoordinates(sommets[ 6]) +moy_g_x, moy_g_y, moy_g_z = geompy.PointCoordinates(sommets[ 3]) + +grand0, grand_xb, grand_yb, grand_zb, grand1, grand2, grand3, grand_rayon = geompy.KindOfShape(aretes[ 0]) +grand4, grand_xh, grand_yh, grand_zh, grand5, grand6, grand7, grand8 = geompy.KindOfShape(aretes[ 1]) + +moyen0, moyen_x , moyen_y , moyen_z , moyen1, moyen2, moyen3, moyen_rayon = geompy.KindOfShape(aretes[20]) + +petit0, petit_xb, petit_yb, petit_zb, petit1, petit2, petit3, petit_rayon = geompy.KindOfShape(aretes[12]) +petit4, petit_xh, petit_yh, petit_zh, petit5, petit6, petit7, petit8 = geompy.KindOfShape(aretes[13]) + +# Construire le modele de bloc +# ============================ + +doc = hexablock.addDocument(nom) + +doc.addShape(piece,nom) + +# Construire le grand cylindre +# ---------------------------- + +grand_base = doc.addVertex(grand_xb, grand_yb, grand_zb) +grand_oppo = doc.addVertex(grand_xh, grand_yh, grand_zh) + +grand_dir = doc.addVectorVertices(grand_base, grand_oppo) + +grand_hauteur = grand_dir.getNorm() + +grand_cylindre = doc.addCylinder(grand_base, grand_dir, grand_rayon, grand_hauteur) + +# Construire le moyen cylindre cote grand +# --------------------------------------- + +moy_g_r1 = 0.8 +moy_g_r2 = 0.5 + +moy_g_base_x = moy_p_x + (moy_g_x-moy_p_x)*moy_g_r1 + moyen_x - moy_b_x +moy_g_base_y = moy_p_y + (moy_g_y-moy_p_y)*moy_g_r1 + moyen_y - moy_b_y +moy_g_base_z = moy_p_z + (moy_g_z-moy_p_z)*moy_g_r1 + moyen_z - moy_b_z + +moy_g_base = doc.addVertex(moy_g_base_x, moy_g_base_y, moy_g_base_z) +moy_g_oppo = doc.addVertex( (grand_xh+grand_xb) * moy_g_r2, (grand_yh+grand_yb) * moy_g_r2, (grand_zh+grand_zb) * moy_g_r2 ) + +moy_g_dir = doc.addVectorVertices(moy_g_base, moy_g_oppo) + +moy_g_hauteur = moy_g_dir.getNorm() + +moy_g_cylindre = doc.addCylinder(moy_g_base, moy_g_dir, moyen_rayon, moy_g_hauteur) + +# Construire le moyen cylindre cote petit +# --------------------------------------- + +moy_p_r = 0.18 + +moy_p_base = doc.addVertex(moyen_x, moyen_y, moyen_z) +moy_b_base = doc.addVertex(moy_b_x, moy_b_y, moy_b_z) +moy_p_oppo = doc.addVertex( moy_p_x+(moy_g_x-moy_p_x) * moy_p_r, moy_p_y+(moy_g_y-moy_p_y) * moy_p_r, moy_p_z+(moy_g_z-moy_p_z) * moy_p_r ) + +moy_p_dir = doc.addVectorVertices(moy_b_base, moy_p_oppo) + +moy_p_hauteur = moy_p_dir.getNorm() + +moy_p_cylindre = doc.addCylinder(moy_p_base, moy_p_dir, moyen_rayon, moy_p_hauteur) + +# Construire le petit cylindre +# ---------------------------- + +petit_base = doc.addVertex(petit_xb, petit_yb, petit_zb) +petit_oppo = doc.addVertex(petit_xh, petit_yh, petit_zh) + +petit_dir = doc.addVectorVertices(petit_base, petit_oppo) + +petit_hauteur = petit_dir.getNorm() + +petit_cylindre = doc.addCylinder(petit_base, petit_dir, petit_rayon, petit_hauteur) + +# Construire le T et la X +# ----------------------- + +en_te = doc.makeCylinders(grand_cylindre, moy_g_cylindre) +croix = doc.makeCylinders(moy_p_cylindre, petit_cylindre) + +# Relier le T et la X +# ------------------- + +croix_quads = [] + +for i in xrange(1, -1, -1): + for j in xrange( [hexablock.CV_MAXI_INT, hexablock.CV_MAXI_EXT][i] ): + quad = croix.getQuadIJ(hexablock.CYL_BIG, i, j, hexablock.CYL_BIG_SLICES) + croix_quads.append(quad) + +en_te_q = en_te.getQuadIJ(hexablock.CYL_SMALL, 1, hexablock.V_N, 0) + +en_te_v0 = en_te.getVertexIJK(hexablock.CYL_SMALL, 2, hexablock.V_N , 0) +en_te_v1 = en_te.getVertexIJK(hexablock.CYL_SMALL, 2, hexablock.V_NW, 0) + +croix_v0 = croix.getVertexIJK(hexablock.CYL_BIG, 2, hexablock.V_E , hexablock.CYL_BIG_SLICES) +croix_v1 = croix.getVertexIJK(hexablock.CYL_BIG, 2, hexablock.V_NE, hexablock.CYL_BIG_SLICES) + +prisme = doc.joinQuads(croix_quads, en_te_q, croix_v0, en_te_v0, croix_v1, en_te_v1, 1) + +# Associer +# ======== + +# fkl: comme pour la tuyauterie: associer pour le prisme (sauf si item 142 et 146 de Taches.ods) + +# Mailler le modele de bloc +# ========================= + +# Definir 5 groupes de faces +# -------------------------- + +groupe_grand_a = doc.addQuadGroup("Grand_A") +groupe_grand_b = doc.addQuadGroup("Grand_B") +groupe_moyen_f = doc.addQuadGroup("Moyen") +groupe_petit_a = doc.addQuadGroup("Petit_A") +groupe_petit_b = doc.addQuadGroup("Petit_B") + +for i in xrange(2): + for j in xrange( [hexablock.CV_MAXI_INT, hexablock.CV_MAXI_EXT][i] ): + quad = en_te.getQuadIJ(hexablock.CYL_BIG , i, j, 0) + groupe_grand_a.addElement(quad) + + quad = en_te.getQuadIJ(hexablock.CYL_BIG , i, j, hexablock.CYL_BIG_SLICES) + groupe_grand_b.addElement(quad) + + quad = croix.getQuadIJ(hexablock.CYL_BIG , i, j, 0) + groupe_moyen_f.addElement(quad) + + quad = croix.getQuadIJ(hexablock.CYL_SMALL, i, j, 0) + groupe_petit_a.addElement(quad) + + quad = croix.getQuadIJ(hexablock.CYL_SMALL, i, j, hexablock.CYL_SMALL_SLICES) + groupe_petit_b.addElement(quad) + +# Definir 3 groupes de volumes +# ---------------------------- + +groupe_grand = doc.addHexaGroup("Grand") +groupe_moyen = doc.addHexaGroup("Moyen") +groupe_petit = doc.addHexaGroup("Petit") + +for i in xrange( doc.countUsedHexa() ): + h = doc.getUsedHexa(i) + groupe_moyen.addElement(h) + +for i in xrange(2): + for j in xrange( [hexablock.CV_MAXI_INT, hexablock.CV_MAXI_EXT][i] ): + for k in [ 0, hexablock.CYL_BIG_SLICES-1 ]: + h = en_te.getHexaIJK(hexablock.CYL_BIG, i, j, k) + groupe_grand.addElement(h) + groupe_moyen.removeElement(h) + + for k in [0, hexablock.CYL_SMALL_SLICES-1 ]: + h = croix.getHexaIJK(hexablock.CYL_SMALL, i, j, k) + groupe_petit.addElement(h) + groupe_moyen.removeElement(h) + +# Mailler le modele de bloc avec association +# ------------------------------------------ + +########## hexablock.addLaws(doc, 10, True) Ne marche pas + +law = doc.addLaw("Uniform", 4) +for j in range(doc.countPropagation()): + propa = doc.getPropagation(j) + propa.setLaw(law) + +doc.save("troisCylindres_v5") +doc.setName("troisCylindres_v5") +hexablock.addToStudy(doc) + +blocs = hexablock.mesh(doc, dim=3) + +muv, mue, muq, muh = hexablock.dump(doc, blocs) diff --git a/src/TEST_PY/test_unit/tuyau.brep b/src/TEST_PY/test_unit/tuyau.brep new file mode 100755 index 0000000..aa50342 --- /dev/null +++ b/src/TEST_PY/test_unit/tuyau.brep @@ -0,0 +1,425 @@ + +CASCADE Topology V1, (c) Matra-Datavision +Locations 0 +Curve2ds 28 +1 0 0 0 1 +1 0 0 0 1 +1 0 0 1 0 +3 5.0000000000000009 0 -1 -0 -0 1 5 2 +1 3.1415926535897931 0 0 1 +1 3.1415926535897931 0 0 1 +1 0 1 1 0 +2 0 -4.5 -6.123233995736766e-17 1 1 6.123233995736766e-17 4.5 +3 5.0000000000000009 0 -1 -0 -0 1 5 2 +2 0 -4.5 -6.123233995736766e-17 1 1 6.123233995736766e-17 4.5 +1 0 0 1 0 +1 0 0 1 0 +1 0 0 1 0 +3 5.0000000000000009 0 -1 -0 -0 1 4 1.6000000000000001 +1 10.000000000000002 2.4492935982947064e-16 -1 -4.8985871965894112e-17 +1 10.000000000000002 2.4492935982947064e-16 -1 -4.8985871965894112e-17 +1 0 0 0 1 +1 0 0 0 1 +1 3.1415926535897931 0 0 1 +1 3.1415926535897931 0 0 1 +1 0 1 1 0 +2 0 -4.5 -6.123233995736766e-17 1 1 6.123233995736766e-17 3.6000000000000001 +3 5.0000000000000009 0 -1 -0 -0 1 4 1.6000000000000001 +2 0 -4.5 -6.123233995736766e-17 1 1 6.123233995736766e-17 3.6000000000000001 +1 0 -0 6.1232339957367759e-17 -1 +1 0 -0 6.1232339957367759e-17 -1 +1 1.1021821192326179e-15 -9 -1.8369701987210317e-16 1 +1 1.1021821192326179e-15 -9 -1.8369701987210317e-16 1 +Curves 16 +7 1 0 7 8 2 3.5355339059327386 -3.5355339059327386 4.4408920985006262e-16 1 9.6048855423786907 5.6779402750195374 -5.742238377723344e-16 0.99999999999999989 18.214762018199355 14.344823330601708 -3.1843740466902976e-15 1.0000000000000058 31.904943295729403 14.237869646355081 1.2028108957336017e-14 0.99999999999998868 37.172160522651843 17.64988141136174 -8.7773709183773399e-15 1.0000000000000071 52.812746249130484 14.81612372870539 2.3298725788871153e-15 0.99999999999999833 63.447227270624914 15.5 0 1 75 15.5 0 1 + 0 8 1 8 +7 0 0 10 11 2 3.5355339059327386 -3.5355339059327386 4.4408920985006262e-16 3.5355339059328195 -3.5355339059328195 -0.62831853071801369 3.1478202812511471 -3.1478202812511471 -1.2566370068591419 2.3723834259365431 -2.3723834259365431 -1.7988274783398068 1.2775986014269276 -1.2775986014269276 -2.1687580291315651 1.1719514247943195e-12 -1.1719514247943195e-12 -2.3005529012372383 -1.2775986014289811 1.2775986014289811 -2.1687580291316819 -2.3723834259351833 2.3723834259351833 -1.7988274783396521 -3.1478202812517777 3.1478202812517777 -1.256637006859245 -3.5355339059326556 3.5355339059326556 -0.62831853071798205 -3.5355339059327386 3.5355339059327386 2.2204460492503131e-16 + 0 11 3.1415926535897931 11 +7 1 0 7 8 2 -3.5355339059327386 3.5355339059327386 2.2204460492503131e-16 1 3.5505706064268643 12.92839695201633 -1.5975347728255742e-15 0.99999999999999989 14.233536249242547 23.186298181990903 -5.559004606855246e-15 1.0000000000000058 28.117657554132329 15.130373948082415 1.4762487599297348e-14 0.99999999999998868 41.978695964977959 33.453377516518131 -1.3515968997086305e-14 1.0000000000000071 51.368462505527539 21.938158843438853 1.6901778625232096e-15 0.99999999999999833 63.447227270624914 24.500000000000004 -1.5086264655892687e-15 1 75.000000000000014 24.5 -1.5086264655892687e-15 1 + 0 8 1 8 +7 0 0 10 11 2 75 15.5 0 74.999999999999105 15.49999999999994 -1.4137166941154202 75.000000000003425 15.993478879707238 -2.8274332654334842 74.999999999990621 16.98044886550209 -4.0473618262637086 75.000000000018389 18.373882457535071 -4.8797055655472787 74.999999999974861 19.999999999996184 -5.1762440277824107 75.00000000002386 21.626117542471153 -4.879705565547396 74.999999999984084 23.019551134494474 -4.047361826263554 75.000000000007219 24.006521120294067 -2.8274332654335823 74.999999999998124 24.499999999999748 -1.4137166941153954 75.000000000000014 24.5 -1.5086264655892687e-15 + 0 11 3.1415926535897931 11 +7 0 0 10 11 2 3.5355339059327386 -3.5355339059327386 -4.4408920985006262e-16 3.5355339059328195 -3.5355339059328195 0.62831853071801369 3.1478202812511471 -3.1478202812511471 1.2566370068591419 2.3723834259365431 -2.3723834259365431 1.7988274783398068 1.2775986014269276 -1.2775986014269276 2.1687580291315651 1.1719514247943195e-12 -1.1719514247943195e-12 2.3005529012372383 -1.2775986014289811 1.2775986014289811 2.1687580291316819 -2.3723834259351833 2.3723834259351833 1.7988274783396521 -3.1478202812517777 3.1478202812517777 1.256637006859245 -3.5355339059326556 3.5355339059326556 0.62831853071798205 -3.5355339059327386 3.5355339059327386 -2.2204460492503131e-16 + 0 11 3.1415926535897931 11 +7 0 0 10 11 2 75 15.5 0 74.999999999999105 15.49999999999994 1.4137166941154202 75.000000000003425 15.993478879707238 2.8274332654334842 74.999999999990621 16.98044886550209 4.0473618262637086 75.000000000018389 18.373882457535071 4.8797055655472787 74.999999999974861 19.999999999996184 5.1762440277824107 75.00000000002386 21.626117542471153 4.879705565547396 74.999999999984084 23.019551134494474 4.047361826263554 75.000000000007219 24.006521120294067 2.8274332654335823 74.999999999998124 24.499999999999748 1.4137166941153954 75.000000000000014 24.5 1.5086264655892687e-15 + 0 11 3.1415926535897931 11 +1 3.5355339059327378 -3.5355339059327378 0 -0.70710678118654757 0.70710678118654757 0 +7 0 0 10 11 2 2.8284271247461912 -2.8284271247461912 4.4408920985006262e-16 2.8284271247462276 -2.8284271247462276 -0.50265482457439326 2.5182562250010312 -2.5182562250010312 -1.0053096054873778 1.8979067407489889 -1.8979067407489889 -1.4390619826717084 1.0220788811419279 -1.0220788811419279 -1.7350064233054643 4.6762593797211755e-13 -4.6762593797211755e-13 -1.8404423209895382 -1.0220788811427488 1.0220788811427488 -1.73500642330558 -1.8979067407484411 1.8979067407484411 -1.4390619826715594 -2.5182562250012874 2.5182562250012874 -1.0053096054874726 -2.8284271247461601 2.8284271247461601 -0.50265482457436672 -2.8284271247461903 2.8284271247461903 2.2204460492503131e-16 + 0 11 3.1415926535897931 11 +1 -3.5355339059327378 3.5355339059327378 -2.4492935982947064e-16 0.70710678118654757 -0.70710678118654757 4.89858719658941e-17 +7 1 0 7 8 2 2.8284271247461912 -2.8284271247461912 4.4408920985006262e-16 1 9.0159805468327825 6.4281751612018496 2.0133058846416192e-16 1 17.777778499972118 15.165580394866463 -8.0236115873956118e-16 0.99999999999998979 31.571168515292573 14.409868988290894 5.8731757129539919e-15 1.0000000000000278 37.64839458161984 19.182925960538899 -3.5800583136374853e-15 0.99999999999997424 52.67616934408646 15.539676739546138 1.5172914623676952e-15 1.0000000000000095 63.449895514329839 16.399999999999999 4.4408920985006262e-16 1 75 16.399999999999999 4.4408920985006262e-16 1 + 0 8 1 8 +7 1 0 7 8 2 -2.8284271247461903 2.8284271247461903 2.2204460492503131e-16 1 4.1746945180469197 12.228938087750445 -4.3498515050138725e-16 1 14.587149100985133 22.237911020917949 -1.2111033831702273e-15 0.99999999999998979 28.549479609839526 15.123956971356947 2.3425383791132212e-15 1.0000000000000278 41.490579147983965 31.827861148346255 -1.0269151715707795e-15 0.99999999999997424 51.521030626222753 21.236230289860686 5.1873396212586411e-16 1.0000000000000095 63.449895514329832 23.600000000000001 2.141842990487521e-16 1 75.000000000000014 23.600000000000001 2.1418429904875208e-16 1 + 0 8 1 8 +7 0 0 10 11 2 75 16.399999999999999 4.4408920985006262e-16 74.999999999999105 16.399999999999604 -1.1309733552923305 75.000000000003425 16.79478310376723 -2.2619466123468186 74.999999999990621 17.584359092398095 -3.2378894610108695 75.000000000018389 18.699105966034271 -3.9037644524379904 74.999999999974861 19.999999999989107 -4.1409952222257402 75.00000000002386 21.300894033984143 -3.9037644524380775 74.999999999984084 22.415640907590802 -3.2378894610107412 75.000000000007219 23.205216896237388 -2.261946612346911 74.999999999998124 23.599999999999262 -1.1309733552923047 75.000000000000014 23.600000000000001 2.1418429904875208e-16 + 0 11 3.1415926535897931 11 +7 0 0 10 11 2 2.8284271247461912 -2.8284271247461912 -4.4408920985006262e-16 2.8284271247462276 -2.8284271247462276 0.50265482457439326 2.5182562250010312 -2.5182562250010312 1.0053096054873778 1.8979067407489889 -1.8979067407489889 1.4390619826717084 1.0220788811419279 -1.0220788811419279 1.7350064233054643 4.6762593797211755e-13 -4.6762593797211755e-13 1.8404423209895382 -1.0220788811427488 1.0220788811427488 1.73500642330558 -1.8979067407484411 1.8979067407484411 1.4390619826715594 -2.5182562250012874 2.5182562250012874 1.0053096054874726 -2.8284271247461601 2.8284271247461601 0.50265482457436672 -2.8284271247461903 2.8284271247461903 -2.2204460492503131e-16 + 0 11 3.1415926535897931 11 +7 0 0 10 11 2 75 16.399999999999999 -4.4408920985006262e-16 74.999999999999105 16.399999999999604 1.1309733552923305 75.000000000003425 16.79478310376723 2.2619466123468186 74.999999999990621 17.584359092398095 3.2378894610108695 75.000000000018389 18.699105966034271 3.9037644524379904 74.999999999974861 19.999999999989107 4.1409952222257402 75.00000000002386 21.300894033984143 3.9037644524380775 74.999999999984084 22.415640907590802 3.2378894610107412 75.000000000007219 23.205216896237388 2.261946612346911 74.999999999998124 23.599999999999262 1.1309733552923047 75.000000000000014 23.600000000000001 -2.1418429904875208e-16 + 0 11 3.1415926535897931 11 +1 75 15.5 2.7554552980815448e-16 0 1 -6.1232339957367759e-17 +1 75 24.5 -8.2663658942446333e-16 0 -1 1.8369701987210317e-16 +Polygon3D 0 +PolygonOnTriangulations 0 +Surfaces 8 +9 1 0 0 0 10 7 11 8 2 2 3.5355339059327386 -3.5355339059327386 4.4408920985006262e-16 1 9.6048855423786907 5.6779402750195374 -5.742238377723344e-16 0.99999999999999989 18.214762018199355 14.344823330601708 -3.1843740466902976e-15 1.0000000000000058 31.904943295729403 14.237869646355081 1.2028108957336017e-14 0.99999999999998868 37.172160522651843 17.64988141136174 -8.7773709183773399e-15 1.0000000000000071 52.812746249130484 14.81612372870539 2.3298725788871153e-15 0.99999999999999833 63.447227270624914 15.5 0 1 75 15.5 0 1 +3.5355339059328195 -3.5355339059328195 -0.62831853071801369 1 9.604885542379284 5.6779402750195667 -0.73164124169730604 0.99999999999999989 18.214762018200037 14.344823330601164 -1.0469888149911395 1.0000000000000058 31.904943295730241 14.237869646359984 -0.39948502431303995 0.99999999999998868 37.172160522650039 17.649881411357878 -2.4092611365725189 1.0000000000000071 52.812746249132488 14.816123728706323 -1.1284938924273324 0.99999999999999833 63.447227270625511 15.499999999999938 -1.4137166941154204 1 74.999999999999105 15.49999999999994 -1.4137166941154202 1 +3.1478202812511471 -3.1478202812511471 -1.2566370068591419 1 9.2729214810444986 6.0754899681670214 -1.463282419842884 0.99999999999999989 17.996467481271083 14.829610120007128 -2.0939775390394035 1.0000000000000058 31.697282681850869 14.286806537772526 -0.79897001392370559 0.99999999999998868 37.435707603251764 18.516402695092999 -4.8185220638754691 1.0000000000000071 52.733554746481623 15.206631940884614 -2.2569876868315566 0.99999999999999833 63.447227270622655 15.993478879707236 -2.8274332654334846 1 75.000000000003425 15.993478879707238 -2.8274332654334842 1 +2.3723834259365431 -2.3723834259365431 -1.7988274783398068 1 8.6089851336806884 6.8705992041127821 -2.0946324284719631 0.99999999999999989 17.559872998990649 15.799195709829741 -2.9974482015801436 1.0000000000000058 31.28195630911361 14.384681533173158 -1.1436948041305759 0.99999999999998868 37.962808294048074 20.249466731308765 -6.897528758237212 1.0000000000000071 52.575169779178417 15.987658040456525 -3.2307909501209608 0.99999999999999833 63.447227270628531 16.98044886550209 -4.0473618262637086 1 74.999999999990621 16.98044886550209 -4.0473618262637086 1 +1.2775986014269276 -1.2775986014269276 -2.1687580291315651 1 7.6716200438365361 7.9931580809223801 -2.5253955435015549 0.99999999999999989 16.943475918531011 17.168085494405027 -3.6138762234641644 1.0000000000000058 30.695586178585053 14.522864363617154 -1.3788967086524706 0.99999999999998868 38.706984732566291 22.696258103010518 -8.3160119887771682 1.0000000000000071 52.351557169731038 17.090333926265838 -3.8952061261517525 0.99999999999999833 63.447227270621916 18.373882457535071 -4.8797055655472787 1 75.000000000018389 18.373882457535071 -4.8797055655472787 1 +1.1719514247943195e-12 -1.1719514247943195e-12 -2.3005529012372383 1 6.5777280744114703 9.3031686135167266 -2.6788631863653043 0.99999999999999989 16.224149133738432 18.76556075628185 -3.8334905595379762 1.0000000000000058 30.011300424905656 14.684121797300168 -1.462691909845385 0.99999999999998868 39.575428243818408 25.551629463869848 -8.8213739156197359 1.0000000000000071 52.09060437734513 18.377141286086164 -4.1319168086379028 0.99999999999999833 63.447227270625667 19.999999999996184 -5.1762440277824107 1 74.999999999974861 19.999999999996184 -5.1762440277824107 1 +-1.2775986014289811 1.2775986014289811 -2.1687580291316819 1 5.4838361049540145 10.613179146115629 -2.5253955435017352 0.99999999999999989 15.504822348881138 20.363036018212849 -3.613876223464215 1.0000000000000058 29.327014671318086 14.845379230678686 -1.3788967086533002 0.99999999999998868 40.443871755058836 28.407000824990529 -8.3160119887766726 1.0000000000000071 51.829651584897462 19.663948645853612 -3.8952061261520572 0.99999999999999833 63.447227270625788 21.626117542471153 -4.879705565547396 1 75.00000000002386 21.626117542471153 -4.879705565547396 1 +-2.3723834259351833 2.3723834259351833 -1.7988274783396521 1 4.5464710151344043 11.735738022921637 -2.0946324284717539 0.99999999999999989 14.888425268470534 21.73192580274673 -2.9974482015801169 1.0000000000000058 28.740644540721632 14.983562061355201 -1.1436948041293928 0.99999999999998868 41.188048193587157 30.853792196494638 -6.8975287582379137 1.0000000000000071 51.606038975498372 20.766624531703982 -3.2307909501205487 0.99999999999999833 63.447227270623706 23.019551134494478 -4.047361826263554 1 74.999999999984084 23.019551134494474 -4.047361826263554 1 +-3.1478202812517777 3.1478202812517777 -1.256637006859245 1 3.8825346677568429 12.530847258869537 -1.4632824198430057 0.99999999999999989 14.451830786163059 22.701511392593083 -2.093977539039428 1.0000000000000058 28.32531816801977 15.081437056623322 -0.79897001392448364 0.99999999999998868 41.715148884378252 32.586856232821489 -4.8185220638750348 1.0000000000000071 51.447654008166793 21.547650631251887 -2.2569876868317986 0.99999999999999833 63.447227270625731 24.006521120294064 -2.8274332654335819 1 75.000000000007219 24.006521120294067 -2.8274332654335823 1 +-3.5355339059326556 3.5355339059326556 -0.62831853071798205 1 3.5505706064273257 12.928396952016087 -0.73164124169727363 0.99999999999999989 14.233536249244064 23.186298181990281 -1.0469888149911422 1.0000000000000058 28.117657554128364 15.130373948086152 -0.39948502431278238 0.99999999999998868 41.978695964980815 33.453377516515026 -2.4092611365726784 1.0000000000000071 51.368462505527397 21.938158843439282 -1.1284938924272563 0.99999999999999833 63.447227270624651 24.499999999999744 -1.4137166941153956 1 74.999999999998124 24.499999999999748 -1.4137166941153954 1 +-3.5355339059327386 3.5355339059327386 2.2204460492503131e-16 1 3.5505706064268643 12.92839695201633 -1.5975347728255742e-15 0.99999999999999989 14.233536249242547 23.186298181990903 -5.559004606855246e-15 1.0000000000000058 28.117657554132329 15.130373948082415 1.4762487599297348e-14 0.99999999999998868 41.978695964977959 33.453377516518131 -1.3515968997086305e-14 1.0000000000000071 51.368462505527539 21.938158843438853 1.6901778625232096e-15 0.99999999999999833 63.447227270624914 24.500000000000004 -1.5086264655892687e-15 1 75.000000000000014 24.5 -1.5086264655892687e-15 1 + +0 11 +3.1415926535897931 11 + +0 8 +1 8 + +9 1 0 0 0 10 7 11 8 2 2 3.5355339059327386 -3.5355339059327386 -4.4408920985006262e-16 1 9.6048855423786907 5.6779402750195374 5.742238377723344e-16 0.99999999999999989 18.214762018199355 14.344823330601708 3.1843740466902976e-15 1.0000000000000058 31.904943295729403 14.237869646355081 -1.2028108957336017e-14 0.99999999999998868 37.172160522651843 17.64988141136174 8.7773709183773399e-15 1.0000000000000071 52.812746249130484 14.81612372870539 -2.3298725788871153e-15 0.99999999999999833 63.447227270624914 15.5 0 1 75 15.5 0 1 +3.5355339059328195 -3.5355339059328195 0.62831853071801369 1 9.604885542379284 5.6779402750195667 0.73164124169730604 0.99999999999999989 18.214762018200037 14.344823330601164 1.0469888149911395 1.0000000000000058 31.904943295730241 14.237869646359984 0.39948502431303995 0.99999999999998868 37.172160522650039 17.649881411357878 2.4092611365725189 1.0000000000000071 52.812746249132488 14.816123728706323 1.1284938924273324 0.99999999999999833 63.447227270625511 15.499999999999938 1.4137166941154204 1 74.999999999999105 15.49999999999994 1.4137166941154202 1 +3.1478202812511471 -3.1478202812511471 1.2566370068591419 1 9.2729214810444986 6.0754899681670214 1.463282419842884 0.99999999999999989 17.996467481271083 14.829610120007128 2.0939775390394035 1.0000000000000058 31.697282681850869 14.286806537772526 0.79897001392370559 0.99999999999998868 37.435707603251764 18.516402695092999 4.8185220638754691 1.0000000000000071 52.733554746481623 15.206631940884614 2.2569876868315566 0.99999999999999833 63.447227270622655 15.993478879707236 2.8274332654334846 1 75.000000000003425 15.993478879707238 2.8274332654334842 1 +2.3723834259365431 -2.3723834259365431 1.7988274783398068 1 8.6089851336806884 6.8705992041127821 2.0946324284719631 0.99999999999999989 17.559872998990649 15.799195709829741 2.9974482015801436 1.0000000000000058 31.28195630911361 14.384681533173158 1.1436948041305759 0.99999999999998868 37.962808294048074 20.249466731308765 6.897528758237212 1.0000000000000071 52.575169779178417 15.987658040456525 3.2307909501209608 0.99999999999999833 63.447227270628531 16.98044886550209 4.0473618262637086 1 74.999999999990621 16.98044886550209 4.0473618262637086 1 +1.2775986014269276 -1.2775986014269276 2.1687580291315651 1 7.6716200438365361 7.9931580809223801 2.5253955435015549 0.99999999999999989 16.943475918531011 17.168085494405027 3.6138762234641644 1.0000000000000058 30.695586178585053 14.522864363617154 1.3788967086524706 0.99999999999998868 38.706984732566291 22.696258103010518 8.3160119887771682 1.0000000000000071 52.351557169731038 17.090333926265838 3.8952061261517525 0.99999999999999833 63.447227270621916 18.373882457535071 4.8797055655472787 1 75.000000000018389 18.373882457535071 4.8797055655472787 1 +1.1719514247943195e-12 -1.1719514247943195e-12 2.3005529012372383 1 6.5777280744114703 9.3031686135167266 2.6788631863653043 0.99999999999999989 16.224149133738432 18.76556075628185 3.8334905595379762 1.0000000000000058 30.011300424905656 14.684121797300168 1.462691909845385 0.99999999999998868 39.575428243818408 25.551629463869848 8.8213739156197359 1.0000000000000071 52.09060437734513 18.377141286086164 4.1319168086379028 0.99999999999999833 63.447227270625667 19.999999999996184 5.1762440277824107 1 74.999999999974861 19.999999999996184 5.1762440277824107 1 +-1.2775986014289811 1.2775986014289811 2.1687580291316819 1 5.4838361049540145 10.613179146115629 2.5253955435017352 0.99999999999999989 15.504822348881138 20.363036018212849 3.613876223464215 1.0000000000000058 29.327014671318086 14.845379230678686 1.3788967086533002 0.99999999999998868 40.443871755058836 28.407000824990529 8.3160119887766726 1.0000000000000071 51.829651584897462 19.663948645853612 3.8952061261520572 0.99999999999999833 63.447227270625788 21.626117542471153 4.879705565547396 1 75.00000000002386 21.626117542471153 4.879705565547396 1 +-2.3723834259351833 2.3723834259351833 1.7988274783396521 1 4.5464710151344043 11.735738022921637 2.0946324284717539 0.99999999999999989 14.888425268470534 21.73192580274673 2.9974482015801169 1.0000000000000058 28.740644540721632 14.983562061355201 1.1436948041293928 0.99999999999998868 41.188048193587157 30.853792196494638 6.8975287582379137 1.0000000000000071 51.606038975498372 20.766624531703982 3.2307909501205487 0.99999999999999833 63.447227270623706 23.019551134494478 4.047361826263554 1 74.999999999984084 23.019551134494474 4.047361826263554 1 +-3.1478202812517777 3.1478202812517777 1.256637006859245 1 3.8825346677568429 12.530847258869537 1.4632824198430057 0.99999999999999989 14.451830786163059 22.701511392593083 2.093977539039428 1.0000000000000058 28.32531816801977 15.081437056623322 0.79897001392448364 0.99999999999998868 41.715148884378252 32.586856232821489 4.8185220638750348 1.0000000000000071 51.447654008166793 21.547650631251887 2.2569876868317986 0.99999999999999833 63.447227270625731 24.006521120294064 2.8274332654335819 1 75.000000000007219 24.006521120294067 2.8274332654335823 1 +-3.5355339059326556 3.5355339059326556 0.62831853071798205 1 3.5505706064273257 12.928396952016087 0.73164124169727363 0.99999999999999989 14.233536249244064 23.186298181990281 1.0469888149911422 1.0000000000000058 28.117657554128364 15.130373948086152 0.39948502431278238 0.99999999999998868 41.978695964980815 33.453377516515026 2.4092611365726784 1.0000000000000071 51.368462505527397 21.938158843439282 1.1284938924272563 0.99999999999999833 63.447227270624651 24.499999999999744 1.4137166941153956 1 74.999999999998124 24.499999999999748 1.4137166941153954 1 +-3.5355339059327386 3.5355339059327386 -2.2204460492503131e-16 1 3.5505706064268643 12.92839695201633 1.5975347728255742e-15 0.99999999999999989 14.233536249242547 23.186298181990903 5.559004606855246e-15 1.0000000000000058 28.117657554132329 15.130373948082415 -1.4762487599297348e-14 0.99999999999998868 41.978695964977959 33.453377516518131 1.3515968997086305e-14 1.0000000000000071 51.368462505527539 21.938158843438853 -1.6901778625232096e-15 0.99999999999999833 63.447227270624914 24.500000000000004 1.5086264655892687e-15 1 75.000000000000014 24.5 1.5086264655892687e-15 1 + +0 11 +3.1415926535897931 11 + +0 8 +1 8 + +1 3.5355339059327378 -3.5355339059327378 0 -0.70710678118654757 -0.70710678118654757 0 -0.70710678118654757 0.70710678118654757 0 -0 0 -1 +1 75 15.5 2.7554552980815448e-16 -1 0 0 0 0 -1 -0 -1 -0 +1 3.5355339059327378 -3.5355339059327378 0 -0.70710678118654757 -0.70710678118654757 -0 -0.70710678118654757 0.70710678118654757 -0 -0 -0 1 +1 75 15.5 -2.7554552980815448e-16 -1 -0 -0 -0 0 1 -0 -1 0 +9 1 0 0 0 10 7 11 8 2 2 2.8284271247461912 -2.8284271247461912 4.4408920985006262e-16 1 9.0159805468327825 6.4281751612018496 2.0133058846416192e-16 1 17.777778499972118 15.165580394866463 -8.0236115873956118e-16 0.99999999999998979 31.571168515292573 14.409868988290894 5.8731757129539919e-15 1.0000000000000278 37.64839458161984 19.182925960538899 -3.5800583136374853e-15 0.99999999999997424 52.67616934408646 15.539676739546138 1.5172914623676952e-15 1.0000000000000095 63.449895514329839 16.399999999999999 4.4408920985006262e-16 1 75 16.399999999999999 4.4408920985006262e-16 1 +2.8284271247462276 -2.8284271247462276 -0.50265482457439326 1 9.0159805468328216 6.4281751612018621 -0.58553428033384047 1 17.777778499971209 15.165580394865655 -0.83702922341251151 0.99999999999998979 31.571168515297988 14.409868988295917 -0.32030380321158969 1.0000000000000278 37.648394581614838 19.182925960534281 -1.9273256235209786 0.99999999999997424 52.676169344089331 15.539676739546854 -0.90272885493142008 1.0000000000000095 63.449895514330436 16.399999999999601 -1.1309733552923305 1 74.999999999999105 16.399999999999604 -1.1309733552923305 1 +2.5182562250010312 -2.5182562250010312 -1.0053096054873778 1 8.7505280572964637 6.7462367156950842 -1.1710685098071594 1 17.602833142044837 15.553363260898562 -1.674058374119779 0.99999999999998979 31.405486331285697 14.449023136926375 -0.64060757859783735 1.0000000000000278 37.85906535224138 19.876260232829232 -3.8546510796345723 0.99999999999997424 52.612831948476334 15.852024391121061 -1.8054576314498902 1.0000000000000095 63.449895514327579 16.79478310376723 -2.2619466123468186 1 75.000000000003425 16.79478310376723 -2.2619466123468186 1 +1.8979067407489889 -1.8979067407489889 -1.4390619826717084 1 8.2196165014000666 7.3823677049416423 -1.676339470317372 1 17.252938091745996 16.328938600612986 -2.3963500893836529 0.99999999999998979 31.074117858447767 14.527332404383019 -0.91700507699040601 1.0000000000000278 38.280412112952412 21.262945955287442 -5.5177845659494009 0.99999999999997424 52.486155588068115 16.476727432979835 -2.5844430656618647 1.0000000000000095 63.449895514333448 17.584359092398095 -3.2378894610108699 1 74.999999999990621 17.584359092398095 -3.2378894610108695 1 +1.0220788811419279 -1.0220788811419279 -1.7350064233054643 1 7.4700597701643572 8.2804763628600888 -2.021080247871553 1 16.758945849069651 17.423918941557226 -2.8891617231474176 0.99999999999998979 30.606281988837953 14.637891757957481 -1.1055880274247882 1.0000000000000278 38.875282006554237 23.220710117598962 -6.6525221148448219 0.99999999999997424 52.307310133244791 17.358701774719187 -3.1159361956481719 1.0000000000000095 63.44989551432684 18.699105966034271 -3.9037644524379909 1 75.000000000018389 18.699105966034271 -3.9037644524379904 1 +4.6762593797211755e-13 -4.6762593797211755e-13 -1.8404423209895382 1 6.5953375324381369 9.3285566244738707 -2.1439007788875823 1 16.182463800463946 18.701745707871858 -3.064735343935824 0.99999999999998979 30.060324062636926 14.76691297991343 -1.1727743297930939 1.0000000000000278 39.569486864737151 25.505393554351894 -7.0567941864600172 0.99999999999997424 52.098599985188997 18.387953514714269 -3.3052908432768442 1.0000000000000095 63.449895514330578 19.999999999989107 -4.1409952222257402 1 74.999999999974861 19.999999999989107 -4.1409952222257402 1 +-1.0220788811427488 1.0220788811427488 -1.73500642330558 1 5.7206152947181215 10.376636886096147 -2.0210802478716676 1 15.605981751912061 19.97957247426147 -2.8891617231474713 0.99999999999998979 29.514366136174079 14.895934201537747 -1.1055880274253354 1.0000000000000278 40.26369172315826 27.790076991440177 -6.6525221148445537 0.99999999999997424 51.889889837005235 19.417205254669291 -3.1159361956483513 1.0000000000000095 63.449895514330713 21.300894033984143 -3.9037644524380779 1 75.00000000002386 21.300894033984143 -3.9037644524380775 1 +-1.8979067407484411 1.8979067407484411 -1.4390619826715594 1 4.9710585634781923 11.274745544008159 -1.6763394703172221 1 15.111989509197203 21.074552815149307 -2.3963500893835668 0.99999999999998979 29.04653026675712 15.006493555362955 -0.91700507698972389 1.0000000000000278 40.858561616586826 29.747841153500076 -5.5177845659496922 0.99999999999997424 51.711044382278359 20.299179596439458 -2.584443065661632 1.0000000000000095 63.449895514328631 22.415640907590799 -3.2378894610107416 1 74.999999999984084 22.415640907590802 -3.2378894610107412 1 +-2.5182562250012874 2.5182562250012874 -1.0053096054874726 1 4.4401470075837057 11.910876533258277 -1.1710685098072586 1 14.762094458918183 21.850128154895057 -1.6740583741198436 0.99999999999998979 28.715161793814971 15.084802822679471 -0.6406075785982992 1.0000000000000278 41.279908377390043 31.134526876097311 -3.8546510796343862 0.99999999999997424 51.584368021816545 20.92388263828046 -1.8054576314500514 1.0000000000000095 63.449895514330656 23.205216896237385 -2.261946612346911 1 75.000000000007219 23.205216896237388 -2.261946612346911 1 +-2.8284271247461601 2.8284271247461601 -0.50265482457436672 1 4.1746945180467883 12.228938087750157 -0.58553428033381372 1 14.587149100984806 22.237911020916648 -0.83702922341252328 0.99999999999998979 28.549479609841558 15.123956971361764 -0.3203038032113672 1.0000000000000278 41.490579147982118 31.82786114834126 -1.9273256235211105 0.99999999999997424 51.521030626224039 21.236230289861044 -0.90272885493134847 1.0000000000000095 63.449895514329569 23.599999999999262 -1.1309733552923047 1 74.999999999998124 23.599999999999262 -1.1309733552923047 1 +-2.8284271247461903 2.8284271247461903 2.2204460492503131e-16 1 4.1746945180469197 12.228938087750445 -4.3498515050138725e-16 1 14.587149100985133 22.237911020917949 -1.2111033831702273e-15 0.99999999999998979 28.549479609839526 15.123956971356947 2.3425383791132212e-15 1.0000000000000278 41.490579147983965 31.827861148346255 -1.0269151715707795e-15 0.99999999999997424 51.521030626222753 21.236230289860686 5.1873396212586411e-16 1.0000000000000095 63.449895514329832 23.600000000000001 2.141842990487521e-16 1 75.000000000000014 23.600000000000001 2.1418429904875208e-16 1 + +0 11 +3.1415926535897931 11 + +0 8 +1 8 + +9 1 0 0 0 10 7 11 8 2 2 2.8284271247461912 -2.8284271247461912 -4.4408920985006262e-16 1 9.0159805468327825 6.4281751612018496 -2.0133058846416192e-16 1 17.777778499972118 15.165580394866463 8.0236115873956118e-16 0.99999999999998979 31.571168515292573 14.409868988290894 -5.8731757129539919e-15 1.0000000000000278 37.64839458161984 19.182925960538899 3.5800583136374853e-15 0.99999999999997424 52.67616934408646 15.539676739546138 -1.5172914623676952e-15 1.0000000000000095 63.449895514329839 16.399999999999999 -4.4408920985006262e-16 1 75 16.399999999999999 -4.4408920985006262e-16 1 +2.8284271247462276 -2.8284271247462276 0.50265482457439326 1 9.0159805468328216 6.4281751612018621 0.58553428033384047 1 17.777778499971209 15.165580394865655 0.83702922341251151 0.99999999999998979 31.571168515297988 14.409868988295917 0.32030380321158969 1.0000000000000278 37.648394581614838 19.182925960534281 1.9273256235209786 0.99999999999997424 52.676169344089331 15.539676739546854 0.90272885493142008 1.0000000000000095 63.449895514330436 16.399999999999601 1.1309733552923305 1 74.999999999999105 16.399999999999604 1.1309733552923305 1 +2.5182562250010312 -2.5182562250010312 1.0053096054873778 1 8.7505280572964637 6.7462367156950842 1.1710685098071594 1 17.602833142044837 15.553363260898562 1.674058374119779 0.99999999999998979 31.405486331285697 14.449023136926375 0.64060757859783735 1.0000000000000278 37.85906535224138 19.876260232829232 3.8546510796345723 0.99999999999997424 52.612831948476334 15.852024391121061 1.8054576314498902 1.0000000000000095 63.449895514327579 16.79478310376723 2.2619466123468186 1 75.000000000003425 16.79478310376723 2.2619466123468186 1 +1.8979067407489889 -1.8979067407489889 1.4390619826717084 1 8.2196165014000666 7.3823677049416423 1.676339470317372 1 17.252938091745996 16.328938600612986 2.3963500893836529 0.99999999999998979 31.074117858447767 14.527332404383019 0.91700507699040601 1.0000000000000278 38.280412112952412 21.262945955287442 5.5177845659494009 0.99999999999997424 52.486155588068115 16.476727432979835 2.5844430656618647 1.0000000000000095 63.449895514333448 17.584359092398095 3.2378894610108699 1 74.999999999990621 17.584359092398095 3.2378894610108695 1 +1.0220788811419279 -1.0220788811419279 1.7350064233054643 1 7.4700597701643572 8.2804763628600888 2.021080247871553 1 16.758945849069651 17.423918941557226 2.8891617231474176 0.99999999999998979 30.606281988837953 14.637891757957481 1.1055880274247882 1.0000000000000278 38.875282006554237 23.220710117598962 6.6525221148448219 0.99999999999997424 52.307310133244791 17.358701774719187 3.1159361956481719 1.0000000000000095 63.44989551432684 18.699105966034271 3.9037644524379909 1 75.000000000018389 18.699105966034271 3.9037644524379904 1 +4.6762593797211755e-13 -4.6762593797211755e-13 1.8404423209895382 1 6.5953375324381369 9.3285566244738707 2.1439007788875823 1 16.182463800463946 18.701745707871858 3.064735343935824 0.99999999999998979 30.060324062636926 14.76691297991343 1.1727743297930939 1.0000000000000278 39.569486864737151 25.505393554351894 7.0567941864600172 0.99999999999997424 52.098599985188997 18.387953514714269 3.3052908432768442 1.0000000000000095 63.449895514330578 19.999999999989107 4.1409952222257402 1 74.999999999974861 19.999999999989107 4.1409952222257402 1 +-1.0220788811427488 1.0220788811427488 1.73500642330558 1 5.7206152947181215 10.376636886096147 2.0210802478716676 1 15.605981751912061 19.97957247426147 2.8891617231474713 0.99999999999998979 29.514366136174079 14.895934201537747 1.1055880274253354 1.0000000000000278 40.26369172315826 27.790076991440177 6.6525221148445537 0.99999999999997424 51.889889837005235 19.417205254669291 3.1159361956483513 1.0000000000000095 63.449895514330713 21.300894033984143 3.9037644524380779 1 75.00000000002386 21.300894033984143 3.9037644524380775 1 +-1.8979067407484411 1.8979067407484411 1.4390619826715594 1 4.9710585634781923 11.274745544008159 1.6763394703172221 1 15.111989509197203 21.074552815149307 2.3963500893835668 0.99999999999998979 29.04653026675712 15.006493555362955 0.91700507698972389 1.0000000000000278 40.858561616586826 29.747841153500076 5.5177845659496922 0.99999999999997424 51.711044382278359 20.299179596439458 2.584443065661632 1.0000000000000095 63.449895514328631 22.415640907590799 3.2378894610107416 1 74.999999999984084 22.415640907590802 3.2378894610107412 1 +-2.5182562250012874 2.5182562250012874 1.0053096054874726 1 4.4401470075837057 11.910876533258277 1.1710685098072586 1 14.762094458918183 21.850128154895057 1.6740583741198436 0.99999999999998979 28.715161793814971 15.084802822679471 0.6406075785982992 1.0000000000000278 41.279908377390043 31.134526876097311 3.8546510796343862 0.99999999999997424 51.584368021816545 20.92388263828046 1.8054576314500514 1.0000000000000095 63.449895514330656 23.205216896237385 2.261946612346911 1 75.000000000007219 23.205216896237388 2.261946612346911 1 +-2.8284271247461601 2.8284271247461601 0.50265482457436672 1 4.1746945180467883 12.228938087750157 0.58553428033381372 1 14.587149100984806 22.237911020916648 0.83702922341252328 0.99999999999998979 28.549479609841558 15.123956971361764 0.3203038032113672 1.0000000000000278 41.490579147982118 31.82786114834126 1.9273256235211105 0.99999999999997424 51.521030626224039 21.236230289861044 0.90272885493134847 1.0000000000000095 63.449895514329569 23.599999999999262 1.1309733552923047 1 74.999999999998124 23.599999999999262 1.1309733552923047 1 +-2.8284271247461903 2.8284271247461903 -2.2204460492503131e-16 1 4.1746945180469197 12.228938087750445 4.3498515050138725e-16 1 14.587149100985133 22.237911020917949 1.2111033831702273e-15 0.99999999999998979 28.549479609839526 15.123956971356947 -2.3425383791132212e-15 1.0000000000000278 41.490579147983965 31.827861148346255 1.0269151715707795e-15 0.99999999999997424 51.521030626222753 21.236230289860686 -5.1873396212586411e-16 1.0000000000000095 63.449895514329832 23.600000000000001 -2.141842990487521e-16 1 75.000000000000014 23.600000000000001 -2.1418429904875208e-16 1 + +0 11 +3.1415926535897931 11 + +0 8 +1 8 + +Triangulations 0 + +TShapes 42 +Ve +1.00000011584738e-07 +3.53553390593274 -3.53553390593274 0 +0 0 + +0101101 +* +Ve +2.00001022062862e-07 +75 15.5 -6.88863824520386e-17 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 1 0 0 1 +2 1 1 0 0 1 +2 2 2 0 0 1 +0 + +0101000 ++42 0 -41 0 * +Ve +2.00001005003195e-07 +-3.53553390593273 3.53553390593274 -7.40818758532816e-16 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 2 0 0 3.14159265358979 +2 3 1 0 0 3.14159265358979 +2 4 3 0 0 3.14159265358979 +0 + +0101000 ++42 0 -39 0 * +Ve +2.00001041588069e-07 +75 24.5 2.06659147356116e-16 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 3 0 0 1 +2 5 1 0 0 1 +2 6 2 0 0 1 +0 + +0101000 ++39 0 -37 0 * +Ed + 1e-07 1 1 0 +1 4 0 0 3.14159265358979 +2 7 1 0 0 3.14159265358979 +2 8 4 0 0 3.14159265358979 +0 + +0101000 ++41 0 -37 0 * +Wi + +0101000 +-40 0 +38 0 +36 0 -35 0 * +Fa +1 1e-07 1 0 + +0101000 ++34 0 * +Ed + 1e-07 1 1 0 +1 5 0 0 3.14159265358979 +2 3 2 0 0 3.14159265358979 +2 9 5 0 0 3.14159265358979 +0 + +0101000 ++42 0 -39 0 * +Ed + 1e-07 1 1 0 +1 6 0 0 3.14159265358979 +2 7 2 0 0 3.14159265358979 +2 10 6 0 0 3.14159265358979 +0 + +0101000 ++41 0 -37 0 * +Wi + +0101000 +-40 0 +32 0 +36 0 -31 0 * +Fa +1 1e-07 2 0 + +0101000 ++30 0 * +Ve +1.00000003092948e-07 +2.82842712474619 -2.82842712474619 0 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 7 0 0 1 +2 11 3 0 0 1 +2 12 5 0 0 1 +0 + +0101000 ++42 0 -28 0 * +Ve +2.000010012582e-07 +-2.82842712474619 2.82842712474619 9.68596121552874e-16 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 8 0 0 3.14159265358979 +2 13 7 0 0 3.14159265358979 +2 14 3 0 0 3.14159265358979 +0 + +0101000 ++28 0 -26 0 * +Ed + 1e-07 1 1 0 +1 9 0 0 1 +2 15 3 0 0 1 +2 16 5 0 0 1 +0 + +0101000 ++39 0 -26 0 * +Wi + +0101000 ++38 0 -27 0 -25 0 +24 0 * +Fa +0 1e-07 3 0 + +0101000 +-23 0 * +Ve +2.00001030198519e-07 +75 16.4 -5.51091059616309e-17 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 10 0 0 1 +2 17 7 0 0 1 +2 18 8 0 0 1 +0 + +0101000 ++28 0 -21 0 * +Ve +2.00001064344293e-07 +75 23.5999999999999 1.65327317884893e-16 +0 0 + +0101101 +* +Ed + 1e-07 1 1 0 +1 11 0 0 1 +2 19 7 0 0 1 +2 20 8 0 0 1 +0 + +0101000 ++26 0 -19 0 * +Ed + 1e-07 1 1 0 +1 12 0 0 3.14159265358979 +2 21 7 0 0 3.14159265358979 +2 22 4 0 0 3.14159265358979 +0 + +0101000 ++21 0 -19 0 * +Wi + +0101000 +-20 0 +25 0 +18 0 -17 0 * +Fa +1 1e-07 7 0 + +0101000 ++16 0 * +Ed + 1e-07 1 1 0 +1 13 0 0 3.14159265358979 +2 13 8 0 0 3.14159265358979 +2 23 5 0 0 3.14159265358979 +0 + +0101000 ++28 0 -26 0 * +Ed + 1e-07 1 1 0 +1 14 0 0 3.14159265358979 +2 21 8 0 0 3.14159265358979 +2 24 6 0 0 3.14159265358979 +0 + +0101000 ++21 0 -19 0 * +Wi + +0101000 +-20 0 +14 0 +18 0 -13 0 * +Fa +1 1e-07 8 0 + +0101000 ++12 0 * +Wi + +0101000 ++32 0 -27 0 -14 0 +24 0 * +Fa +0 1e-07 5 0 + +0101000 +-10 0 * +Ed + 1e-07 1 1 0 +1 15 0 0 0.899999999999999 +2 25 4 0 0 0.899999999999999 +2 26 6 0 0 0.899999999999999 +0 + +0101000 ++41 0 -21 0 * +Ed + 1e-07 1 1 0 +1 16 0 0 0.899999999999999 +2 27 4 0 0 0.899999999999999 +2 28 6 0 0 0.899999999999999 +0 + +0101000 ++37 0 -19 0 * +Wi + +0101000 ++35 0 -8 0 -17 0 +7 0 * +Fa +0 1e-07 4 0 + +0101000 +-6 0 * +Wi + +0101000 ++31 0 -8 0 -13 0 +7 0 * +Fa +0 1e-07 6 0 + +0101000 +-4 0 * +Sh + +0101100 ++33 0 -29 0 +22 0 -15 0 +11 0 -9 0 -5 0 +3 0 * +So + +1100000 ++2 0 * + ++1 0 diff --git a/src/TEST_PY/test_unit/tuyau_v5.py b/src/TEST_PY/test_unit/tuyau_v5.py new file mode 100644 index 0000000..c293ef1 --- /dev/null +++ b/src/TEST_PY/test_unit/tuyau_v5.py @@ -0,0 +1,260 @@ +# -*- coding: latin-1 -*- +# Copyright (C) 2009-2012 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# Francis KLOSS : 2012 : CEA-Saclay, DEN, DM2S, SFME, LGLS, F-91191 Gif-sur-Yvette, France +# ======================================================================================== + +import geompy +import hexablock + +# Charger la geometrie +# ==================== + +nom = "tuyau" + +geometrie = geompy.ImportBREP(nom+".brep") + +# Selectionner des sous-parties de la geometrie +# --------------------------------------------- + +aretes = geompy.SubShapeAllSortedCentres (geometrie, geompy.ShapeType["EDGE"]) +edge_id = geompy.SubShapeAllSortedCentresIDs (geometrie, geompy.ShapeType["EDGE"]) +faces = geompy.SubShapeAllSortedCentres (geometrie, geompy.ShapeType["FACE"]) +face_id = geompy.SubShapeAllSortedCentresIDs (geometrie, geompy.ShapeType["FACE"]) + +subid_arc_int_bas = 30 +subid_arc_int_haut = 34 +subid_arc_ext_bas = 12 +subid_arc_ext_haut = 16 + +arc_int_bas = aretes[12] +arc_int_haut = aretes[13] +arc_ext_bas = aretes[11] +arc_ext_haut = aretes[14] + +subid_ell_int_bas = 21 +subid_ell_int_haut = 33 +subid_ell_ext_bas = 8 +subid_ell_ext_haut = 15 + +ell_int_bas = aretes[2] +ell_int_haut = aretes[3] +ell_ext_bas = aretes[1] +ell_ext_haut = aretes[4] + +subid_gen_int_avan = 26 +subid_gen_int_arri = 28 +subid_gen_ext_avan = 5 +subid_gen_ext_arri = 10 + +gen_int_avan = aretes[8] +gen_int_arri = aretes[7] +gen_ext_avan = aretes[9] +gen_ext_arri = aretes[6] + +subid_face_int_bas = 24 +subid_face_int_haut = 31 +subid_face_ext_bas = 3 +subid_face_ext_haut = 13 + +face_int_bas = faces[4] +face_int_haut = faces[5] +face_ext_bas = faces[2] +face_ext_haut = faces[3] + +# Construire le modele de bloc +# ============================ + +doc = hexablock.addDocument(nom) + +# Definir le tuyau +# ---------------- + +base = doc.addVertex(0, 0, 0) + +direction = doc.addVector(1, 0, 0) + +tuyau = doc.addPipe(base, direction, 1, 2, 10) + +# Construire le modele de blocs du tuyau +# -------------------------------------- + +depart = doc.addVector(0, 1, 0) + +modele = doc.makePipe(tuyau, depart, 1, 4, 1) + +# Associer le modele de bloc a la geometrie +# ========================================= + +sh_tuyau = doc.addShape(geometrie,nom) +doc.clearAssociation() + +# Associer les cercles +# -------------------- + +cer_int_dep = modele.getVertexIJK(0, 0, 1) +cer_ext_dep = modele.getVertexIJK(1, 0, 1) + +cer_int = [] +cer_ext = [] +for j in xrange(4): + a = modele.getEdgeJ(0, j, 1) + cer_int.append(a) + + a = modele.getEdgeJ(1, j, 1) + cer_ext.append(a) + +doc.associateClosedLine(cer_int_dep, cer_int, [sh_tuyau], [34,30], 1, True) +doc.associateClosedLine(cer_ext_dep, cer_ext, [sh_tuyau], [16,12], 1, True) + +# Associer les ellipses +# --------------------- + +ell_int_dep = modele.getVertexIJK(0, 0, 0) +ell_ext_dep = modele.getVertexIJK(1, 0, 0) + +ell_int = [] +ell_ext = [] +for j in xrange(4): + a = modele.getEdgeJ(0, j, 0) + ell_int.append(a) + + a = modele.getEdgeJ(1, j, 0) + ell_ext.append(a) + +doc.associateClosedLine(ell_int_dep, ell_int, [sh_tuyau], [33,21], 1, True) +doc.associateClosedLine(ell_ext_dep, ell_ext, [sh_tuyau], [15, 8], 1, True) + +# Associer les generatrices +# ------------------------- + +def generatrice(face): + n = 10 + l = [] + for i in xrange(0, n+1): + v = float(i) / n + s = geompy.MakeVertexOnSurface(face, 0.5, v) + l.append(s) + + return geompy.MakeInterpol(l) + +gen = [] +gen_int_haut = generatrice(face_int_haut) +gen_ext_haut = generatrice(face_ext_haut) +gen_int_bas = generatrice(face_int_bas ) +gen_ext_bas = generatrice(face_ext_bas ) +gen.append(gen_int_haut) +gen.append(gen_ext_haut) +gen.append(gen_int_bas) +gen.append(gen_ext_bas) + +generatrices = geompy.MakeCompound(gen) +sh_gen = doc.addShape(generatrices,"generatrices") + +modele.getEdgeK(0, 0, 0).addAssociation(sh_tuyau, 28, 0, 1) +modele.getEdgeK(1, 0, 0).addAssociation(sh_tuyau, 10, 0, 1) + +modele.getEdgeK(0, 1, 0).addAssociation(sh_gen , 2, 0, 1) +modele.getEdgeK(1, 1, 0).addAssociation(sh_gen , 5, 0, 1) + +modele.getEdgeK(0, 2, 0).addAssociation(sh_tuyau, 26, 0, 1) +modele.getEdgeK(1, 2, 0).addAssociation(sh_tuyau, 5, 0, 1) + +modele.getEdgeK(0, 3, 0).addAssociation(sh_gen , 8, 0, 1) +modele.getEdgeK(1, 3, 0).addAssociation(sh_gen , 11, 0, 1) + +# Associer les faces courbees +# --------------------------- + +modele.getQuadJK(0, 0, 0).addAssociation(sh_tuyau, 31) +modele.getQuadJK(0, 1, 0).addAssociation(sh_tuyau, 31) +modele.getQuadJK(0, 2, 0).addAssociation(sh_tuyau, 24) +modele.getQuadJK(0, 3, 0).addAssociation(sh_tuyau, 24) + +modele.getQuadJK(1, 0, 0).addAssociation(sh_tuyau, 13) +modele.getQuadJK(1, 1, 0).addAssociation(sh_tuyau, 13) +modele.getQuadJK(1, 2, 0).addAssociation(sh_tuyau, 3) +modele.getQuadJK(1, 3, 0).addAssociation(sh_tuyau, 3) + +# Mailler le modele de bloc +# ========================= + +# Definir 3 groupes d'aretes +# -------------------------- + +groupe_cercles = doc.addEdgeGroup("Cercles") +groupe_ellipses = doc.addEdgeGroup("Ellipses") +groupe_generatrices = doc.addEdgeGroup("Generatrices") + +# Definir 4 groupes de faces +# -------------------------- + +groupe_couronne = doc.addQuadGroup("Couronne") +groupe_ovale = doc.addQuadGroup("Ovale") +groupe_interieur = doc.addQuadGroup("Interieur") +groupe_exterieur = doc.addQuadGroup("Exterieur") + +# Constituer les groupes d'aretes +# ------------------------------- + +for i in xrange(2): + for j in xrange(4): + arete = modele.getEdgeJ(i, j, 1) + groupe_cercles.addElement(arete) + + arete = modele.getEdgeJ(i, j, 0) + groupe_ellipses.addElement(arete) + + arete = modele.getEdgeK(i, j, 0) + groupe_generatrices.addElement(arete) + +# Constituer les groupes de faces +# ------------------------------- + +for j in xrange(4): + quad = modele.getQuadIJ(0, j, 1) + groupe_couronne.addElement(quad) + + quad = modele.getQuadIJ(0, j, 0) + groupe_ovale.addElement(quad) + + quad = modele.getQuadJK(0, j, 0) + groupe_interieur.addElement(quad) + + quad = modele.getQuadJK(1, j, 0) + groupe_exterieur.addElement(quad) + +# Mailler le modele de bloc avec ses associations +# ----------------------------------------------- + +########## hexablock.addLaws(doc, 0.7, True) Ne marche pas + +law = doc.addLaw("Uniform", 4) +for j in range(doc.countPropagation()): + propa = doc.getPropagation(j) + propa.setLaw(law) + +doc.save("tuyau_v5") +doc.setName("tuyau_v5") +hexablock.addToStudy(doc) + +blocs = hexablock.mesh(doc) + +muv, mue, muq, muh = hexablock.dump(doc, blocs) -- 2.39.2

      yBl-gD>75;F(|vqZ>!Vs|Gejt=@~w6?Y`hhF4sL3w$2a)s;=Jv}nDO5oK< z-~|^~wzwxUBBFO7j`H)^n8)|yV-Mh1_VxAsS|9#>8InggG&)*=LM>o0$H1GCl9JNW zQbIDufqp$bJ#>~}KL+FRqurB$fS@sdc6Qd##AHTiHHn5@v3p!ck)i$ z%*oCc45l`bkdPQ09M=1y%QP+tx3i0OU87uMnw8O7b#QZYyP3Pn6?4zXNMGs>zUX~T z=w)TCoFe6alouUMpfLkrnWv{`oq2a(r!9IYo-Q>h>G(|Q{+`*eMI^hcqivonuDo#ukUx8LR6 z6~U>gsQ{uVYg46K=nL|=nqJhHE=IR^;a|W?F>p zuB{;#74zHDV*fB($%bb)O6&Dj?V8^Y)B z9;D~wAey|b-S_uRWK3OLU4g1?(G!wgP~hh7F0lQ&rKP2*$y-x1L6NoB3!pkx)zu-_ zSYJ<1L6wxR1c5+bK;%75;>U}85s#AE1y0e;YM4* zD9FXNyE9dM?swj}ZJDpcOA{OzNJmFUO+&MmbNbJ?x&FKEypMx}qpz>uo|lo4k(DJ5 z#}ong;PljIaEX~wcAyXP4B)VjMMPZoOYb!p z=4EDb(!8B(CJd5Y_^sQuR+-4PqQ}(PKP7Uwy`7ny91*TXh#_AvJL^R#P=X`xKem+f z^AjB*O2VTmA@bUe0DS_zpvV31O3&Drk(z>jdWIi_N;rp(4bGJ;GL7TDs=cEh`v2&_ zf5_eRM2k$Z)$_%5LeMF-?y}L+&7AjPyD$UDuy=mwT=SBF`cC~G-v38Y{+lN59#FoK zJPDpg$l6zvMC{womUl1L>fa-oJe~k5_3!*s`%=yP%F|uTLsC<*;^(e}wH&-qgv#$4 z=N|qrk$41Gx%TcjfIr% zJ(N6Hoh0iF#JGXGl-6`KCU5*N`ot6y%*)Dw+MjqOGd41wB@-G%hMGdNO^f6MJJuku zE`Nw;W3!&Lk`%o}V#E|pjp}2vNf!KVlYz)xTmij3m4qFBZ~N&U{?}xvC;nn7xQ=jf zXN&x$j*ce1Y;sl>+}Xjzz#tP+xU#z2i-lHWU^gSaRn}=s=P@I_eP+t+!MX+pU*_fx zm%2@i1!^iQ`_k=8?F&QCv){F#)3{y|6BDP+Ge^~$cVi2_2Wx0(u&aoQiM=Qg=|CbQ zsq0WI$MK87nEGkcM;0aVVu`8U*=RBA`6$|-lvX!n{%%69yw zw!+<(n3p~w)D|Hv2Zl6TG~;jSV1oR!l1ift|HNddMFrET?s{M$y0x)U4IpmRT>4W_e6GcQHrG%G+_#|&8#4xRm=2)O ztE$U&B}HI56mbJH{V$JQ4?LP94a$!z?Trq(vrTq)dKT;y-!4i679!@IgF zD=X_1`JU=W-yMe{JXg&SgrLp|pBQryrF^Nt>E7P=)znH#!>ODv)+XbDJ}|9-IRLK4 zMn)}q&r*Oc?{1c$jb^^2-piNk2M6Q-grbtt)6)Z}#lgYBkGD6$KT*-ZDFQI2zRj)@hTSbQX?2N=0m6Zmb?t2b3;6xonsqDv%MWjt3_IL@l}@)WNP>ch@HJ+* zy-Xk66V}Pc`F&FIneBP}4({;Hr>Uu5^ED=w&iCOtOYNTPt*+k#q~^mOI0HQkgczIu zvlVGI_XOiX986%^orxkzJp0qy9U$$#aB#`%1cs-rfP#4Hcfbrrx}&v2W6ddi1w5Z6 z%M_J6f2ke4_ujC7)<02gQ9{+dSWIzo9tZRA)nDxYfsit?aqVuJ#k&C1=rd`hZT&AX zMqZoTgiUf;#X|8vk*KWcLLKx3Vg432>j^+Qh{kI)+$&={s+{Z Bg$Dot literal 9077 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 Wrg9En$QOJW1jtD%KQEIs@cR!ONxEqO literal 10379 zcmZ`<1z1$kx*b$x010W35EKC^r5VzpK}xzsx@!a^Rk~3Gq*FQ+X&6u%si7OBVd$2A z8}GgE-FM&j&c`rw_MEfl?6d!W{cEj#LR6Gw@NlSbAP@+ioUG&v2n53myojMUKuayt zV;aCtTy<`T(zI>O908^6ct&E!x-w(1674-+Y zyThZAJ*@9h{gr8a3)u9Lkrv!szfe@^##{*-8e|rUTG_6vpA)cOy*iDe9Gvb5K0e6j zVJ&1}n6EPOc~gXGu^_x~=72QvVL>IDe;D=T+jG~?SD!g(kyAeA;U?Cvd6D?(z;YE;Lg#&u6BRZ7`)6ah z=2rc{WuB(>?))9<({#KH31|YpgJCgdrTuh4*>l!_$XpA4c*j(YR&O%Ps}%~WJptyb^ zSj9R4TvjcP-v1V+4yV4QjY-zkMgk8#y~EnTy}ner*j8-%(bA}g{*D4?vE1<-$lXpR z&C1GC9-2~fCXMxrrFie|?prcZ%TaW`h8g$uIaXFxkH4ApG@h6BZH!y};tdL%`7Aa& zG4Nsql~J!ODpy+YDzPl)*F{F2JG^7H-&|D{UsLlG22+=l>*Mt|redqO*EVd?Z!Nd8(RaH`Y)9o4K$toe= zJvmNXTpyhT$&8n-8}8!JH&@;Ya0)#=15Z!ChN{O-M^ zLuUtU`o+T1(=Rz>bOJkHzone7^STxZ(wputpW$FiKp(_+T^^Qt`V%@ha1Zlx8d%3C z>#G=Ycy1&4!QJFMi%U!?su0`g=AR)XA(Ov6n@zTxEK`s#5c~7Hm|gESuP)2c1QX9e zN*;3%hru5qSK+*ZkL-r$y_I%K1!3O%J#W`X6@0IduYN!ldXiGCHHbOu4R@tXUnJ~F zLFdk=!&XE&XEoSA#>7ZKRhda}0y4pE6Y)GS&Bdk{6cnro9l}pJ+2ckf;Jts7gRq@xzy z0?N?-!K~sUL}GRKe5Fw*m;F?+uXKFR%p_C#M=Su}tMI=HOYq^#F(ToZuw=fM-g-_V%7m>#vuh-x# zS43Qp(=wXGPVN_RGN@J+3*}&QSne7vn zg}~;yDe_q@4%F|>;e554xVT*oj%j^^I^Tm26)7qG{IddEV@})sS)o}nE*BT<-d^1o z7oLQ0*X>?ScK55x!O&3arGxzy&YY9;#*tDVN(BWGct^F9h`P<#_uQSIeiqiLYsq41 zrOAVeboddtgRa9Jm(*TqzKo2Kft(?af64%Y!cT{}h)iP8Z z1(K8a9r$QrD}86vb;oRsU%nQEQgY`o(JvmX3A?^CX?La-DeyWrz=e0DioB{2D@o!; zIxX0JupC?NDKTlQS5>8d?fB%|cW(5=Yos5?sePx#9^2`fHH%d2+2X| z3pEXP4=bp}E_;TCcGuRTg77!D7EN{4)hn!rNr#uRGH-jje^yK!3L_*UKYpcwb}QSu z6!uWJGBYD2Fs2rKZsr9_*vQWlhBZw-SZm6-eT2C&-c;6EZd-tx<)LfKC0M*jj$-~B`aYFosC04g;3%$1#ub{yA z?p-CEzQSptSXuO>qQUNIg=QGJVUNe%eD#9m2afrn@$Hjg2}*v+p9oSpa}67kJ#fW}ps$|D5xhZMjbk8`{`gvRdgA+uISyuCSWkOHpSQec&$uYcn$?S;(bB5aG01 zkaHN`_ph$28Lj(qg1Zts=+oe1W@f}1#)GN%@ZrN1(uUi+t>lrHmzw_3#d;1_o3UPn zTiMk7Y^a*lwGLDN=tb^M>zU%$r9(JIeku=O6ALFUYdMPiuG9t(}rTjQY6IZ6qq1=s`O3>(}j4*gS*bPRg>RxpGQM$u7~ zfD95!g;ZN&LQoI=@gesS5C~vGZ&4T!um=Gwi4gX8Pki<7Ui!&uTq&G{(Rv+u2OIC1 z7RG&qtgEZ*EBJhi9Py+Fr<5wgBEGlzwZRug`9t9e z+|fdi6cNPyQQMpF9f}R%YUMOhr?dI7gyG@gZ4acLfr0lDI@UvB_rwbxEPmg8xChgR zBzOwL9gk=KSsAlDkCx!=O_C)IXV7>#y4->zzAx-%hz?D zenRE$a|<#-0kbWF{<#6~7_w3$V4^X1p`TNMi;KVILd-8LAcc|Cw*{UPd^S{3NoQ+n z@Z4MM{IDI_-PJ>k6X0AU?5wefqL)ZXNp5a#x`&e^6-G|)27y_vqIeYhN$5@6!YSqC zAcj1)f5Vhuy_AT9b*S65eWViAmuPxkZB zRB{z%W-{=yAEGM?l~aX7LP9d`5fV|opTbzJrh1cOVr<{P`q<-W!^*@YCOO&bc+21l z`%;)z`6RBcJq!b3-j{H3S#%t`-#Gin8~%4Y-kQdykByB5U0JPJot~chM+e}Nb7+6P z&&F1i!CqEFOiCJXc@qUkU)|uEZrUq)yM}RgyxHh-9O?Y&^~lzA9RSpz`Sw;xvpk#{ z{f0OD%dxClWg!w!mdB4jcABO>5FWpJOoGFqHO)wICQ0c#K`D+qJ~?h-ZdS>Rpkj#W zq!*eAZ(X`p+0WaK z*9ZJ&y$hkyf3RSv^I4DQpoCfeprA2wipa@xAzA=3p?twjqxvcDqz^F`70t8L$~w%R zDT4un)dsNqxct?vo%YSHHl8UmO?)1t;^nUt;&$cVR9Fz6yD-^X5O>BuUGM%QHz80O z$Uk%QI&q;itB7Rkl!;ZNRsY1RT=w++hrPq=TK)Ja$%soUT>Uli2NTRrj$iyHSs@WQ zH%n4s?6st$vCb?~f}8W`fye7!JHOwRMwOn5aS+%|*jNu_Fe3fxDvw~JEw8@C=Z-c{ z1=D zVsRX4Fe~b`uo^=^Q zd?5?KzlZ##`St79)sf<)GQr*yq1;DrvFW)I*jS!+j*P?+mbve~;%M!u{@`>pHC|p` zJ~lQXq5t$w%oVfPg0!@__zx{3Zz*Vq7-3&dwSe9f3Xh6s!lt0ze%jFH6>Mme257A% z)?Zy+=;HK9K|z@~L~?0qNi6MBP*_-BMy7pe2qD+;(GQDYgq@UxT2l4XtUzN? zHyd?8@#SFIjG>JOYzR%`8hqL@`~kp-hldA%5n<;)&=LgCppA7e?{L+W$W$F-t!ZHw z;E?y`1aD8WCBlYRvKYqi(J7<)3C%5gG*BWFMZ4h(aDa|nq(rZ!qa&D*fdt3K+S(CX zDPPL#vBCG027MHHN{`-M(?~i>OmtCXBV)~V+n%{-CJ-YL<9OsR`{f1bxtJJcyObv4 z*|t@v{@Cu9V$Ne?HDb7|p&@OOP)$wEbgi3BIZ06S&v#=@hBgOdcCN6`pFgXR#QHE! z|M-!nAC73)*0@ z-}CeHOKY!Jj#5PGj;pJy-K#yPYP^FCv^nBsNzrkQZI8gnY0w^ zRr$l`g6OP)6Ei6ZyB+CUS+OV%k|;jC<8s_P9Y)T%HBk|kvjze`@$=`Y1{a|<#}_YN5a}gn zvMhOg8nhjM-}F8_Je-o-{1z6LnD;5qg9j!fMLHlI%*gTeC^c18KP1L^98L@~DW|ry zv@qk6k&&5CbwHuem*k?3I}j<=dE0LQ)3Pk0f_H-1^(sxpIz&CUirS$BwHWjn^c^&B zk7|%*PpVWJ#dUQjvSgy_kw`o|JiFO%in6kw`5kD_G{Nkj1?Se+pT`^d)HomFc(UxC zH1&ab&GM=E`ST}<)XC{-sAT4EOwJrIee%%!qN3+uQ&1ip9cA)o)30{?`5x2Q*x2@G z`tSRpndfaMcC!u05!i{BsN&%G`1lcW6Z|6BhBqKdLaM5&0+JBJ*wdeTt7LJrjlNgV zzPlUP8{6C9qYoc~Ih5<^Q{#9R77luUZSDGwQvMlti3>88P%bVm2LGKu!lG#oFJJyp z($dl*hKGiRnsOzqK$TsMfmB#>wjl*H72rUHrj4a#wRigwm{Dm-$%C~)CN{S2&T+XO ziNa_U;T<06PQegCrHt<0TI};jF|rSXV(`0`_AoB62;tV&*1vxJvY)AE`HeeA|Kapc6HnU2?9u)2yzcvFlzB$ffI}2PU7))>HWS_;Q%h&SMp z6D%RM3R~nLkK)~l^(G8g~wz5=>u5CtrnGy>C&YP?MC5 z1mBfbSmfnto@y3z=ttRyTnV=0duDg<-kr%po*l1WF(3*GW6j3T@@og@?#_`YzKJ@b zU462HOxT_VhJ*wrxN7s>%npoc@ws z^ag`(YV?n0b%{G@ApS~v0r>GE$LF)JH}%(4^h0wjLvySWGno^?f9X}oZ~5Fq?#SjPM?-zI3W;LBFleWZ z3PNFsua@`3;?Fq>>W50GlC);M;gQ<6q)ltjwMy)2<>be(v{_Zx)C3XsdSmQqpt0A5 zSL4a@y?5fM)f*cXouf95k-Bt@git=aiBBIsd^2voop_BHXyLJ%{`c#n#Vh+KNqi1e zT&Dlc4e9+KK4Q$t&Gl{EJ(|Yc>|gu2)893TV$rPfzhrRvP@E9-5=Mr)NAelp-i; zM>qpQ*CQe3^Jj`0*b5^gBV}cWxuyUad^)Ss8~?&aG7^$oobFFk5)#HO{~H3$%*=-; z7)8^R2N6KGOGyP}WEgMHAf0YO>P4%xq@<*{61rXdna+#?;Hv9wl07#_q$nvV@50@^ zXw&-mpFDY)TUc0_q^-hCGBPwYG{Gn#(Yz^C=`dZ(%fOHclsv#&rCucgD8w)Z_4Mh} z4Ccod^00f9J=*ExHYKmKvQK9L$&aAom46&-KUv8xARxdlf`^6i!^YXu?B&bfVn4;W zxXOx(!U$(QHi-HfhP2^%{*m|>$IiIq}k`tDpe@ z@6}bG^}XtQU-vKDRRh&e&=mqmy>yipp8Jl|Ys8^HQ_Aud#6L2yy1Mo^Hwk3Q z5aZfV`DX@Rv!rq?FAoiZJFHWYPl}$vb7PvmHf`Q$#(98%ao%CQ^A=?lg!=il3G|Bh z_buh9df@s)%0tA2cfAWZ1Qi08c@$G|6^kE8dVAF|W54-W%+%D>_UxGNsBvy?4kzGM zPa?0i^ew|GdxPiCyC*drX1i*0VPs!pV>PB3fEh1p;(gS#LOfsAE&;70Xe6kt(BFPjg3O0FvC~0_7Ce&|DYft0fAu2Ow|W6>_(N; z)7YqSi6CS%%y;WNyEEpKOCs0bBi**9@~b*JiJ4+zVj3?R!7|Q=!UrIEUaz9)518M^ zHGge7`~iXhvl*xHHi!ubq6`T2e-i3+mmg`Bd30c=#aAt_C;Z1I>3L>h1fB{8$9Y*=^TpBF$HgE{gyUEWVWvz|m-@Ohg z_l$k{W*lNTU>=tzQNEYw`+fd|baZK-w_oKbrsTk?9Rb9}aq9UTZRjNCY1&rt*k8cq=A8fJc>esg2TFcZ{D2r<@(|i z5RCTsKjq~$ASzn~E1o`KMKim>80jtsYtdSin$_9Wk{K%3k(HqlOA=2A_c&Pnc{w^T zu;%bpr>SjZ zG~3?3(lu-Ze5WqcGC+tw!2EEdsCcb6Cn_{FG#D8fpY}ghd!+pA3V5UFnr7?yuT7bj zccs*Nm3jg4Ojg*C=W|y(BAz2EvL}q+`qd@XE!=Mp2qVk9g21T3K(Fz@@JZ2*4Wt?8 zrZ`g_^2Wam9vIfSRoJPqwlM&e<(J^?|02r2)%1V&Z=VtW%gg-_p78(6wGVAFe}D#+ z;l_9y2xn@%FUHME+;a<34KC;3d&YpEf~7@~fIAFO>i%pU#w3+#y^CcxS`Rd$e>BLf z#u+@GS1rMQLHL>TaRFoV;1Pn2>t_M-{@57p9@))kL1}9AX9Oql!HF3(_N7pIAeMV` zp0%nviLd@9lx$VqRU(8{k4b}uAF=p8TN(3t0&uLL`;Q|-CD#2T>!&^7Y-B(%clUJJ zrAerikOrkM-^+-2Jkx+Ynb6W_Ba8BKTcq>7%((E*s9{a1jbI=PL&|uH{keE|s#rDJ zmo_r7HI%QmJyVn9^uVugh2N8(XB=8wRty}Q&#Rxq!|wzd+s=MVIqRJAxj3^r8J3hd z%Q>O7Z6h1Dm6|-w#3uNdF!H80Cz{o|xOgjBI?VD#p)Ef@|M6+Xxj%Bre+c${8doShwQPDUcfH$rV1u#&1;11mEFy!-#Sl~M=} z>Xz2psP(dxG8SskAg;NlV+rl8i7kGGwTA{ z$cd%oJ##XaP^n&{Qbk>uLg)%s&-P$$6!=k4Q4|&Ngs#NIE-gAx^nf=2^JwO1+YTLt z*Q2h#FEWNAbK9B_bo~8;ULq(vC#P(mj$91?&YkkAs^f!$ddFQjQUm2>R4%<*o_akV zof>B|9i8!n?-m^T^(y-M)a;=pdW!?C3b{&Y@}e5@?LcFo%^0+#?8m;&jcn>MDWy{I*?vAXk>DmB^&;RaZw0p17kxk> z-t0|O*o+G*#B=aIc_OQz95zWF@5r2CPdf31QoUY9^2kF_gPn68B zS*-!_WN2vUfINwdh){g->SJPUUK*#xV$P$S-rnB!NZJ_gJ?>5m;I$6qy3w&0{fYU= zM2+9xfy&#$_)${7p`)``+6k_bbO+NQyw2-r+`_i&np&^fI=Q~lsYxwKEsiKo{O9-z z#^*Pp%w3@Ep5@0#&*M)$6huT#E4vX9;ePMmqct-OPT^s+54rD1sH*GgCOY?md48mr z2&mVyXBf>-fS=B}r9_Iu5wFJ@B}g5akU%NaJ~ed?vfS>1qG)Md%zfwg&Rp~B*RLr9 zDTQ2Z;qay)I-fBWgQ0G%t#05&0Oup;dBVrfpH~6pkY-0U4O3B2Fq4FS{77VCvfz=1 z5cN6#Oqf}e9}s}4rzRqT1XkANpM@wR-wUt?ZeVG-`s3ZrdoVs8HK(5AmlAr}%<@J? zX~q<^QB1M&u{~o*Pq(FIwB|FRGq?*~LKmqsrfOb^VoCJ(b$%|s`4>}zVre6zqgvA? zWx@LNTFfLhZ)$*X;U7I!uTM-IQ+X*{7qDI$r=BL@1SS^bFkDtqQ4v%buzJ0Ba_+G{ zphBZD+0)f!1D5c?`i@0!vJO#Mc7$$vK;iJ<==xx8U#A)qsDirN7%xq2TQqm16kS|E z7vmANHFY&Lb#h+@uC`7cWMw<@2Xm>wI8?wm(reip^!?B}63|Z1Pwj1ZXD4pOq}CQj zmRm>iy&WO%hmb@u+|C9x)89jTQs3=&~0p`HB zI5AlzdHKXA#&EFCRaejBeR=>qqiYGG7axe$E}T9;Ki`^d++JTV>`_LgBqsyT>g81* z6ckigxL*5u9hkoAtYy~21!%N2Cnu*buyig?dlI;Vj4ATfYXN7x`#|~*4GcW3WPDAS zBk}OAaV^h0>=$od2|IYSt22gaYisM>yLaH44v$in&ocXE=RoA1zdsM0QL6d0r&(Gx zaY4=u{EQnpnAu-)D_VbvU2W{w`nu$8KAurANYrj`YHI3?d6Wk8mRD9THPO)bEdM$` zG3ZB=_a+t?k&(O8g{~*Vi+tX?I&MpfMGL9Zp3;%jEF?ISCA>S+g^@FUx+Nz5k$cuV zywH?D^nfKzVL?G#)IA4tb27$I>%koHRm1`9#!f~Sp08;O;5SnzE>tryd=vT-udT`> zZ@l{rRwb!cNzO%5Kws4ZZ+d+H7SsC(M`$J}s`jOZvtf4X)TCJYYrj`$L49>wM1|;+ zjteH;zAnz}JbPgI2~sRe!Z@Ev3K5U_r@{L_bl_k5hp81C8~Yh6+lg+}X{@(G0M7Z)a=v%E`ph%`6jO6g+DrD(CD5$wR66@La`L+-40=xaJn>~HnVfVcoAhn92?0u2Z*>MDcWx#d z=}`5sKU8^+HRBg$?(lHi3)*jKOL!=cEQ_I((WtcVXg%<8(l;+;tiF#5Gz=*$p4^=V zDUBC;*(IyGz+CLq^%S8hc?3A0UgP26xdWn5gKsl<$ZQDWREGfI$6Z2&Zv0#s22Ru9^^mLJ_W$t%oDsqs} zTy>fjdL?r-;**Q?b}Gz5m9(|Tug}(>c`w!3&H}*J`Ccq44+MCNN&lmn_bett*IK{a zGFmqf2@TSnV1;N!JcdVJ2BZfU73dT(rN8+Qyc~8h4_jH4!^D(ftcc1uo}0V>nj-Ap7OV-R6(8n& zm$OsXe4y1?9uyH-EKU~`YWRV)5v-OqLgMm;-*vou_{~uOp%gT7n*zZvvTE>W6NPCg zFCTx2M*>y|y*zIEAu1XGSf2C1?$5TjA1H(cPjgaf7wdT5_Yimi+AnHlpseq8Q=6OL z1I4zpdgs?XCLQWZgD`C!CsgchW`c$D#);?AsoW%vP9JF%ofG&g4u8V#jOTdk z@aY0o)du7i9bYoYRN_JCWGZM_d?AoZU})%&449v~Bm;Q)XG&wk$S%$Gd__ZjH@#mvouO z`Gq=YJ)~hG<06*Uwk9xnr}zNA;$4mD=UiM|0A;M~ca^-DOnhnzX%X;(qtsfEsKww! zijdCDc0LTwH|lb8?pIK-{O1~<>dn#zgSQEK*4ADgS1@MX%MbmqYiDeQrYLi9%DcwGyS^&4H`QGb0{}fL^JjibEkb4&c*Ii@N0eO@B$7gf zwuQjZVnb7hAka*%?y9a!ll?Np_5uvnuhp_lG0(nYF3r^p&sN35ZuVkecXEh0hl>xD z2t#{&QE{$3^z=(PsVOvci_x;ML8Vb!+4yPxanovtRR>GU1FO+Se%O6yW#yB=%F4=< zt0esf_gz4~GL2LYSehz9+nK^c$gePhkN{=q(KB_g_}Tf0 zrynXSbzu)Dm6dZVD@Oz0XZ9FmgW71oo*tw9o=r^V)9UT$|4>8nQOcA2$jWyTyBW!__xoXP51C$MA5I>H$Ul_%dts)`X!rZ10-Ol>|UVgP5yKJ=bn{bbo(CM^I5^@|z58 zo{0^AH5$^w?NE8eFn|4J@c;qiCqa*ys=QI?k{WuOywPti@3V^I&*&Is6qaV6x5W@B z&BGu+U9edR5ykpGZ7q)q{6Tc|69P*enGmYr07?Sk>?{>4ABl#%S7JE$l(M)E^0r9+ z33vp6IOj{?lch3%KAZ;NWPp|=KO%|-qoVlXU}FGOq<=l&eyvF*i@Rm;D3n#qvUvta zQpodBT6T6eWfP^hXLa0_gug^cNa)xG?)PA2q}Ms=H#oT^B_)(iqA&0WiHK$zUp%P! zzP1l8!~jIcY2$J?U$(l^qi3Mbqu2}HTxPU~0!zG&G*D=pzFkFve`Y zm<_K;bFv4t*<_}(O&o)=6bd82*`$IQ>ojT#pPO}qoPkev?@s&$#;dr|xXLW%b0>*8CN z$@#r47j8XvX_@00^Wp`6czsQYZnRpZr9Jt^VZmKrx4hOJ6Ag_%IyxG5%E+fsqoJXr zp?%@_5X>qTOez`{9++t8CEyjVUR_&zzBOubS9`X9H@CM38-#5xrQh9L@NjaLS5=io zzxtH_Nv1U7^7X-wmr{q-j;5b?UUG7n04rB9d6%HypaiZ-=5p%F-rjEP zdo$?`=rB~8eaHRW!R9XbKKB4YlK%NqFTmV+VQ#J<-)Q?~7fbU*q%)-U@dsk;PvMU_ z(zt-b?slc(GwS3(eO0Qkqbxifk&$nk0wj=G#*yzWTSNcLcKpx%YQn~ASPXq2MShwi zK^^RgiiXvw?%2C_MrO@lt`ZU&GQGYOWr#FkGmthZ+ra&9hsW?P5EpRbMMOlLf?2UJ zFd#~BqN91Cy=iCzXh{)1y4wyw7^LKWa_Og^InOBzg(2)CfM$>o5lth}BRk2s-i;-& znf%Jh!y?@z3Ym5Q$hU4mHE z9vc=X8ctLHV$NlGo)H6+rnLT ztXcFv35WMCV`5e}%_@VS)j?)g&0AN0)IqkszJ7T8Wy|m&3J%|1-{NYvXwFm3nUYjJ zL%R0r&lnQ}a6;Sh=@h-k*T*Nt4eC5jvT>7#N%?;6?d=(OtP`s1Gd76#rdSjG7DPow z_Pw9pNIOes&7=@j7Z`Hqb1rtX_ZdHHz&_ZUs`>clb7W{_($g!S^^52-Y7-L^GY+?d ziH1|ft%cKuHwScVt*GGoeOg6JZqNuQ_z2+Cv2*kDYwOY|$|`CTHuVhs-U+tZu~4aX z*~uQWu3;=+sWCUo%(0y+{_tk_w=(e$G*(eqp_72JO`~y%yX%?_8Chbm7H%T9?U(t} zfjKu`@_}4vW{RLkMpOT_$<)MS49L4MQggho*SUW)_d_mrWYcPf9OGmg0c#vGH$Q)J zd<;)abaHaM@j89@n4Tn((6ezuMn-m4sw09mdo9+|f`EjYwWsKHc=#bpUxhAjbXLE$ zng6DjrHPfku&_|JVd5C00Sq*~I#+d}-0RKE$Sf85nB4w!)_59goFgCP@=1wt9T#HY=+1Y38P$!X28xrG&H0$j3o1vVG4@i zOf_VErjLJ0%gg)1eXiO8IPB+H?9zV>G^@-aq)o!>X?GM@S8s!Hsn=AP$WFDnr63$z z2%P>g%Q$k3P|}Kh z1h&bx$6;0!Vzr#S$m0J>5m<*JEg1yS_p!u;M&g>`LLtOt4amx>s;W^2IKq0fyb0Oj zU!RL(Q_2qO0pa1{C|4-pGHL$Q)ob+jnAtCnrj{WcDuv)KJyTZE&Uk07=1lMofQIZN z@}~HBgDe0qln&`pvE7M?eZi zioET&8;*}3{ioIAsxNs@n)Jl@N#;`#*; z?{7>fsjwJ{K*kpq_SZJsvOsEVYeSCHi5rvCP0|DPqke)M6x1#4f~C)r_?@o%Kv%XI zANiwT;%U+`kg~|)e$UF<^lXb_4ut?*oKQHg|bkCvh$PMU5G;DG;Ev@d2lSDXN!-<;WQa5$QE;JWXaj`|B%}KW5oa4-0#l=#7j4TUi3@Dd^g1wz zIvM|=ZsyjLl$@+OsuBcw`h#JAu z!q=oT-yd9atVvv0B&cI20?2ot0-`D`xSu7pWJC(wn7^*U`mbQw< zUM{({(NKQ18($)Vuc529ySrjzW@ct*}bWY~l-mcELaCJ07!A9egu7+Dqhu>pxgR5Nv9*wgfLNCXB1!@QDx+I%3PhTZjhy0;h;-YVon9}zjC3svnQ z4!T$$`Cqc(uf0X(#*D+^g-As%j)FsuXH)-BDp8B`Z&?K02jf%paxD=t$-tqZX>}2z zbRY)?F$o0W3yNR#G7hB{@Lvs99t3CeCCM9Vu4(+oS}hPB-8noNTsNQpnMz(zVZ!(}aDfSJteuu|i+5mH2CJKL!6 z?1Yt_98sE3w8{7G7U@At?MuCBg5WWVF%M35p zFla_KM{(V;#?g$>>GE`>r9XbI7^V;)owzpKJO?!~z#K&NhXdBw_}vW z#+VjrMa+jhj6Et7cyf5k>u}q4vN8DWd1=e?KV_K~c;EohGeoi@vEo5iiAfxttY9f) zAR|{SmviRa$pw>-&-ipIs;c3(4C0jF{Ha^N34kZDFqD5(*?-nE>PG(QpLHwvvu?lq zBq;yCAl&jk{xyrzPsL&+F?oMfgfX76{Lf55lzLCe5vl%F^pmC_PR~xeMLb0}elZ4H zmOAkQLT|;f#L>5#aFD>rMMwMR62V`w{#Ok_dNFd1@ChMV8^no{_r+W0cH{ao!%5L^ zZZjr+KP45Dc%cun@&jGb)Um!iBZz;ySK+2@3?K|~7Q$%ELs7geT8gY5V~8RV?Ixqt zWedFou-_KD5$(dy(*RDxmIbY1>lqVtgmRr@hjPOMrYWwytzSZZde7&O^?jwiAvt-;c}}?S;YP2CK$e*U|f=L zSZo>;rn3fPM?fOLtVTV*V=B{#4HLoC%q$=v;AuZUzvtS<~5nH>{U zHNK~o39I+Ls~s>W-fHW<&Zz!jDOmRANO0TEPdGsznC>i%?_@&5&|or%PEPLkG_$jS zt^N+@bNXGNSEivJ($v(Hm^j;x`NRqiR?ce^6BG0E^Nk`ig^R`~Cof!f@|_Jh73gSR z3?%SnmS;J4^pQOJg$&Q;;NZZ=$LnS60ShL>oUe3g!V(Cf=X%q1WD9y_p5cEROiAp8 z%UVii*J zSe|NOVL@w7fTp^7o~%{QEIu9{I|s+?);UMcU|%ASl7(E@ax(b2Y<#=bIJ0&BStwvF|hOYr?rMA@S zH-(T5C=BVerA?^$>SO~Ao7DM$2IPQ^!Bh)VJ!R#?S-U1e0s@d9l+-a4Mh6B4z}FS^ z_RHe7wtGYA64<^}!<}^?0f42@xcGPx*nNF%t>@lM#crb|+||j+M6jo~*U8N-$IA2e z@`#U*uQTGQfb%Af!sx=nf=<=@SM>BXZU+k>M)vn`P4~nWF_1oH@d9d2a+?sY4ObGE zK(XJ})>h0VDJco!pgf%O5kMj2NkC3Mm!p(gs8hvGLZF(^Bp1(|Ea-8(J)VCiLLRcI zYT@k6DFtjwQ*=D{nsy1^a<& zQcDnZyj1(U00tITc}dB1r7f8h^!Ef(0$;Xce*q-#8^+S_{zS)dhV0_44vtp$aX1pK zgTlB6Cn4{X*MH%L`3zFRQ>%+|d6&092U0umAu6 literal 10535 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 IOTT#gU(8xAfdBvi diff --git a/doc/_static/gui_modify_point_symmetry.png b/doc/_static/gui_modify_point_symmetry.png index bfc3a16728b054cbb18211efcf441de072950268..41373f5cae8ff4c4692ccd183a7f0e94e456f633 100644 GIT binary patch literal 6955 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 literal 10120 zcmbW71z1$y`tJu&K}teWI;2BVS_hDll#mt`Dd}#|0R#mE35lUQ1*sv1kd*Eky1TpX z@|@rK-`_d+{_lP6-OtRkXV0_uUTgMR@Av(@-!;K%Dsp((l-Ljm1W!R;Mgsyt^8)WD zSm@vzUI{fNutRgykb^>sdZ^aG!CgCfT}KE6zxmG_Et&)W0r(QrNkLf_6LlK{n@OOk zqO}-&Md2j-(n;FZ+S=5{2_o%aYT{)2md@3}$(&A3L0L`5AD;{Yp@S&MJk@lY*qU;G zNj%zgXO};&BdvfPThoF|sgZ=l;E7C52zrQ^rL|JIR%69FiNSVs_sE2gVwt6WWqxJ3 zj;uObosH8|^`{NDUHe{@l;WiM5y(G0yCzqD5#z^6|NFvo|FpRyZYh!9UBnSeu9&My z1c4M{VPn6>qQ6fPUIBq{Vc|02(!&TytjD$By}^Ia!a_BnUJ&Oqe!k8LrC5djXwe6`@Vte2Y-#Bo zaj%!-%h3~MY~Kj>SJjz)i2RN_-tr9}^uWbNb(i-R+Sc!;Ar*?Ocxp z7GK==+)0X!j=tWVt7mygN(kLX?UnuHpS{l4JST!`7u8;`Wsgvc_9?|?16>R}Ec+QASXo_VtD5%ri*&{qdY)@$>A?vcj@DVBShCcbTm}`J z6D-LuC&pI!pGO6L)GR(BGd>g&B%zT?5;kcP$&B1}8`@i7Yz^hVnEyQOxSWwwL3Q8B zx)GfNJWsi>MX!AYOH<~_?;ka(?LR-H)3jOq>vTSIl&!3ySNYY!>cWt07Esec9 zn({F(H`mr(*@#RfYYg;)X|JDe)YXstF?_E#jD@Ry&4zFpc^##PdmOL5iApj$zrN@Y zwh?ccyc16%x?j)Se!Mlgfkk~bBQ3|x2s>PzmezVG#!}P6oTuf+lO*B0xU5YCJ>H?M zu!>z^Nj?-1CX0$uj8=3x*}i~%J(;PbgO!)8nVXq?jXvUhRPu!6B@UUMas733vrLua z%B)tt2Qv#<+;^->8)t%GdB#poy|?Ag`5z+)Z=`MzJP}dd31;rI4ZPbqLe{@$D}LC{ zd{j>0Gos?6hk2cu&MYpbNe9sgIeqn&08fe$_I}buHTUgZ6B6vRdr~N7n48=8JX`m1 zzRAM;C~0D3ib;GRrYoL3wf9W4tYELt(MRPKaEqWWYui5Oa1T54IK!S6)MS@lwlPLQ9t z8*YVgT=`nSnT&AsBx<@oU66>;IzLBttZ=ZXczq-&^}V58xAi08DC$a#dxAxX?arZN z1Q$7=qL)z(FDcvXYv)sn86$!g8MqthvekPWJ)(cR`SO5_C(}XyW&QPXBy;Zi1>Rl6 z@`|fT>lauc{(f;#aPU`x$XJ~sy~x;;F9ZYS`D)&s{{FFKoK@uHZgB*BRwD^0B})9# z<2{0=?QzEOA9F4~KC-5no2{Wl(Dv_--th=&*=AO)B>PxOW9e2OM%Lf7u)XLZf=+uD zn`Nt%<&Etx=}2BbendwXM=-xSMq&FvJf1?75ApnA?9t}KQAilo=5d*DRSvBN_m5X*#)jwT8n2f^7FDW&>FH1ATRxn+sY?G^ zv5oY-5&PBF_IhvLsHbPD$k^9wLwj#VsP(tjq`Gg>HHLv>+~%g4gy*{NsYz3>lu}iu zZC&Qg?9;Q)_dGyXLh{b83-Tg!dHTJ+CJtu*yt;f(%K1aYejZIYo0#BLCzsAlRA{J= zqGF@i4mkl78#~E2G2@KRinbS%_9Y=y^7`~rRch*BchzSe7Uc19REMqTse?mO-BAn@ z4u7hs=wDb!sB_%{Q69b$Y?Xs3pUgAlY>!jf(517dSJ!Gpug%oguh%3hW=5vvY>XBQ zQ;DwhxX;vG2(aa*ltxmERbbLD#u__Rp|hyGU0T+zy(ki)e>)=?+)6vD?2a_;R4#EF ztFZ2Q(}q+x;{I8=^V-U42ysADB;(@~fN*bf-k`FbV%IHY%0-$$r7;z-=uJ#wYil_l zK6m36afe#2r>9ESh&=v&pHw?Az)*vSmhjQo@UYYVViN3Yd;3blfY;aZa2Daprh$Qm znVFG}j^@dWZpyV3gob|Q^!0KAeS#34qq88j;5r^u{_Wd$3JS7?-fRS-eU!unFl4r-zHnq<27W$mqoljLLaX&wk0c^*F(GW|Vyurj%}_DJd~>XGZVElP=# z<6^JPX?tbs`ijERDpzQOv6W#2QVdFu%$!}8eK*~K)5wblM9 zGM;VyQJ*C|>P6#l%zH_=G+wLO$$Xrghs(W{8`E_Qs#2!76b`4oQpq{C?pqTajB@c5 zA@mOZm*+|xO{!AnEK$FEdyF5e zVo}WTrS+h%^d!HKI62y5>>3>%DM)Ny!-4S86ev)lGS%>^%*C z98z;*M^Oh6dZz2=wShWT1{~!LqjUmeKN^q5`Nu~JM~}DbGJh71q+xb2IHh=Zuhm`_ zlT|j@GFd%Q-*B!U)?1`A4vt4JtFm~JUHATjfC-6>%E|))VTk$DSFZ>&HQ5jL5Bf+U zDYxgb9^EU1Kqg>-hG6&*IwuGOaF8E3da??EKr#OuL9nR*aU?)Jc&Yq}vANJY%KxeV zDm%EKqpRyna9EsxyM`5Q=40p=6q@-?>bGy-h>5BB9Y?xi^*A^RBxp z#I;lV9n*+LTre8SRpYx*p=w-r+A$(fO?i2Fu2VCGd3n`NXBu#;ySLDxpVU~r#;4A_ z7lTk}Zg>Lr47ybGMzi%#Snm%A7#bN}uO$11$S_36J8h#xh>3}zpK@rRsbAAr)xUA> z8m9!DF+%!U`sQBCvJwzMvy_uv1ddr_ar))byuH1(Qi(}OmbRB|W@daq?=COBhS^d1 z*{aDjN834xn^Y0<8EULeznX&ZDb`nK$%&{mjCr|?O34uzeJavHCgky{cj@`fdcK5) zGQ-3@4p}86rrs1_p0NMo9nl`KuW!yY%h1==EyOo2)C(~A?tO7=J@#X+Z%(?xr2_ZY ztzv9$9v)Q{1*F%~{z6;0unnqxh>@3-0D-Z)Zuv^34b@fKsC>BE|7&7GR8sO9;D;o! z_o)|hJ(IAg*EWUUY&-G9tiD+9dMaioE&b0{ok0+xy}K?}5+yj=N}=t<4mr1B{)&g}5;p$K)Zrk<8zi^QL+e5Mb! zvTTRRVq#-|a!!^=w*i_kyqV5KhD1jXhrz{Sc=TypMOE0N`EVDOmPkk`wO_tujaHtC_>Cs0!{ z{t>8u4_gb;Ab)(lQ!>$y~{&1&WyCB!*ZOHo2Y;r~4y1bm2u3s}+!_x3f zQK3@m z&7fkJRXb%~yV)n_0nN?L6Wyut))DedMT`bwE}J=OtnaO@N9783CM#{>`W0nmLv|{o z<6hqfEyj%o`zGQ&F`Y6-Eo(<*82UMU-J_$v3xFFPX}=Va3 z2UQ2#s?Ob%h7{5QBBE?lPduX|BdfX-y@Y_Uyw`c!Y7!Q96#-dm!Ne@@-n}D&Dk>^2 z_a@k0gjpv~dpALURb3bAQ;@tXCO`r3%?8dNuRfZ{rQ%+9UTvf3~Tb@8R_YtO88lYKV5WifB(E7G!&2iZAT=tczmo2 z*Vg-{@u;XM}YQX}hauf7LDsQ=V@*lK;Jyq^2(OvRTAW^M__seu7LCMFrsp%HmG z3HvJMXV0EF-}!M)4l~si)2~5#pJ!!ceQKEp(PHd-CdkB;AsvMO@Zm!xj93~;uc~9@ zCB~&i{4vcAJR(VbX75$T;9_!&GWn+YD)lz$(OmwoBd{GFl5*)eZLU5lt3CDv&p`PK z=nWgTOCVTmd&&z>f-+sP$ z{W>jgUn5sj!aflWzeg*A`u^yXzklOufBI;VArN&?B-PsgYHfYaK~6zY!kG{o8x*19 z2s)0?Pan0+(MVTg71(TPXlO7?Q+0E5v#?;J&qzs`y+j;rtirk*VqEk9}x41JK7p>=$={MT_s$_Ym6)em=gw&551z^Y8KTKF4Qf zAjh~;&rRgJ@)T;Nnj&{QLKTUKh=v?v3HD3-aVB6!(#7S0+O@F=(W0iJq9VbVA)2*W z{pITPh`Kwgf`)&LAOVMrkG63be%f<8YmkPG2ci>a`kCZwkX62}HOLdCfkF{#$iMjE zf6CHd{P2e+%)Rk$EO5m1#RP~U=4?*;`v-P7a*&24lD{JdP%^)YvW6+TX2SW=6ngZJ z==MU8RgcxT@7}e_v^|d(UlTOPvWI~*oHF<~${0kCHFuAM~Co_K91 zA}A;*_RQvQqx-99?SxBRe;2oKm?$r6y?=bseh=ItJr!s%4?qRVeN>hGFBIysDF7!a zDM?VVlv8QYNncBq^}fb^W};w9T_67&^hNw9`IhI|I%#BK)MCqgO{Nov79}MmsK~_4 zL?f5F*RNlrrlwZ96Ih6XlcJ>(q-?Jt7idWf;`d~!*C(@!^S)b>90dfW;fsifAZidZ z)$Ud^)7~m7DnK}Gr)pbBv{~=ZnaoKC;W|6n;oilcd%aXl5+oApMD4!NiWeb&IEP7F z$|=_1(*SN87ukh@iT}lk+5!L!tn*Xd%@jvo=REUg~_%?jTh zGAAmtvay+v2fj0pF}0nk_6Asx?0X$&^4+vE#(8aEX}K_=MD7jP5W^OM+SYPMiTc9z zbW&Vg*2`USXlQ7vN#Y7hN(mC4#}nmNh^EH;51pNz-(E!W7$YuE_ZC7Q2r2GZp1l*<3)Hw$`kM~Ck>3^65_15 zzeYwzCM0ak&6${+n;(QJJ2@Q!a|#g)MjyeJ1Qct==VEJMNeQJke;}LO3+LB4c!zecmbWmVRV%if# zuwVrn0Ty{6;MTGYQ!~(_xp~eUqzV=M=~Dw6`fjPf3}?8-@;T-`8mcv+NKcH5(^D#O zx34(V@mV!aYfaH?-0Tlw-xH*Ii-o7%qz`B;;)VG57+|}%z5JiNdiAP7qBt*)0d}91 z^!JiOWrU4^2_TGxJ<9@CqTsyze5>~(eSLPL+lC-jV&UO!P1U&C+5PyK{xMJ?A3PP5 zIl-){1#+Cmq9w zQ~}^YAUfWb8rHa+VV<%uGY{*QE6><88Swe_bg#*04%}Sr_zEZ|KXzw0Hh;g_KlUwK zMO0Lj=CNH$UUdjZg9&-7bH>J~vF{ZirOV69o%)L;&vM6=9uE%>xi{f4F)`cIbqV@8 zNE>)BMd054J~j>>2PbEgVkYS7mm3KrvWX$$lj(Rt0cWn}`E29Is;a7i0S$yf&&mNC zRAHkO0N`UTh|?pd3foDa)xK1anqLZ3=6Ano~OkNlO?Y@P1T z6w^}Dfv1@HsiIXt6x)r6ocqJx7^YxCpNpN*t%sL3^7-Z(#Rd+ zbu_VgXEc*Pk7YmTLw#n@gaCXi(07EQQ1noh!25gmqUZv7WT|(y3>=TGA+1W`y?S)aMIRvH}Md;1M_&fQIG)KTA*?a z5mhw^sV<*W>@QB>>^|IXUR>!xfnU71zd$c}2Q1FMq`Tce^2(7O#O>at2sAnMk^~iK z>YykiH5BwixnDr}fI?E5-z$)37Kc1=Zg00!8B$FtND9T3cemm+VgwFQ%xvm+~>IU0(-`Y^` z!`MAiqG$1f`z*G3S%B1eIadLGOiG$gll>eibITd+x&l{ZI+86 zfX}L{t6S+QC@Hrm>a5zrs8dr@>pV~J@$p^koEj7$yYVoU*uU88x9l@wYytO9LGGxb z8!-<+_~~+;Z%g4~u6J(T%E-u?WrDaVa~I>{;(9$ihXn=2#>5Z-TMoM?S?osRc6_a= zGeBAJFqf7Hq5B613kwVR`S}!qYhxvhSuixC{62b^jEu}D7(?tFx6p_XC?C4p+ug>| zm8VNX{!UJY^)BAO0`a^r4gvQ|61czWbk(=J12L!grx&vBIgaWw_?2Ir59%Ns92|cz z$k;GY3DYe~>JwrIp!-7>(nl6HH^11%)vs^9-x}Z_*znY%qHn#xgczlFa{P;aQl=Wn zBsVJD_FfC1L!fd>iHY!C3Ty~BSS0&*E}B4>tjoi&;Xno2>6^e*!~!O*%0107HgF{GaI&)PaFNiX(XQJT46S2E+q52sS8xGvQFsK}NY~__aW+llTw(@+793u z3}_V21E9FYDKu zwGZbm0tI}aluNQbIRrKuC#S(#Z}h5)pNqr*J?wcBpU6Yecjt#|{r&ylSX3Y4O%YZp z#d4Pmr=1-)@AUf2^!D0%H+%R$@!P%yOe%hpCfM*?{=xn}XwQAqw@p5M2dm)vZbYC~ zl7uHIC8g*_oh|_D>FMd#*49;Zzhh7LmZgB7KMx|Al{h&$-@kwVk1Kq5Ug71#V6d^t z$ehawn%oY(o;PE~8IuxG2n!@|RFmT!>s zFjz5uz5POK1fyJEIz$w|lBDR*oY1z@pBsgMF@|hy?t|6Zf6BQz?QS;Ldf+5B2Axyc zpF#f*eEwe@yT8OAi&_BfADsQ~Q}Ex7zP}pzZz=v?2?Z$f|Np6fH3>lfKfJ~N>gm4% z>0cS`|KZgC!|(skyZ*PQ{;5?!lYhFScYE;F-M?2XAm;m@L;OIn|GE5cJuWn#9R$LW zaomRu(r3j4-3J7VrJ8UedWi###ax(6=;mqmni8Lb$b}T%2Q1$lAxHo)UpXj zFc}8>2Wv6#Z&O0qDNq)br(42M4y{^i&x7*fDj5a};ACR@O7>kL`=;fyUDD;5h{7My zoZM6uyN_BQ9b{)7i&;;UO;*}u8!8cF-BOmswHAVY-sE6rHeCn|wXm?@?3}25!@u** z-TUHbc&}f^yDjUA=6w^5;HK>8c^V;c$NSE%A~urWl=}H~8I4+Hxw6LzaJcu;?_og3 z3x~ObAab|{Y^sg-z)GjD?~S0<$mQumxDs*CcL?Op+MoXd2qr=P zE~+~A{9)l)V9O&qMuz8m5~B5k>nNvAa5%DbzjTQsW^!`!WNT8Gl{F`=6k69X<>~sT zHn@to07@~DuTxCIp(CH4!R4k|sI!-olQYNtEBkpI5eZ2PS8g#k<$61H*GQrMN^f%U zgoC`fy!p!<8*Q)dc)`wCo)em#?sRv>G$*RfDw`|Oqit?>ZoS$16xW^Um5#-kzv~gCsPJJGd00Od=w2`qw$D5y{EP za5y|6Ve$-TWuxH3@kJUlG<#`iI^MD)Pb*(hNvStc!tuK43=kjQJYKnuLhV=b6D5Po zxKl7Jw&SM*}*nLiSO?Xs`?UNRIk|gxi)cRf-t{e1Fcil?93nY~bRCc-*)z#-? z{cpZKR32yyiH(Xv)w(-=X(PvDd7`F95I)ar_*~TaT+`BWeVHpkH-?Lo6Zam@4Dd5U z6NFXZl7jEYc)M2uUD%7RXbNn@L0zCg_ATpqT&c^Jo=pevJVA2S(0IXcPv#kIaFJnv z(AsBGEb80&<`F>}sc&^%X8rv0+M+sMRBcId__}PamiQK3nqjJAMyQp&YWx7q2giK7 z+f^(#r)^R&^wg4wz3gP4KOhhz`eP*D%~H|Q#|K$cbD?jGG_|&-en6a`${ioe@iIVx zj95;tjkryf^<_)kDL))IO;h=m_}Z8Ddv8M0zTk#hCPPrIO35*;H#GI{$N5s9jCE8E znk9R;mg9D(Qv`NIy^V>ES#uuxSyIt&XJei{Ke6)^&ol9$pDIL+=8ZTgQ1UHX8ycRV z8NYh}c5`RPxCYyLfJ{^%qN|isd612bEsyzRXC_(Pov*X>?CgxQ)5G0eqFz*s-Cf)$ zR6L9I_s~$3{_A(|jset+B;B#PJ_faoxYy|}FbF`YZiA{?U0uB=b@>BXZT_-I^gAeF z0L-YsMFk%|Y;9}Hj@C)JqOxzvEo@^OBK zR<;WKweCnuO8|j}p`oF+w#!A2wf_?}GsE@#bdMTDO-->;ou~xkRaYE8@DM9Ba0DEG zdYpRz3Y4UF^_VELa880eYkg*LJ9$(FLfi#%gehRTXo)p z$E9g-A(3Md&Qp??P$An1gS~=z`@IEg{YrOt_qEfd;o|!1-wS)dl>yNOw%2do zVB%3WhZ=6=E7f%x3!o?W((=FS+BfaIINC6q=+-nV<^arkzSU~0n)FzgxiGSGQHR@D z_o!GaFT`oHuYY*h8R#NOFMG)65Z}`|Oj}#q+xhLiol>!ODtc^7>f#adGU`#wj_Ktb zAdZI0x^U_qiJOqHpvwN)kYafyDV4czGaqc^SKKSF@Q zHVTxyoeTPHfZU#JPXV48SfX&k#KbIlNd?xp*4NiJH*0OCL|Ir^jzVAo0a{vGVEBNo zakw=JT10Sm{(f6ps9zaICE@_eYyeMIBL#oLCH0@-qG|oq+X?`FIIR@Tqt`H?Y1!Fk zaPRCZq&cq!YowvE8!r$;`yWD z%m`;-5`E`$S48pH1DBv!yTw_KpQA`j;uKr3IOH+(($ecBPuWKhp=HKlWm_BJjH+~< z$x%<2VNl;Fzk~EV$~#F3^Av>22~v9DL9>z70x#Qs|Nebs z{nT_E-?z<8O$>7eA7a8YqFr>14JiwNGYi~u6&(17`s{<|AfaOZl~~)B zhBw5U{jqyIF7PK$7pD3fUBV>Hwhi3slz0sugy^juC0JYE6- z9v8tC@YC~+`$XUYA0nfqLqI?A8+dBF+IafB^sokOU0j{5xgb^^*48c% zJ6F#ge3T>rFab((&vbl0ZDj_SkpHSf|5|#MIK$9x%n_+bNlKx)%Qco?o2Q#F!A|(2 z4c074hKIktHvp4vR}QTUU%17=MDeUtXVO7pi|ktM4SB+&=NeTh0Nj!>JDf0SN=l)a z@87c7!3Si!01&$U zN|CfcK>CQ;CfejeA$s%iItM)rfHCr^Gf4Os6k5-=1mSsjmRf2Z^<}V9yq(_K3ecd? z(8;y;b`W3MPXng!lL{2n*48p(5H7mOBRo)4;VXH~Y_9@M)xg663tHM2Bngm|ln`o| z>UH91qk5OtYHQr)rvLD$(9TTIN(9Nn>!^%&&v@nNIpN}Ydwctr&;aZ49c@q3#K-G-d%xDQuhAIGuk*%CH>u)I zgUZLg^<;!xy=L0zf0Ub_KT>Ym#;O*WhR$!n9YdG9E+JSK?WUJ^DVxhzr5t57{nXTW z?BZWh%Sy^+%w z0RZXJKtzbt+r7M1?%}FDi2w?+q@U0s@7{T5>!>{;*x#q>Ze@UfEYRb z8^q!x#R<}!$2y({Y@2w%(NV~iej=ifE1{XDBz3PpYojtHamK>+RM;KHo6;+o_)Jl4 zkpS<3*~^Qg;m<<iSyJOjhf`9N#uT8Kf7723hhh#25$ z`EesBfuWg}ZtC&}+0MtiCsgLcEDv?qg~Tl7T!G&h+Q;PGyYr*5TWnbyPBnmr#_kli zLB{E+O+Ww#Ep3a=#8ka22~Yxewj>&B_Vqoynxh!MNd(yTslBR;r$76!UM?86)xFeH%lgr6;7FISx7YII#p0JD2KRFRNa*g(P=}N1#+yk0jj} zya17aI`8&aOQHzJrY_^UWDn$iA}Lh2^ty7PDy{Ix?J-T_U7c~;UX|;iFxc#jUok-_ z@$GY#$M%O|_>!ZeS2{xTh#kmnw6xlPrbGmvJkt0aJ6e@kWYa^rDksv^_BZ$X{G`Mo^hLB0j5P-U1CgHmey-a0ba}B z1hv1K3iV%%kHl1{p5w4`b+MLQn1?T+<3=i!?^js_j(t{b!^@x7lT2C zeJUL(8SawcNRxk6m|vTX6wxdTVdl)Udyi)m_c#)o-9)5lWg$y>DIP*QDfKoWt zk+H_^U6ode*cQl+ii!g7RvDP+=nOB?oG2ayeF^eM-~ou*m`4wve6KWTAsD>dSSrOK z;J8*@2<+N#7fbjbR#sP6S5}Gyojw5!YQv&bV>wOhDAa-PS654d-Sb5F**}mWii=m; zZ&AU^%34nMIn2$?H4+;#N;5J_CnNXBxy`=(fT0iwA?R`pNGqskGO8${lW;?C=c zpFfq`$(i`s?||)%tx6t4{zUyP;KfJo@mfc!=(h0?i_5(Bw_~a%-1Z-nOCO$sRGhb3UvYyNOu?vapy7i$a8L$s#)vsc*vuCRo(Wx>R*TBF)1%-~1f&AFm z*t`fzJ7tl zga}fv2BT{}e~vNTrCxBaS!Xf+agIYhx~z8^=LZZL-0mBT_#dv~ZXENN*PXlcOn?9W z9Xk`Slf7|y@_Ww;urRV1&uF1?4SJwZn0e_?Ut6Wyl#=#7Ix>p76JFNMnJk&dnvMo% z%K%-Ko%UW>Sa@SSm4$Hsmd5FuoBctUwokxNk-9*RFtFRc#sglo@83|mVKtR3x5msO zJ6k-ZQTF`TwQM(q|9Lt7ZM}MilC>$McA7`zERy#UgvC({3EI z)c$C*x;~*E&sa#k(eTSwloiY1jW$0^>LUSqVW%-gk&K*Euv-~KD(caD+` zPZ^nHGb67zt?O=zdFOIj*=Huld^BD4@MJRs3@GayPGXmJKfub$$}0MTocX0{YwU#kn6*+x@rwdJXnNMf!B+FZEy7 zeVcEK%9en9G*nenV^|e(t2~>_S4_APYQT9+y_tL3oNMrY{QCrNNLN=Et7`hv>YRxE zU_opwVeLEG$7YU>8|J|m%V+yLXJ4jR1qD+cmz9*H^83X`G~?60(b~LyC*~EVJFOer z;WHcbt2}8UpCTR(cg~g!njlp4`fk17|7G{vt!|hWmYx0z?-U+?eie%AF+z-vePM0Q z@2uC^Caou|*6+Zks6fBZ%=%ZCcj5L#ofj=oP*~(VRylv1IjKBL8%sG7TrVfDaP7vm zOK=fKM1(UxcrYyFQs7Hs%W$!WW}FSePLs7MRx0v6c<^m@_HuN~xGV`)g)jYm{Y`(r zhEnY-gRscm|U-IGRxVE#1GIM#q-m1k8DHSa=Eu}M=&8uSlKJPFdKeUQ5 z%PU)Q@J8r(jV%Zjz!(_BKggKr>FIEo-?+me_3qJnsupK^dr|j=?>9&o0BK80OEtB4 zXz{OJ67OoR5_n0Z+=H8h#2};*eqv<%{Gr5o>iOPNQPD@6&qZ+UYkg{gbzWVg#TPnC z;j-aeoSaXhTMKaOSY=e=T;gQCtK(w9afz4NUwuTV83mP2Orp#LaEj<9e*D;R7pAv#a6&{x z6iaDpVzR%#pPrEcfq2|#Al8^{c)wsuS-0N1C8nMwjy##oaGK%P7yh+bw#llVW%q_2 zxK6_GY5yhR0i`Afd@HejBKly`6~*_6i;K&lO_SaogkmAr89FLj?AZ<~qH$YS{OWaa zX$=2yz?m-<6;=JCYheGvt*+5K@N#lGfsENK%WQcTT5sK^au@#`Ur(`YRD%!92?1sG z3$Y(a%?!|@FtKYqML#WhuBb)#g%tXL`zviWZIvMI&7?GqqhwBr~NX}>%t6d8{Sn1;+rUm+!3v!62InB1(_{i5H zkhsw<&!OLYiz&*D9N<;1wlxo{kfu3pm*@3`(`h7<^Ko`>@ff*A$sx#APU@JmdeFZxNSqE7J90EW7y6RMf@RD@rSdc8&SMJ?-5v5&z82)N`nb z_83bXEgyTHou+M5XezV+XH-#95fiG_)#c33L5#{hk6Im&qnsZ3GlYreq<8Ll?0sw3 zE!8UwOyz(1?JBi- zGi*fAPvcTjQlj85pj_?bfTj$()anobnj0A!DmfNDJBR=q$P)50vbKI?g>v0#dC#m6PcLwMxHbf~56ofKI}jgRSf>NZ zgqwcep`o=LJb=q0Njm1^;NWmjO_pXdU^YrhNo%LL68ej`LQK%7!DRc?YXe$g zV5VvKa>t@?_{!@~drnFfX3am#p+SdxiezMDJh+_~zkZe%ZmEIUzH8YdKQB*)DpGG2 zHgmU$i{)ulRefDui&=1x{(5=Cm`J)FFZgDs&`nE zI$wc$Or^7VB0we2q0rhsb9mruRc-Cj=OzkW4!CZuX5h;Bo)wyeL7eUV^BKRD%+y*w zSnpf%_L!KM#$)Qil>QuNc=cGFZg$byB04_6&yT)WygQkbz|`%0Y|roF0Hot=EH9eh zzJ1~1vi-&HU|+Jw$^jIZXH!Us6*|7Br_)*)6v)sT!!1gveY&@gk9mXLd>oAc$P#i# zvx@8)67==;vHM*-_^oBawmtq3J!|XbjG7q}X06~MC1sCTHls+T*yqv^NydI#%+T<# z=kDCslV=ARS$tA5YIJ;Ja2REG%p>u!GN-rsgE<0Lo)Nb0{8n=tWGkX0w{w z^)5{UBqnyq3=jvVK1~VO_Ezrr@=F+|8L|cC@#|%NJCmHMpwqzJUTi$AykuL z7yI>MCKOPZz?OT43&vbc6>7!>oX1uaTVvQ+FmH#!<$@F8w$1^3QPo7dlvmp5sj4e^~g?>y0;X*Ok$gxmKm*6mPB&YM#dyo5x1n zo|{!%V=8;`z|u?ZYt{U&Mbi!FW98hPEvq{1)d<=vy@2Zz zx94g~41x|i#>+Cs^Alc<*v%QMmoLevsPuJpz2;i+V)HB)Epg}P!xQMTcS^HKy~`f; zPSba)o?ZbW>tuk$QKfcE_l~b|9UTfbx^P!@*M0GfliicRTYtU&>d@6in3Sd0_iysI zX4!o=zP-NXm^Vsc$~LGmbKok`RSq?6^jzDz=86K@D;UDynZ4I<2PrA3+T&*bWA-L9 zJuR*3r-8MDU2g}qhAgeDR(|(XArMYo^~J(xqUt;WX*5z0VsNycq3iYSVkY!m><`$v ztx%1n1r6W74usKcUb}lGOnTSTkV*O|gHlpb^6BNo$o3>hTtF(w2f&Q^6FymA;5BGu z565`O_dH&!Fbx3a{>sAL`+v{QHgOG!+hOh_+2AV8&fbyyVQRZ>b&STiWWgrHrzuu_N4l>`0P@O>;+%5VQ+cAqe8h2SQ&Pa>_T zLjkKO! z=h{f54tIAg$Wha{z4EN>m)yby2N0yZoLo1_C)C{5wYzuk?w)tEvh%Zxh={laTezsX z$jN<2LRRJs7ld)s;2(SAP68SGS&2X(K>C3|JYgv$Ny>%Ka^PgbWnE@lh=335N^Z}2 znS&lZyrZPymY9;FJ9jRvloI(^C*wEKGtV6G_mGW98(V8|Rw6&=rS|r;w?E?HsX!t{ zg;{+BP^$4eeUo@68fDOIW*fV_cG4WE3bjX?ajdy6bmt%D4kY z-`3{R=J2eN#eLtg-@L6-tvw@Ltx|I@7iGgjGh3OtZ z&4WIF-8|6FRu8g*DT!a<4Lbz|ewvE+$^LT5kCIMp7JTW7tUp{YB{{i_*j&PO=1Xd7 z>T(yfFGF}|NL@;|jJoQn%zyNz1jR2R;8zwYb007;HqI7tmti7(UN{KK1RjIR9QABT zB_$=0T?GE#&CSfDk8UF)e2uy|W(k8&ADgh!;N3CkK8O*9^DjKWQ^e|#n0 zV+jo(AFRH4P;FI}`)YqK5(&mhYAQ7a#gl+zCq+ecT-@!BkU*VAX42QP5JLtmP%J-Z!`@u~ms(e~ee zeEuv{-!4P1I_f1_}e2C8iGm>Imi2D3t`nrECw`CIL@ zQ|G329C-8XX$mBjq^t%WU2d3P5)$2%IPA>rOk&OOKy}Q#HsO|Xn`_ODla-o2>+J32 z=6^6K)oOleL-hJtU?us)h_d6PkzfY{(TkN*DQ0G?350z#KXLQL=|<61MU_vL&&~{a zcII1zMmVY;h-p6gCVWG1N!%2qY0wze0<)fI2dIX~X$@Ij;DOUf|OjoxsgSLZUOQRzf zG)ag(809pRo11Yr#H1{+@qS??$B?|Y;dC4E-{c~v}dJotX1Itwa4 zxbUpU`p%P==aF4do{h~YJ{fH%lPwtRpqpi6v1DcDs32)1+fM`nuKygSKwV!O8y4CW z_`9u?opMftN(+$QIj8vg`H6~(W=eXc7p;M40GZT#x1#FePqd3kx^GEYmVsZ@vf z2KX-UF06n3JjXxJmmhedT3lR=mP704=;_SDitLRL3KSwzmFH*ssu{v?<0ds*;W)B% z%SGJTk*$6?v5qEToI!<1sSZV4Cz@ypI%5i->INSs!2Ed@pw{u1%T&W2NbXW~?PA}R zn(BHnWWB>Fqc!`QHxqI>X#3e+kWIf|$-(wbfQH!6gGaRt|fxq2eyy%LIyc(O=?Yt=rdCKvmW?c)S za|wFY#luAoH;r8$GR94miS|Fvt@WZ4yA{~0NKS2p?Vv*kAK?81LrQ{GE$pUgbxHwEu2W<UninLN??{YYL}l{rQsa|JVJqzhmitZm?}ht?~XFrk?A?F`3>2 qeZv2JJ1$r5fu`+QC{t$JC4R(4n%^Y^&k}q@1W=M!lPj082>(B5#mY1Q literal 12238 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 Zr`IaDt=b@N4{W`LJdszGD~3IP^FLM1lA-_r diff --git a/doc/_static/gui_modify_transfo_translation.png b/doc/_static/gui_modify_transfo_translation.png index d503cef04f02ae9980bf69793b24999a8630dbe9..7df8b131e8d5c968ba0c14de368394194b918d84 100644 GIT binary patch literal 7264 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 diff --git a/doc/_static/gui_new_document.png b/doc/_static/gui_new_document.png index a64bfea217f42fc5ea6612a58148b7c30d8780d3..647aec213adf9d31a8b4afedd9ed5ca763fca5c3 100644 GIT binary patch literal 99289 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%0D5s;9=Z#k(30FvFQ1h5zom{eK;-$d>#= zR}+d0dlp4&%ileJ(rTg$oDZ%#?98GxCtbuMPYv&~YwkjXf(T76URJ7_+S}NS)iON* zH?9KdznR`8{nsHGDv81C#J2!fWdnEd`gW`K4F2azU8^mrB&yz;#1TD8PrMG`&dgR6 z(Z4JKlfJkTw~t)Hc54Nn@DXpk>hQb;)D0Mh6n3Y zC3jd^isB-2s;up5Pip%vtbl!ccY6a2H;`jk_}`D1a+fcid~^W)Xf3IruE5O(J)mQP z$T21>yPY4HrEnR6n{)1KaS-08LT~ueuM<5o?kqkM1ltJ6TfFY3yK5#6RuohKVg^*V zqAz@;P>6y}*?u(xzqSx>kPp-*a& zptl1q4*){W#m3xy$1~O9<-}|Mb-lfrL+d*JRRRQ$TIdz1mgk#(Yv$2HUYfF)l@>8` z+fY8nrzvQt8g@B$X>uk@9KK;-$twiZY%Sn3vo}{g z5Et1mynw^(-_^+`H-_ml05iKVmW`>G8fB1mO-IGukw~8*6wl@z{MBPau`X%SrP)x#ZQ2agR1;wrNR5N zmiZf5I)6xn%9uG$(wzPgwqti^asVAKxgK-kPt@B z4ggw50uPvZ3zN^#S?)9T5SfMP*JAvk^D|&}TN>>w-aM(Vo zmRil%#P+_SM{;WMyJMJ;Z@=iyvb)QUHN*OfzCB!h6v3(UwWGLvCh+d&t3hKd5D!C+ zo;glL;sXzc6mbfyWYm(>Cm^6DSQQb}M+N067@H?GpQ^RbeEk!XPZ&3KOX_o41h&mI zYWH`{3nOq_MD?vdnCMc)T9Hd=SXQ)Q+F(?P^5PxZQb%>Q?8RQrr3xWX{KfhuqDNK13?7xw z#JR4b_oebv2%n$`5M*qD>v0qSn36tw+{Rb>N&eP`U++P+&K# zwO;Gi{J@R_MHFbiD`fu1TNwHyY5U7egZN?7kx9f@kHcyENToA}wE1N=xa6wb|3mCf z$I?|MZ1u zx2M^BLHDK2&!1sc6d}KppqEQ)7{KJ8KX6uSmz$rU09K+$uMjOwq&$D0E+AocW57bDb8W2iN_@w;J5(%6oD_^*H z8Ix?fm6a)PK@<#{6PADoE%pk)D%s;+Hh(l+A&N6xG7l20?r-b5H0uOoL~ z+BE#OHR6@bUr?-mYvUfg8@~Kwhgv6RR@qC(SNQd%;p)EMDhci7TI0dQgv)8YPEEk9 zNLT!ui##e?%7W^~IO(XC2;xMZY@s<4_sqz%frMX+OtJ)$1Q9Z?K5*IN%$lxORM+}U zaDW@@uz7=xC2#{*2@ccuG{69@-(gk;5Eeqw%P9*(?@lx}5`Cm8{Zl7_7qWhYwmhsQm=kKDdrNnZ1`aX%L4=G?sNXq9? z$)p=_0Nen5Z}&ZL+^N_`aL{rl{<}AZ3bvbUMbRw)%lt>@Zo$K>z}0gSPGr6_^5@T? zS&5?D4|b&+H9~Tmm11H!-bgOJzY%!XjKL83k;ub4Sgk0tNE8GHx)DIjXlE#yVMiD) z)u)i|;oE1GaUeHk4juLv#_@@X1xO}$#}nAWzgi3|^Tw=BlAH!HM78=EE`a8G#L_}GS5=P)AkE=3pG(BUJu z5`%-kcg5b_%R3edk?Dk_j>OBC{`pOfFZ!MbJS&81?v{HcfzZ4+f#oVReJvLvyf_*) z5IzL&#KIwL2{&G8YMcL@%u0~ZV>-h2*o!9r=2#?p7HiSB<$Ovhx2UkvqSN18S0s+6 zDbpg|sOUQ;&d|!#=@Y2e1L1dv+hqG|Nf~wT?{MjQw@+@B?S@DN(JDV6R)yI~J6au{ zdMJ+n+7@nVwJ$!B=Re%pogFys9^ob5XV!QFpk(DY4tHaemV@2Yk8{)%fhu~+FVY

    2. Oc29Rf+0$X>6~|a0-pp{k7$(^ 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 M1{V6y2#(kP4<={?-v9sr diff --git a/doc/_static/cylgrid6.png b/doc/_static/cylgrid6.png index d9e8b991fd299794d7421d681d16c3dc2b4e73dd..bd9c96a6703b46bf7cefab40cad86cbfdf8b3eb3 100644 GIT binary patch literal 37977 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%0Ddt^^_Ab-~fvteC%o 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 YtG3Oahra&JpdpB=iq?ZtCCiZi4_u`F761SM diff --git a/doc/_static/cylgrids.png b/doc/_static/cylgrids.png index c928af72a558b76149c11b1a6a76214241262602..0af81aa8ada750ad664756c829b8292a8d9836bc 100644 GIT binary patch literal 58733 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 T%O?s26(Aa_Ix1yKR$>1GC-YL3 literal 13539 zcmeHu`9IWO^#7p9Ub19M!=SN5mQjR~Wyac|>^m_SOGH_sWoRrhGe{T}BTM#W24%|@ zqU_9ABH6dH6TUC+@AsehK0cqHUXRCpoqJyQo^$T=p6!LbW30!{BESLyf!GmnZBr14 zfei$rzjKBj7%7wpHqRchCcq8%ouyWG=a!B`qGtv zsZ{=qJ8a8*6Uaok=9p6kUb2jJ~#n_Ri2)UnKnBE`DS->3p7M3Q&DvX?zNMj4~Uc3A1?L`Zv6s*8r{QvR#ZTs zJ7Ty~ptE2+2qdb_1-khHP7iu{76AgC6J-Wn(t^-|v|mC%k!Svw=zp9Dc5A98L7-^A z&;ZKe(#ItW>H70<2p*J*r0I$r?slL3QpY5xvHvH1=i=udhyfD_-5vXqcmX4@azh>= z?=77EU8;wm&H`jn5||^E6HmQrY9NWcjyrYp!)8tIbyaK{76NK}Gofo|BzgMvXQT-3 zRHNHC>#iboKCr0hW8J!uB$5XhvvP~pZI-D+3Ia17MqvUM#U3s|3PkasN9d0K_=LQK zL}q_{A72~Dl?+%eQ#?DR>2oUX_jUan^xlV_;ugo_Hvtx6bR+?NwIc?sV(M_)Iw3v8`GyYU5 zdL>Le>0{2c$)iqQ@e_H#N{r&6YEQn1q6cyac^Po}k%XXjlMCln1K6^3$9wNdA|-LB zN>!lwO55~DdzD=n@&hwq|D`75=BhiCfUl`+MxSS7M>@N2Xmd4YCR2-(@`Ag_NI**I z--`|zL6&ecE;H5Hj9Jv0`lCPFY9dk0`2%&Pa=*&PZ3dbGfrT^SDHR79Fpo5t=i%a3 zf<(`YZ-l(3aQbT**aJdO74o&QGZVo3Ry?(M!0xo5M|SZ;HE8urd1Wb|M-B5-2?3es_n!*O$+2iQuWXnDjN>Ji8B4s}PpHOBkd=?>q%3S(OS z0zi1(n3g9=MX+Gm&mll@er54mb3az>C7}?q4usCnN?%Z?ibzTv5jru@Q9z4{BbNdD zw9PjIr9dH1+wwdS%|DQ_^eN1+c5$&l%=v&0jD|Hw+(K7u*8gT8;Pi($~IC`wtOLZ$0rf zX>gnx#cMgA*XH_R;TouPZ_TWt?uNdUQJ|`N%u$)K=KN(TRYOy_HwI3xQMEqrVfkqf zA?arD9e2GaI%79Qx5g6gGpWmnJ5{Ktx+t*wQ^~YbG5i3T@4d)D7^?l*ut!g9u@q(I zD2nRsZRIo;%R$c4i0W6a6vQhoyj%Migk9dz)ya#T?_l?4mc<`U8(W@pE78XNfLN_AuhP&Lbu38wIYn~p;*D;81djDCHn$Y z2Q8XzT=Vm70l*=5UW2r3ELE;t9lBN;L~p(rK!q=436w8P%lhW>^)(JF%^~(Vz(n{n zVS$l+^`K+#gFMr>*$T{$qDr%hi)iQ*j=k+GjsLp0W3Q{1B|5;5vXPnvqGo`=mPl6