From 4cf07a14111e98e8889620ee7e6371574c31a50c Mon Sep 17 00:00:00 2001 From: vsr Date: Mon, 11 Apr 2022 16:28:01 +0300 Subject: [PATCH] bos #29171 Refactor testing procedure --- CMakeLists.txt | 15 +- CTestTestfileInstall.cmake.in | 29 + doc/CMakeLists.txt | 6 +- doc/examples/0README | 7 + doc/examples/CMakeLists.txt | 56 ++ doc/examples/CTestTestfileInstall.cmake | 32 + doc/examples/MGAdaptTests_without_session.py | 482 +++++++++++ .../examples/a3DmeshOnModified2Dmesh.py | 0 doc/examples/cartesian_algo.py | 108 +++ doc/examples/creating_meshes_ex01.py | 34 + doc/examples/creating_meshes_ex02.py | 62 ++ doc/examples/creating_meshes_ex03.py | 58 ++ doc/examples/creating_meshes_ex04.py | 59 ++ doc/examples/creating_meshes_ex05.py | 58 ++ doc/examples/creating_meshes_ex06.py | 120 +++ doc/examples/creating_meshes_ex07.py | 86 ++ doc/examples/creating_meshes_ex08.py | 59 ++ .../data}/test_01.med | Bin .../data}/test_02.med | Bin .../data}/test_02_bg.med | Bin .../data}/test_04.med | Bin .../data}/test_06.med | Bin .../data}/test_07.med | Bin .../data}/test_08.med | Bin .../data}/test_08_bg.med | Bin .../data}/test_10.med | Bin .../data}/test_11.med | Bin .../data}/test_13.med | Bin .../data}/test_homard_adapt.med | Bin .../data}/tutorial_4.00.med | Bin .../examples => examples/data}/tutorial_4.xao | 0 .../data}/tutorial_5.00.med | Bin .../data}/tutorial_5.fr.med | Bin .../defining_hypotheses_adaptive1d.py | 34 + doc/examples/defining_hypotheses_ex01.py | 43 + doc/examples/defining_hypotheses_ex02.py | 46 ++ doc/examples/defining_hypotheses_ex03.py | 43 + doc/examples/defining_hypotheses_ex04.py | 43 + doc/examples/defining_hypotheses_ex05.py | 43 + doc/examples/defining_hypotheses_ex06.py | 36 + doc/examples/defining_hypotheses_ex07.py | 36 + doc/examples/defining_hypotheses_ex08.py | 63 ++ doc/examples/defining_hypotheses_ex09.py | 51 ++ doc/examples/defining_hypotheses_ex10.py | 81 ++ doc/examples/defining_hypotheses_ex11.py | 37 + doc/examples/defining_hypotheses_ex12.py | 40 + doc/examples/defining_hypotheses_ex13.py | 40 + doc/examples/defining_hypotheses_ex14.py | 31 + doc/examples/defining_hypotheses_ex15.py | 43 + doc/examples/defining_hypotheses_ex16.py | 50 ++ doc/examples/defining_hypotheses_ex17.py | 77 ++ .../defining_hypotheses_len_near_vertex.py | 31 + doc/examples/filters_belong2group.py | 18 + doc/examples/filters_ex01.py | 44 + doc/examples/filters_ex02.py | 9 + doc/examples/filters_ex03.py | 9 + doc/examples/filters_ex04.py | 9 + doc/examples/filters_ex05.py | 9 + doc/examples/filters_ex06.py | 9 + doc/examples/filters_ex07.py | 11 + doc/examples/filters_ex08.py | 9 + doc/examples/filters_ex09.py | 23 + doc/examples/filters_ex10.py | 24 + doc/examples/filters_ex11.py | 12 + doc/examples/filters_ex12.py | 9 + doc/examples/filters_ex13.py | 12 + doc/examples/filters_ex14.py | 10 + doc/examples/filters_ex15.py | 9 + doc/examples/filters_ex16.py | 30 + doc/examples/filters_ex17.py | 25 + doc/examples/filters_ex18.py | 27 + doc/examples/filters_ex19.py | 9 + doc/examples/filters_ex20.py | 9 + doc/examples/filters_ex21.py | 9 + doc/examples/filters_ex22.py | 9 + doc/examples/filters_ex23.py | 9 + doc/examples/filters_ex24.py | 11 + doc/examples/filters_ex25.py | 9 + doc/examples/filters_ex26.py | 9 + doc/examples/filters_ex27.py | 9 + doc/examples/filters_ex28.py | 13 + doc/examples/filters_ex29.py | 9 + doc/examples/filters_ex30.py | 14 + doc/examples/filters_ex31.py | 13 + doc/examples/filters_ex32.py | 9 + doc/examples/filters_ex33.py | 20 + doc/examples/filters_ex34.py | 15 + doc/examples/filters_ex35.py | 18 + doc/examples/filters_ex36.py | 17 + doc/examples/filters_ex37.py | 15 + doc/examples/filters_ex38.py | 15 + doc/examples/filters_ex39.py | 55 ++ doc/examples/filters_node_nb_conn.py | 9 + doc/examples/generate_flat_elements.py | 64 ++ doc/examples/grouping_elements_ex01.py | 70 ++ doc/examples/grouping_elements_ex02.py | 42 + doc/examples/grouping_elements_ex03.py | 44 + doc/examples/grouping_elements_ex04.py | 38 + doc/examples/grouping_elements_ex05.py | 49 ++ doc/examples/grouping_elements_ex06.py | 31 + doc/examples/grouping_elements_ex07.py | 28 + doc/examples/grouping_elements_ex08.py | 27 + doc/examples/grouping_elements_ex09.py | 18 + doc/examples/measurements_ex01.py | 70 ++ doc/examples/measurements_ex02.py | 45 ++ doc/examples/measurements_ex03.py | 77 ++ doc/examples/measurements_ex04.py | 26 + doc/examples/mechanic.py | 86 ++ doc/examples/mesh_3d.py | 104 +++ .../modifying_meshes_cut_triangles.py | 38 + doc/examples/modifying_meshes_ex01.py | 15 + doc/examples/modifying_meshes_ex02.py | 19 + doc/examples/modifying_meshes_ex03.py | 50 ++ doc/examples/modifying_meshes_ex04.py | 12 + doc/examples/modifying_meshes_ex05.py | 12 + doc/examples/modifying_meshes_ex06.py | 15 + doc/examples/modifying_meshes_ex07.py | 12 + doc/examples/modifying_meshes_ex08.py | 16 + doc/examples/modifying_meshes_ex09.py | 34 + doc/examples/modifying_meshes_ex10.py | 60 ++ doc/examples/modifying_meshes_ex11.py | 30 + doc/examples/modifying_meshes_ex12.py | 8 + doc/examples/modifying_meshes_ex13.py | 11 + doc/examples/modifying_meshes_ex15.py | 49 ++ doc/examples/modifying_meshes_ex16.py | 47 ++ doc/examples/modifying_meshes_ex17.py | 46 ++ doc/examples/modifying_meshes_ex18.py | 47 ++ doc/examples/modifying_meshes_ex19.py | 37 + doc/examples/modifying_meshes_ex20.py | 6 + doc/examples/modifying_meshes_ex21.py | 17 + doc/examples/modifying_meshes_ex22.py | 82 ++ doc/examples/modifying_meshes_ex23.py | 174 ++++ doc/examples/modifying_meshes_ex24.py | 17 + doc/examples/modifying_meshes_ex25.py | 137 ++++ doc/examples/modifying_meshes_ex26.py | 51 ++ doc/examples/modifying_meshes_split_vol.py | 20 + doc/examples/notebook_smesh.py | 45 ++ doc/examples/prism_3d_algo.py | 75 ++ doc/examples/quad_medial_axis_algo.py | 32 + doc/examples/quality_controls_defl.py | 43 + doc/examples/quality_controls_ex01.py | 44 + doc/examples/quality_controls_ex02.py | 46 ++ doc/examples/quality_controls_ex03.py | 46 ++ doc/examples/quality_controls_ex04.py | 33 + doc/examples/quality_controls_ex05.py | 51 ++ doc/examples/quality_controls_ex06.py | 75 ++ doc/examples/quality_controls_ex07.py | 26 + doc/examples/quality_controls_ex08.py | 30 + doc/examples/quality_controls_ex09.py | 22 + doc/examples/quality_controls_ex10.py | 20 + doc/examples/quality_controls_ex11.py | 47 ++ doc/examples/quality_controls_ex12.py | 47 ++ doc/examples/quality_controls_ex13.py | 24 + doc/examples/quality_controls_ex14.py | 24 + doc/examples/quality_controls_ex15.py | 24 + doc/examples/quality_controls_ex16.py | 25 + doc/examples/quality_controls_ex17.py | 25 + doc/examples/quality_controls_ex18.py | 24 + doc/examples/quality_controls_ex19.py | 24 + doc/examples/quality_controls_ex20.py | 25 + doc/examples/quality_controls_ex21.py | 26 + doc/examples/quality_controls_ex22.py | 24 + doc/examples/radial_prism_3d_algo.py | 36 + doc/examples/split_biquad.py | 37 + doc/examples/test_homard_adapt.py | 95 +++ doc/examples/test_uniform_refinement.py | 101 +++ doc/examples/tests.set | 199 +++++ doc/examples/transforming_meshes_ex01.py | 9 + doc/examples/transforming_meshes_ex02.py | 12 + doc/examples/transforming_meshes_ex03.py | 33 + doc/examples/transforming_meshes_ex04.py | 8 + doc/examples/transforming_meshes_ex05.py | 21 + doc/examples/transforming_meshes_ex06.py | 84 ++ doc/examples/transforming_meshes_ex07.py | 44 + doc/examples/transforming_meshes_ex08.py | 42 + doc/examples/transforming_meshes_ex09.py | 47 ++ doc/examples/transforming_meshes_ex10.py | 63 ++ doc/examples/transforming_meshes_ex11.py | 89 +++ doc/examples/transforming_meshes_ex12.py | 112 +++ doc/examples/transforming_meshes_ex13.py | 84 ++ doc/examples/use_existing_faces.py | 116 +++ doc/examples/viewing_meshes_ex01.py | 82 ++ doc/examples/viewing_meshes_ex02.py | 51 ++ doc/{salome/gui/SMESH => gui}/CMakeLists.txt | 0 .../gui/SMESH => gui}/collect_mesh_methods.py | 0 doc/{salome/gui/SMESH => gui}/conf.py.in | 0 .../SMESH => gui}/images/2d_from_3d_dlg.png | Bin .../images/2d_from_3d_example.png | Bin .../SMESH => gui}/images/2d_from_3d_ico.png | Bin .../SMESH => gui}/images/2d_from_3d_menu.png | Bin .../images/Clipping_Absolute.png | Bin .../images/Clipping_Relative.png | Bin .../SMESH => gui}/images/Nut_sharp_edges.png | Bin .../SMESH => gui}/images/a-arithmetic1d.png | Bin .../SMESH => gui}/images/a-averagelength.png | Bin .../gui/SMESH => gui}/images/a-clipping2.png | Bin .../SMESH => gui}/images/a-creategroup.png | Bin .../images/a-createpolyhedralvolume.png | Bin .../images/a-cuttingofquadrangles.png | Bin .../SMESH => gui}/images/a-deflection1d.png | Bin .../SMESH => gui}/images/a-filteronfaces.png | Bin .../SMESH => gui}/images/a-geometric1d.png | Bin .../gui/SMESH => gui}/images/a-maxelarea.png | Bin .../SMESH => gui}/images/a-maxelvolume.png | Bin .../gui/SMESH => gui}/images/a-maxsize1d.png | Bin .../SMESH => gui}/images/a-nbsegments1.png | Bin .../SMESH => gui}/images/a-nbsegments2.png | Bin .../SMESH => gui}/images/a-patterntype.png | Bin .../SMESH => gui}/images/a-patterntype1.png | Bin .../SMESH => gui}/images/a-standmeshinfo.png | Bin .../SMESH => gui}/images/a-startendlength.png | Bin .../SMESH => gui}/images/a-transparency.png | Bin .../images/a-unionoftriangles.png | Bin .../SMESH => gui}/images/a-viewgeneral.png | Bin .../SMESH => gui}/images/adaptation_01.png | Bin .../SMESH => gui}/images/adaptation_02.png | Bin .../adaptation_with_homard_advanced.png | Bin .../adaptation_with_homard_arguments.png | Bin ...tation_with_homard_boundary_analytical.png | Bin .../adaptation_with_homard_boundary_cao.png | Bin ...aptation_with_homard_boundary_discrete.png | Bin ...adaptation_with_homard_boundary_groups.png | Bin .../gui/SMESH => gui}/images/adaptive1d.png | Bin .../images/adaptive1d_sample_mesh.png | Bin doc/{salome/gui/SMESH => gui}/images/add.gif | Bin doc/{salome/gui/SMESH => gui}/images/add.png | Bin .../gui/SMESH => gui}/images/add0delement.png | Bin .../SMESH => gui}/images/add_0delement.png | Bin .../gui/SMESH => gui}/images/add_ball.png | Bin .../gui/SMESH => gui}/images/add_edge.png | Bin .../gui/SMESH => gui}/images/add_node.png | Bin .../images/add_node_on_face-dlg.png | Bin .../SMESH => gui}/images/add_node_on_face.png | Bin .../images/add_node_on_segment-dlg.png | Bin .../images/add_node_on_segment.png | Bin .../gui/SMESH => gui}/images/add_polygone.png | Bin .../SMESH => gui}/images/add_polyhedron.png | Bin .../SMESH => gui}/images/add_quadrangle.png | Bin .../gui/SMESH => gui}/images/add_triangle.png | Bin .../gui/SMESH => gui}/images/addball.png | Bin .../gui/SMESH => gui}/images/addedge.png | Bin .../SMESH => gui}/images/addhexahedron.png | Bin .../SMESH => gui}/images/addinfo_group.png | Bin .../gui/SMESH => gui}/images/addinfo_mesh.png | Bin .../SMESH => gui}/images/addinfo_submesh.png | Bin .../gui/SMESH => gui}/images/addnode.png | Bin .../SMESH => gui}/images/addnode_notebook.png | Bin .../gui/SMESH => gui}/images/addpolygon.png | Bin .../SMESH => gui}/images/addquadrangle.png | Bin .../SMESH => gui}/images/addtetrahedron.png | Bin .../gui/SMESH => gui}/images/addtriangle.png | Bin .../images/advanced_mesh_infos.png | Bin .../SMESH => gui}/images/analyticdensity.png | Bin .../SMESH => gui}/images/angle_measure.png | Bin doc/{salome/gui/SMESH => gui}/images/aqt.png | Bin .../SMESH => gui}/images/automaticlength.png | Bin .../SMESH => gui}/images/b-art_end_length.png | Bin .../SMESH => gui}/images/b-erage_length.png | Bin .../gui/SMESH => gui}/images/b-flection1d.png | Bin .../gui/SMESH => gui}/images/b-ithmetic1d.png | Bin .../SMESH => gui}/images/b-mberofsegments.png | Bin .../gui/SMESH => gui}/images/b-mesh_infos.png | Bin .../images/bare_border_faces_smpl.png | Bin .../images/bare_border_volumes_smpl.png | Bin .../gui/SMESH => gui}/images/basic_props.png | Bin .../SMESH => gui}/images/before_clipping.png | Bin .../images/before_clipping_preview.png | Bin .../images/block_renumber_hyp.png | Bin .../gui/SMESH => gui}/images/bnd_box.png | Bin .../SMESH => gui}/images/bnd_box_preview.png | Bin .../SMESH => gui}/images/buildcompound.png | Bin .../images/buildcompound_groups.png | Bin .../SMESH => gui}/images/cartesian3D_hyp.png | Bin .../images/cartesian3D_sphere.png | Bin .../images/cartesian_implement_edge.png | Bin .../images/choose_geom_selection_way.png | Bin .../images/circle_angles_after.png | Bin .../images/circle_simple_after.png | Bin .../images/circle_simple_before.png | Bin .../gui/SMESH => gui}/images/colors_size.png | Bin .../images/connectivity_edge.png | Bin .../images/connectivity_hex_prism.png | Bin .../images/connectivity_hexa.png | Bin .../images/connectivity_penta.png | Bin .../images/connectivity_polygon.png | Bin .../images/connectivity_polyhedron.png | Bin .../images/connectivity_pyramid.png | Bin .../images/connectivity_quad.png | Bin .../images/connectivity_tetra.png | Bin .../images/connectivity_tria.png | Bin .../SMESH => gui}/images/controls_popup.png | Bin .../gui/SMESH => gui}/images/convert.png | Bin .../SMESH => gui}/images/copy_mesh_dlg.png | Bin .../SMESH => gui}/images/copy_mesh_icon.png | Bin .../images/crack_emulation_double_nodes.png | Bin ...rack_emulation_double_nodes_with_elems.png | Bin .../images/create_boundary_1.png | Bin .../images/create_boundary_an_1.png | Bin .../images/create_boundary_an_2.png | Bin .../images/create_boundary_an_3.png | Bin .../images/create_boundary_an_4.png | Bin .../images/create_boundary_an_co_1.png | Bin .../images/create_boundary_an_co_2.png | Bin .../images/create_boundary_an_cy.png | Bin .../images/create_boundary_an_sp.png | Bin .../images/create_boundary_an_to.png | Bin .../images/create_boundary_cao_1.png | Bin .../images/create_boundary_cao_2.png | Bin .../images/create_boundary_di_1.png | Bin .../images/create_boundary_di_2.png | Bin .../images/create_boundary_di_3.png | Bin .../gui/SMESH => gui}/images/create_group.png | Bin .../images/create_groups_from_geometry.png | Bin .../gui/SMESH => gui}/images/creategroup.png | Bin .../images/creategroup_on_filter.png | Bin .../SMESH => gui}/images/createmesh-inv.png | Bin .../SMESH => gui}/images/createmesh-inv2.png | Bin .../SMESH => gui}/images/createmesh-inv3.png | Bin .../gui/SMESH => gui}/images/ctrlinfo.png | Bin .../images/curvi_angles_after.png | Bin .../images/curvi_simple_after.png | Bin .../images/curvi_simple_before.png | Bin .../images/custom_point_marker.png | Bin .../gui/SMESH => gui}/images/cut_groups1.png | Bin .../gui/SMESH => gui}/images/cutgroups.png | Bin .../SMESH => gui}/images/dataset_clipping.png | Bin .../SMESH => gui}/images/deflection_2d.png | Bin .../gui/SMESH => gui}/images/deletegroups.png | Bin .../images/diagonalinversion.png | Bin .../gui/SMESH => gui}/images/dialog.png | Bin .../gui/SMESH => gui}/images/dimgroup_0d.png | Bin .../gui/SMESH => gui}/images/dimgroup_1d.png | Bin .../gui/SMESH => gui}/images/dimgroup_2d.png | Bin .../gui/SMESH => gui}/images/dimgroup_dlg.png | Bin .../gui/SMESH => gui}/images/dimgroup_src.png | Bin .../SMESH => gui}/images/dimgroup_tui1.png | Bin .../images/display_entity_choose_item.png | Bin .../images/display_entity_dlg.png | Bin .../images/distribution_of_layers.png | Bin .../distributionwithanalyticdensity.png | Bin .../images/distributionwithtabledensity.png | Bin .../images/dlg_0D_on_all_nodes.png | Bin .../gui/SMESH => gui}/images/double_faces.png | Bin .../gui/SMESH => gui}/images/double_nodes.png | Bin .../gui/SMESH => gui}/images/duplicate01.png | Bin .../gui/SMESH => gui}/images/duplicate02.png | Bin .../gui/SMESH => gui}/images/duplicate03.png | Bin .../gui/SMESH => gui}/images/duplicate04.png | Bin .../SMESH => gui}/images/duplicate_nodes.png | Bin .../images/edge_wire_3d_after.png | Bin .../images/edge_wire_3d_before.png | Bin .../SMESH => gui}/images/edge_wire_after.png | Bin .../SMESH => gui}/images/edge_wire_before.png | Bin .../gui/SMESH => gui}/images/edit_mesh1.png | Bin .../images/edit_mesh_change_value_hyp.png | Bin .../images/edit_mesh_remove_hyp.png | Bin .../gui/SMESH => gui}/images/editgroup.png | Bin .../SMESH => gui}/images/editing_groups1.png | Bin .../gui/SMESH => gui}/images/elem_info.png | Bin .../gui/SMESH => gui}/images/eleminfo1.png | Bin .../gui/SMESH => gui}/images/eleminfo2.png | Bin .../images/extr_along_wire_after.png | Bin .../images/extr_along_wire_before.png | Bin .../SMESH => gui}/images/extru_rib_segs.png | Bin .../images/extrusion_along_path_dlg.png | Bin .../SMESH => gui}/images/extrusion_box.png | Bin .../SMESH => gui}/images/extrusion_groups.png | Bin .../images/extrusion_groups_res.png | Bin .../images/extrusionalongaline1.png | Bin .../images/extrusionalongaline2.png | Bin .../images/extrusionalongaline3.png | Bin .../images/extrusionbynormal_alongavgnorm.png | Bin .../images/extrusionbynormal_useonly.png | Bin .../images/failed_computation.png | Bin .../images/find_geom_by_mesh_elem.png | Bin .../gui/SMESH => gui}/images/findelement1.png | Bin .../gui/SMESH => gui}/images/findelement2.png | Bin .../gui/SMESH => gui}/images/findelement3.png | Bin .../gui/SMESH => gui}/images/formula1.png | Bin .../gui/SMESH => gui}/images/formula2.png | Bin .../gui/SMESH => gui}/images/formula4.png | Bin .../gui/SMESH => gui}/images/formula5.png | Bin .../SMESH => gui}/images/free_borders1.png | Bin .../gui/SMESH => gui}/images/free_edges.png | Bin .../gui/SMESH => gui}/images/free_faces.png | Bin .../gui/SMESH => gui}/images/free_nodes.png | Bin .../images/ghs3dprl_parameters_basic.png | Bin .../images/groups_by_sharp_edges_dlg.png | Bin .../gui/SMESH => gui}/images/groups_in_OB.png | Bin .../SMESH => gui}/images/hexa_ijk_mesh.png | Bin .../SMESH => gui}/images/hyp_source_edges.png | Bin .../SMESH => gui}/images/hyp_source_faces.png | Bin .../images/hypo_fixedpnt_dlg.png | Bin .../images/hypo_quad_params_1.png | Bin .../images/hypo_quad_params_2.png | Bin .../images/hypo_quad_params_dialog.png | Bin .../hypo_quad_params_dialog_corners.png | Bin .../images/hypo_quad_params_dialog_enf.png | Bin .../images/hypo_quad_params_dialog_vert.png | Bin .../hypo_quad_params_enfnodes_algo1.png | Bin .../hypo_quad_params_enfnodes_algo2.png | Bin .../hypo_quad_params_enfnodes_algo3.png | Bin .../images/hypo_quad_params_res.png | Bin .../images/hypo_quad_params_res_2.png | Bin .../SMESH => gui}/images/hypo_radquad_dlg.png | Bin .../gui/SMESH => gui}/images/hypo_sets.png | Bin .../gui/SMESH => gui}/images/image10.jpg | Bin .../gui/SMESH => gui}/images/image101.png | Bin .../gui/SMESH => gui}/images/image105.gif | Bin .../gui/SMESH => gui}/images/image106.gif | Bin .../gui/SMESH => gui}/images/image120.png | Bin .../gui/SMESH => gui}/images/image121.png | Bin .../gui/SMESH => gui}/images/image122.png | Bin .../gui/SMESH => gui}/images/image123.gif | Bin .../gui/SMESH => gui}/images/image124.gif | Bin .../gui/SMESH => gui}/images/image125.gif | Bin .../gui/SMESH => gui}/images/image126.gif | Bin .../gui/SMESH => gui}/images/image127.gif | Bin .../gui/SMESH => gui}/images/image130.gif | Bin .../gui/SMESH => gui}/images/image131.gif | Bin .../gui/SMESH => gui}/images/image132.gif | Bin .../gui/SMESH => gui}/images/image133.gif | Bin .../gui/SMESH => gui}/images/image134.gif | Bin .../gui/SMESH => gui}/images/image135.gif | Bin .../gui/SMESH => gui}/images/image136.gif | Bin .../gui/SMESH => gui}/images/image137.gif | Bin .../gui/SMESH => gui}/images/image138.gif | Bin .../gui/SMESH => gui}/images/image143.gif | Bin .../gui/SMESH => gui}/images/image144.png | Bin .../gui/SMESH => gui}/images/image145.png | Bin .../gui/SMESH => gui}/images/image146.png | Bin .../gui/SMESH => gui}/images/image147.gif | Bin .../gui/SMESH => gui}/images/image148.gif | Bin .../gui/SMESH => gui}/images/image15.jpg | Bin .../gui/SMESH => gui}/images/image151.gif | Bin .../gui/SMESH => gui}/images/image152.png | Bin .../gui/SMESH => gui}/images/image154.png | Bin .../gui/SMESH => gui}/images/image155.gif | Bin .../gui/SMESH => gui}/images/image156.gif | Bin .../gui/SMESH => gui}/images/image157.gif | Bin .../gui/SMESH => gui}/images/image160.gif | Bin .../gui/SMESH => gui}/images/image161.png | Bin .../gui/SMESH => gui}/images/image22.jpg | Bin .../gui/SMESH => gui}/images/image23.jpg | Bin .../gui/SMESH => gui}/images/image24.gif | Bin .../gui/SMESH => gui}/images/image25.jpg | Bin .../gui/SMESH => gui}/images/image25.png | Bin .../gui/SMESH => gui}/images/image27.jpg | Bin .../gui/SMESH => gui}/images/image28.png | Bin .../gui/SMESH => gui}/images/image30.jpg | Bin .../gui/SMESH => gui}/images/image31.jpg | Bin .../gui/SMESH => gui}/images/image32.jpg | Bin .../gui/SMESH => gui}/images/image32.png | Bin .../gui/SMESH => gui}/images/image33.gif | Bin .../gui/SMESH => gui}/images/image34.png | Bin .../gui/SMESH => gui}/images/image35.png | Bin .../gui/SMESH => gui}/images/image36.jpg | Bin .../gui/SMESH => gui}/images/image36.png | Bin .../gui/SMESH => gui}/images/image37.jpg | Bin .../gui/SMESH => gui}/images/image37.png | Bin .../gui/SMESH => gui}/images/image38.jpg | Bin .../gui/SMESH => gui}/images/image38.png | Bin .../gui/SMESH => gui}/images/image39.png | Bin .../gui/SMESH => gui}/images/image40.png | Bin .../gui/SMESH => gui}/images/image41.gif | Bin .../gui/SMESH => gui}/images/image42.png | Bin .../gui/SMESH => gui}/images/image43.png | Bin .../gui/SMESH => gui}/images/image46.gif | Bin .../gui/SMESH => gui}/images/image49.png | Bin .../gui/SMESH => gui}/images/image5.jpg | Bin .../gui/SMESH => gui}/images/image50.gif | Bin .../gui/SMESH => gui}/images/image51.jpg | Bin .../gui/SMESH => gui}/images/image52.jpg | Bin .../gui/SMESH => gui}/images/image53.gif | Bin .../gui/SMESH => gui}/images/image55.gif | Bin .../gui/SMESH => gui}/images/image56.gif | Bin .../gui/SMESH => gui}/images/image56.jpg | Bin .../gui/SMESH => gui}/images/image58.png | Bin .../gui/SMESH => gui}/images/image59.png | Bin .../gui/SMESH => gui}/images/image63.png | Bin .../gui/SMESH => gui}/images/image64.png | Bin .../gui/SMESH => gui}/images/image67.png | Bin .../gui/SMESH => gui}/images/image7.jpg | Bin .../gui/SMESH => gui}/images/image70.jpg | Bin .../gui/SMESH => gui}/images/image70.png | Bin .../gui/SMESH => gui}/images/image71.jpg | Bin .../gui/SMESH => gui}/images/image71.png | Bin .../gui/SMESH => gui}/images/image74.gif | Bin .../gui/SMESH => gui}/images/image75.jpg | Bin .../gui/SMESH => gui}/images/image76.jpg | Bin .../gui/SMESH => gui}/images/image77.jpg | Bin .../gui/SMESH => gui}/images/image78.jpg | Bin .../gui/SMESH => gui}/images/image79.jpg | Bin .../gui/SMESH => gui}/images/image79.png | Bin .../gui/SMESH => gui}/images/image80.png | Bin .../gui/SMESH => gui}/images/image82.png | Bin .../gui/SMESH => gui}/images/image83.gif | Bin .../gui/SMESH => gui}/images/image84.png | Bin .../gui/SMESH => gui}/images/image86.jpg | Bin .../gui/SMESH => gui}/images/image88.gif | Bin .../gui/SMESH => gui}/images/image88.jpg | Bin .../gui/SMESH => gui}/images/image90.jpg | Bin .../gui/SMESH => gui}/images/image91.png | Bin .../gui/SMESH => gui}/images/image92.jpg | Bin .../gui/SMESH => gui}/images/image92.png | Bin .../gui/SMESH => gui}/images/image93.jpg | Bin .../gui/SMESH => gui}/images/image94.gif | Bin .../gui/SMESH => gui}/images/image94.jpg | Bin .../gui/SMESH => gui}/images/image95.gif | Bin .../gui/SMESH => gui}/images/image95.jpg | Bin .../gui/SMESH => gui}/images/image96.gif | Bin .../gui/SMESH => gui}/images/image96.jpg | Bin .../gui/SMESH => gui}/images/image97.gif | Bin .../gui/SMESH => gui}/images/image97.jpg | Bin .../gui/SMESH => gui}/images/image98.png | Bin .../gui/SMESH => gui}/images/image99.gif | Bin .../gui/SMESH => gui}/images/image_octa12.png | Bin .../images/intersect_groups1.png | Bin .../SMESH => gui}/images/intersectgroups.png | Bin .../gui/SMESH => gui}/images/length-crit.png | Bin .../gui/SMESH => gui}/images/length2d.png | Bin .../SMESH => gui}/images/lengthnearvertex.png | Bin .../gui/SMESH => gui}/images/max_el_area.png | Bin .../images/max_element_length_2d.png | Bin .../images/max_element_length_3d.png | Bin .../gui/SMESH => gui}/images/mergeelems.png | Bin .../SMESH => gui}/images/mergeelems_auto.png | Bin .../SMESH => gui}/images/mergeelems_ico.png | Bin .../gui/SMESH => gui}/images/mergenodes.png | Bin .../SMESH => gui}/images/mergenodes_auto.png | Bin .../SMESH => gui}/images/mergenodes_ico.png | Bin .../SMESH => gui}/images/merging_nodes1.png | Bin .../SMESH => gui}/images/merging_nodes2.png | Bin .../gui/SMESH => gui}/images/mesh_clear.png | Bin .../images/mesh_cylinder_hexa.png | Bin doc/gui/images/mesh_deflection.png | Bin 0 -> 827 bytes .../images/mesh_evaluation_succeed.png | Bin .../SMESH => gui}/images/mesh_fixedpnt.png | Bin .../images/mesh_for_extr_along_path.png | Bin .../images/mesh_node_to_point.png | Bin .../SMESH => gui}/images/mesh_order_123.png | Bin .../images/mesh_order_123_res.png | Bin .../SMESH => gui}/images/mesh_order_213.png | Bin .../images/mesh_order_213_res.png | Bin .../SMESH => gui}/images/mesh_order_321.png | Bin .../images/mesh_order_321_res.png | Bin .../images/mesh_order_no_concurrent.png | Bin .../images/mesh_order_preview.png | Bin .../SMESH => gui}/images/mesh_precompute.png | Bin .../SMESH => gui}/images/mesh_radquad_01.png | Bin .../SMESH => gui}/images/mesh_radquad_02.png | Bin .../images/mesh_split_diag_interactive.png | Bin .../images/mesh_split_face_interactive.png | Bin .../images/meshcomputationfail.png | Bin .../images/meshcomputationsucceed.png | Bin .../SMESH => gui}/images/meshcut_plugin.png | Bin .../images/meshexportgroupwarning.png | Bin .../SMESH => gui}/images/meshexportmesh.png | Bin .../SMESH => gui}/images/meshimportmesh.png | Bin .../gui/SMESH => gui}/images/meshtopass1.png | Bin .../gui/SMESH => gui}/images/meshtopass2.png | Bin .../gui/SMESH => gui}/images/meshtopass3.png | Bin .../images/meshtrianglemergeelem1.png | Bin .../gui/SMESH => gui}/images/min_distance.png | Bin .../images/min_distance_preview.png | Bin .../gui/SMESH => gui}/images/movenodes.png | Bin .../SMESH => gui}/images/moving_nodes1.png | Bin .../SMESH => gui}/images/moving_nodes2.png | Bin .../SMESH => gui}/images/number_of_layers.png | Bin .../SMESH => gui}/images/opengl_clipping.png | Bin .../SMESH => gui}/images/orientaation1.png | Bin .../images/over_constrained_faces.png | Bin .../images/over_constrained_volumes.png | Bin .../gui/SMESH => gui}/images/pattern2d.png | Bin .../SMESH => gui}/images/patternmapping1.png | Bin .../SMESH => gui}/images/patternmapping2.png | Bin .../images/point_marker_widget1.png | Bin .../images/point_marker_widget2.png | Bin .../gui/SMESH => gui}/images/pref21.png | Bin .../gui/SMESH => gui}/images/pref22.png | Bin .../gui/SMESH => gui}/images/pref23.png | Bin .../gui/SMESH => gui}/images/pref24.png | Bin .../SMESH => gui}/images/preview_mesh_1D.png | Bin .../SMESH => gui}/images/preview_mesh_2D.png | Bin .../SMESH => gui}/images/preview_tmp_data.png | Bin .../gui/SMESH => gui}/images/prism_mesh.png | Bin .../SMESH => gui}/images/prism_needs_hyps.png | Bin .../gui/SMESH => gui}/images/prism_ok_ko.png | Bin .../gui/SMESH => gui}/images/prism_stack.png | Bin .../SMESH => gui}/images/prism_tui_sample.png | Bin .../SMESH => gui}/images/projection_1d.png | Bin .../SMESH => gui}/images/projection_2d.png | Bin .../SMESH => gui}/images/projection_3d.png | Bin .../images/propagation_chain.png | Bin .../images/quad_from_ma_medial_axis.png | Bin .../images/quad_from_ma_mesh.png | Bin .../images/quad_from_ma_ring_mesh.png | Bin .../images/quad_mesh_invalid.png | Bin .../gui/SMESH => gui}/images/quad_meshes.png | Bin .../images/radial_prism_mesh.png | Bin .../images/reduce_three_to_one.png | Bin .../gui/SMESH => gui}/images/remove.gif | Bin .../gui/SMESH => gui}/images/remove.png | Bin .../SMESH => gui}/images/remove_elements1.png | Bin .../SMESH => gui}/images/remove_elements2.png | Bin .../images/remove_elements_icon.png | Bin .../images/remove_node_reconnection.png | Bin .../images/remove_node_reconnection_dlg.png | Bin .../images/remove_node_reconnection_icon.png | Bin .../SMESH => gui}/images/remove_nodes1.png | Bin .../SMESH => gui}/images/remove_nodes2.png | Bin .../images/remove_nodes_icon.png | Bin .../images/remove_orphan_nodes_icon.png | Bin .../SMESH => gui}/images/removeelements.png | Bin .../gui/SMESH => gui}/images/removenodes.png | Bin .../images/removeorphannodes.png | Bin .../SMESH => gui}/images/renumberelements.png | Bin .../SMESH => gui}/images/renumbernodes.png | Bin .../SMESH => gui}/images/reorient_2d_face.png | Bin .../images/reorient_2d_point.png | Bin .../images/reorient_2d_refgroup.png | Bin .../images/reorient_2d_volume.png | Bin .../images/reorient_faces_face.png | Bin .../images/reorient_faces_point.png | Bin .../images/reorient_faces_ref_groups.png | Bin .../images/reorient_faces_volume.png | Bin .../images/rev_edges_helper_dlg.png | Bin .../gui/SMESH => gui}/images/revolution1.png | Bin .../SMESH => gui}/images/revolutionsn1.png | Bin .../SMESH => gui}/images/revolutionsn2.png | Bin .../gui/SMESH => gui}/images/rotation.png | Bin .../gui/SMESH => gui}/images/rotation1.png | Bin .../gui/SMESH => gui}/images/rotation2.png | Bin .../gui/SMESH => gui}/images/rotation_ico.png | Bin .../SMESH => gui}/images/scalar_bar_dlg.png | Bin .../gui/SMESH => gui}/images/scale01.png | Bin .../gui/SMESH => gui}/images/scale02.png | Bin .../gui/SMESH => gui}/images/scale03.png | Bin .../gui/SMESH => gui}/images/scale04.png | Bin .../gui/SMESH => gui}/images/scale06.png | Bin .../gui/SMESH => gui}/images/scale07.png | Bin .../gui/SMESH => gui}/images/scale09.png | Bin .../gui/SMESH => gui}/images/scaleinit01.png | Bin .../gui/SMESH => gui}/images/scaleinit02.png | Bin .../gui/SMESH => gui}/images/scaleres03.png | Bin .../gui/SMESH => gui}/images/scaleres04.png | Bin .../gui/SMESH => gui}/images/scaleres06.png | Bin .../gui/SMESH => gui}/images/scaleres07.png | Bin .../gui/SMESH => gui}/images/scaleres09.png | Bin .../images/selectionfilterlibrary.png | Bin .../SMESH => gui}/images/sew_after_merge.png | Bin .../SMESH => gui}/images/sew_using_merge.png | Bin .../gui/SMESH => gui}/images/sewing.png | Bin .../gui/SMESH => gui}/images/sewing1.png | Bin .../gui/SMESH => gui}/images/sewing2.png | Bin .../gui/SMESH => gui}/images/sewing3.png | Bin .../gui/SMESH => gui}/images/sewing4.png | Bin .../gui/SMESH => gui}/images/sewing_auto.png | Bin .../SMESH => gui}/images/sewing_manual.png | Bin .../SMESH => gui}/images/show_bad_mesh.png | Bin .../gui/SMESH => gui}/images/smesh_sort.png | Bin .../images/smesh_sort_groups.png | Bin .../gui/SMESH => gui}/images/smoothing.png | Bin .../gui/SMESH => gui}/images/smoothing1.png | Bin .../gui/SMESH => gui}/images/smoothing2.png | Bin doc/{salome/gui/SMESH => gui}/images/sort.gif | Bin doc/{salome/gui/SMESH => gui}/images/sort.png | Bin .../images/split_biquad_to_linear_dlg.png | Bin .../images/split_biquad_to_linear_icon.png | Bin .../images/split_biquad_to_linear_mesh.png | Bin .../images/split_into_prisms.png | Bin .../SMESH => gui}/images/split_into_tetra.png | Bin .../images/split_into_tetra_icon.png | Bin .../SMESH => gui}/images/std_point_marker.png | Bin .../SMESH => gui}/images/straight_after.png | Bin .../SMESH => gui}/images/straight_before.png | Bin doc/{salome/gui/SMESH => gui}/images/swap.png | Bin .../gui/SMESH => gui}/images/symmetry.png | Bin .../gui/SMESH => gui}/images/symmetry1.png | Bin .../gui/SMESH => gui}/images/symmetry2.png | Bin .../gui/SMESH => gui}/images/symmetry3.png | Bin .../SMESH => gui}/images/topo_equality.png | Bin .../gui/SMESH => gui}/images/translation.png | Bin .../gui/SMESH => gui}/images/translation1.png | Bin .../gui/SMESH => gui}/images/translation2.png | Bin .../SMESH => gui}/images/union_groups1.png | Bin .../gui/SMESH => gui}/images/uniongroups.png | Bin .../images/unionoftwotriangles.png | Bin .../images/uniting_a_set_of_triangles1.png | Bin .../images/uniting_a_set_of_triangles2.png | Bin .../images/uniting_two_triangles1.png | Bin .../images/uniting_two_triangles2.png | Bin .../images/use_existing_face_sample_mesh.png | Bin .../images/using_notebook_smesh.png | Bin .../images/viscous_layers_2d_hyp.png | Bin .../viscous_layers_extrusion_method.png | Bin .../images/viscous_layers_hyp.png | Bin .../images/viscous_layers_mesh.png | Bin .../images/viscous_layers_on_submesh.png | Bin .../SMESH => gui}/input/1d_meshing_hypo.rst | 0 .../SMESH => gui}/input/2d_meshing_hypo.rst | 0 .../SMESH => gui}/input/3d_meshing_hypo.rst | 0 .../SMESH => gui}/input/StdMeshersBuilder.rst | 0 .../gui/SMESH => gui}/input/about_filters.rst | 0 .../gui/SMESH => gui}/input/about_hypo.rst | 0 .../gui/SMESH => gui}/input/about_meshes.rst | 0 doc/gui/input/about_quality_controls.rst | 102 +++ .../gui/SMESH => gui}/input/adaptation.rst | 0 .../SMESH => gui}/input/add_node_on_face.rst | 0 .../input/add_node_on_segment.rst | 0 .../input/adding_nodes_and_elements.rst | 0 .../input/adding_quadratic_elements.rst | 0 .../SMESH => gui}/input/additional_hypo.rst | 0 doc/{salome/gui/SMESH => gui}/input/area.rst | 0 .../gui/SMESH => gui}/input/aspect_ratio.rst | 0 .../SMESH => gui}/input/aspect_ratio_3d.rst | 0 .../SMESH => gui}/input/bare_border_face.rst | 0 .../input/bare_border_volumes.rst | 0 .../input/basic_meshing_algos.rst | 0 .../input/borders_at_multi_connection.rst | 0 .../input/borders_at_multi_connection_2d.rst | 0 .../input/building_compounds.rst | 0 .../SMESH => gui}/input/cartesian_algo.rst | 0 .../changing_orientation_of_elements.rst | 0 .../gui/SMESH => gui}/input/clipping.rst | 0 .../gui/SMESH => gui}/input/colors_size.rst | 0 .../gui/SMESH => gui}/input/connectivity.rst | 0 .../input/constructing_meshes.rst | 0 .../input/constructing_submeshes.rst | 0 .../input/convert_to_from_quadratic_mesh.rst | 0 .../gui/SMESH => gui}/input/copy_mesh.rst | 0 .../input/create_groups_from_geometry.rst | 0 .../SMESH => gui}/input/creating_groups.rst | 0 .../SMESH => gui}/input/cut_mesh_by_plane.rst | 0 .../input/cutting_quadrangles.rst | 0 .../input/define_mesh_by_script.rst | 0 doc/gui/input/deflection_2d.rst | 24 + .../SMESH => gui}/input/deleting_groups.rst | 0 .../input/diagonal_inversion_of_elements.rst | 0 .../SMESH => gui}/input/display_entity.rst | 0 .../gui/SMESH => gui}/input/display_mode.rst | 0 .../input/double_elements_control.rst | 0 .../input/double_nodes_control.rst | 0 .../SMESH => gui}/input/double_nodes_page.rst | 0 .../SMESH => gui}/input/editing_groups.rst | 0 .../SMESH => gui}/input/editing_meshes.rst | 0 .../gui/SMESH => gui}/input/extrusion.rst | 0 .../input/extrusion_along_path.rst | 0 .../input/face_groups_by_sharp_edges.rst | 0 .../input/find_element_by_point.rst | 0 .../gui/SMESH => gui}/input/free_borders.rst | 0 .../gui/SMESH => gui}/input/free_edges.rst | 0 .../gui/SMESH => gui}/input/free_faces.rst | 0 .../gui/SMESH => gui}/input/free_nodes.rst | 0 .../input/generate_flat_elements.rst | 0 .../input/group_of_underlying_elements.rst | 0 .../SMESH => gui}/input/grouping_elements.rst | 0 .../input/homard_create_boundary.rst | 0 .../input/importing_exporting_meshes.rst | 0 doc/{salome/gui/SMESH => gui}/input/index.rst | 0 .../gui/SMESH => gui}/input/length.rst | 0 .../gui/SMESH => gui}/input/length_2d.rst | 0 .../input/make_2dmesh_from_3d.rst | 0 .../input/max_element_length_2d.rst | 0 .../input/max_element_length_3d.rst | 0 .../gui/SMESH => gui}/input/measurements.rst | 0 .../SMESH => gui}/input/merging_elements.rst | 0 .../gui/SMESH => gui}/input/merging_nodes.rst | 0 .../gui/SMESH => gui}/input/mesh_infos.rst | 0 .../SMESH => gui}/input/mesh_preferences.rst | 0 .../input/mesh_through_point.rst | 0 .../gui/SMESH => gui}/input/minimum_angle.rst | 0 .../SMESH => gui}/input/modifying_meshes.rst | 0 .../gui/SMESH => gui}/input/modules.rst | 0 .../gui/SMESH => gui}/input/numbering.rst | 0 .../input/over_constrained_faces.rst | 0 .../input/over_constrained_volumes.rst | 0 .../SMESH => gui}/input/pattern_mapping.rst | 0 .../gui/SMESH => gui}/input/point_marker.rst | 0 .../gui/SMESH => gui}/input/prism_3d_algo.rst | 0 .../SMESH => gui}/input/projection_algos.rst | 0 .../SMESH => gui}/input/quad_from_ma_algo.rst | 0 .../gui/SMESH => gui}/input/quad_ijk_algo.rst | 0 .../SMESH => gui}/input/radial_prism_algo.rst | 0 .../input/radial_quadrangle_1D2D_algo.rst | 0 .../input/removing_nodes_and_elements.rst | 0 .../SMESH => gui}/input/reorient_faces.rst | 0 .../gui/SMESH => gui}/input/revolution.rst | 0 .../gui/SMESH => gui}/input/rotation.rst | 0 .../gui/SMESH => gui}/input/scalar_bar.rst | 0 doc/{salome/gui/SMESH => gui}/input/scale.rst | 0 .../input/segments_around_vertex_algo.rst | 0 .../input/selection_filter_library.rst | 0 .../gui/SMESH => gui}/input/sewing_meshes.rst | 0 doc/{salome/gui/SMESH => gui}/input/skew.rst | 0 .../gui/SMESH => gui}/input/smeshBuilder.rst | 0 .../SMESH => gui}/input/smesh_migration.rst | 0 .../gui/SMESH => gui}/input/smesh_module.rst | 0 doc/gui/input/smeshpy_interface.rst | 111 +++ .../SMESH => gui}/input/smeshstudytools.rst | 0 .../gui/SMESH => gui}/input/smoothing.rst | 0 .../input/split_biquad_to_linear.rst | 0 .../SMESH => gui}/input/split_to_tetra.rst | 0 .../gui/SMESH => gui}/input/symmetry.rst | 0 doc/{salome/gui/SMESH => gui}/input/taper.rst | 0 doc/{salome/gui/SMESH => gui}/input/tools.rst | 0 .../gui/SMESH => gui}/input/translation.rst | 0 .../gui/SMESH => gui}/input/transparency.rst | 0 doc/gui/input/tui_adaptation.rst | 33 + doc/gui/input/tui_creating_meshes.rst | 109 +++ doc/gui/input/tui_defining_hypotheses.rst | 330 ++++++++ doc/gui/input/tui_filters.rst | 749 ++++++++++++++++++ doc/gui/input/tui_grouping_elements.rst | 121 +++ doc/gui/input/tui_measurements.rst | 43 + doc/gui/input/tui_modifying_meshes.rst | 338 ++++++++ doc/gui/input/tui_notebook_smesh.rst | 16 + doc/gui/input/tui_quality_controls.rst | 242 ++++++ doc/gui/input/tui_transforming_meshes.rst | 138 ++++ doc/gui/input/tui_viewing_meshes.rst | 27 + .../input/tui_work_on_objects_from_gui.rst | 0 .../input/uniting_set_of_triangles.rst | 0 .../input/uniting_two_triangles.rst | 0 .../input/use_existing_algos.rst | 0 .../input/using_notebook_smesh_page.rst | 0 .../input/using_operations_on_groups.rst | 0 .../input/viewing_meshes_overview.rst | 0 .../gui/SMESH => gui}/input/volume.rst | 0 .../gui/SMESH => gui}/input/warping.rst | 0 .../locale/fr/LC_MESSAGES/1d_meshing_hypo.po | 0 .../locale/fr/LC_MESSAGES/2d_meshing_hypo.po | 0 .../locale/fr/LC_MESSAGES/about_filters.po | 0 .../locale/fr/LC_MESSAGES/about_hypo.po | 0 .../locale/fr/LC_MESSAGES/about_meshes.po | 0 .../fr/LC_MESSAGES/about_quality_controls.po | 0 .../LC_MESSAGES/adding_nodes_and_elements.po | 0 .../LC_MESSAGES/adding_quadratic_elements.po | 0 .../locale/fr/LC_MESSAGES/additional_hypo.po | 0 .../locale/fr/LC_MESSAGES/area.po | 0 .../locale/fr/LC_MESSAGES/aspect_ratio.po | 0 .../locale/fr/LC_MESSAGES/aspect_ratio_3d.po | 0 .../locale/fr/LC_MESSAGES/bare_border_face.po | 0 .../fr/LC_MESSAGES/bare_border_volumes.po | 0 .../fr/LC_MESSAGES/basic_meshing_algos.po | 0 .../borders_at_multi_connection.po | 0 .../borders_at_multi_connection_2d.po | 0 .../fr/LC_MESSAGES/building_compounds.po | 0 .../locale/fr/LC_MESSAGES/cartesian_algo.po | 0 .../changing_orientation_of_elements.po | 0 .../locale/fr/LC_MESSAGES/clipping.po | 0 .../locale/fr/LC_MESSAGES/colors_size.po | 0 .../locale/fr/LC_MESSAGES/connectivity.po | 0 .../fr/LC_MESSAGES/constructing_meshes.po | 0 .../fr/LC_MESSAGES/constructing_submeshes.po | 0 .../convert_to_from_quadratic_mesh.po | 0 .../locale/fr/LC_MESSAGES/copy_mesh.po | 0 .../create_groups_from_geometry.po | 0 .../locale/fr/LC_MESSAGES/creating_groups.po | 0 .../fr/LC_MESSAGES/cut_mesh_by_plane.po | 0 .../fr/LC_MESSAGES/cutting_quadrangles.po | 0 .../fr/LC_MESSAGES/define_mesh_by_script.po | 0 .../locale/fr/LC_MESSAGES/deleting_groups.po | 0 .../diagonal_inversion_of_elements.po | 0 .../locale/fr/LC_MESSAGES/display_entity.po | 0 .../locale/fr/LC_MESSAGES/display_mode.po | 0 .../fr/LC_MESSAGES/double_elements_control.po | 0 .../fr/LC_MESSAGES/double_nodes_control.po | 0 .../fr/LC_MESSAGES/double_nodes_page.po | 0 .../locale/fr/LC_MESSAGES/editing_groups.po | 0 .../locale/fr/LC_MESSAGES/editing_meshes.po | 0 .../locale/fr/LC_MESSAGES/extrusion.po | 0 .../fr/LC_MESSAGES/extrusion_along_path.po | 0 .../fr/LC_MESSAGES/find_element_by_point.po | 0 .../locale/fr/LC_MESSAGES/free_borders.po | 0 .../locale/fr/LC_MESSAGES/free_edges.po | 0 .../locale/fr/LC_MESSAGES/free_faces.po | 0 .../locale/fr/LC_MESSAGES/free_nodes.po | 0 .../fr/LC_MESSAGES/generate_flat_elements.po | 0 .../group_of_underlying_elements.po | 0 .../fr/LC_MESSAGES/grouping_elements.po | 0 .../LC_MESSAGES/importing_exporting_meshes.po | 0 .../locale/fr/LC_MESSAGES/index.po | 0 .../locale/fr/LC_MESSAGES/introduction.po | 0 .../locale/fr/LC_MESSAGES/length.po | 0 .../locale/fr/LC_MESSAGES/length_2d.po | 0 .../fr/LC_MESSAGES/make_2dmesh_from_3d.po | 0 .../fr/LC_MESSAGES/max_element_length_2d.po | 0 .../fr/LC_MESSAGES/max_element_length_3d.po | 0 .../fr/LC_MESSAGES/max_element_volume_hypo.po | 0 .../locale/fr/LC_MESSAGES/measurements.po | 0 .../locale/fr/LC_MESSAGES/merging_elements.po | 0 .../locale/fr/LC_MESSAGES/merging_nodes.po | 0 .../locale/fr/LC_MESSAGES/mesh_infos.po | 0 .../locale/fr/LC_MESSAGES/mesh_preferences.po | 0 .../fr/LC_MESSAGES/mesh_through_point.po | 0 .../locale/fr/LC_MESSAGES/minimum_angle.po | 0 .../locale/fr/LC_MESSAGES/modifying_meshes.po | 0 .../locale/fr/LC_MESSAGES/modules.po | 0 .../locale/fr/LC_MESSAGES/numbering.po | 0 .../fr/LC_MESSAGES/over_constrained_faces.po | 0 .../LC_MESSAGES/over_constrained_volumes.po | 0 .../locale/fr/LC_MESSAGES/pattern_mapping.po | 0 .../locale/fr/LC_MESSAGES/point_marker.po | 0 .../locale/fr/LC_MESSAGES/prism_3d_algo.po | 0 .../locale/fr/LC_MESSAGES/projection_algos.po | 0 .../locale/fr/LC_MESSAGES/python_api.po | 0 .../fr/LC_MESSAGES/quad_from_ma_algo.po | 0 .../locale/fr/LC_MESSAGES/quad_ijk_algo.po | 0 .../fr/LC_MESSAGES/radial_prism_algo.po | 0 .../radial_quadrangle_1D2D_algo.po | 0 .../removing_nodes_and_elements.po | 0 .../locale/fr/LC_MESSAGES/reorient_faces.po | 0 .../locale/fr/LC_MESSAGES/revolution.po | 0 .../locale/fr/LC_MESSAGES/rotation.po | 0 .../locale/fr/LC_MESSAGES/scalar_bar.po | 0 .../locale/fr/LC_MESSAGES/scale.po | 0 .../segments_around_vertex_algo.po | 0 .../LC_MESSAGES/selection_filter_library.po | 0 .../locale/fr/LC_MESSAGES/sewing_meshes.po | 0 .../locale/fr/LC_MESSAGES/skew.po | 0 .../locale/fr/LC_MESSAGES/smesh_migration.po | 0 .../fr/LC_MESSAGES/smeshpy_interface.po | 0 .../locale/fr/LC_MESSAGES/smoothing.po | 0 .../fr/LC_MESSAGES/split_biquad_to_linear.po | 0 .../locale/fr/LC_MESSAGES/split_to_tetra.po | 0 .../locale/fr/LC_MESSAGES/symmetry.po | 0 .../locale/fr/LC_MESSAGES/taper.po | 0 .../locale/fr/LC_MESSAGES/tools.po | 0 .../locale/fr/LC_MESSAGES/translation.po | 0 .../locale/fr/LC_MESSAGES/transparency.po | 0 .../fr/LC_MESSAGES/tui_cartesian_algo.po | 0 .../fr/LC_MESSAGES/tui_creating_meshes.po | 0 .../fr/LC_MESSAGES/tui_defining_hypotheses.po | 0 .../locale/fr/LC_MESSAGES/tui_filters.po | 0 .../LC_MESSAGES/tui_generate_flat_elements.po | 0 .../fr/LC_MESSAGES/tui_grouping_elements.po | 0 .../locale/fr/LC_MESSAGES/tui_measurements.po | 0 .../fr/LC_MESSAGES/tui_modifying_meshes.po | 0 .../fr/LC_MESSAGES/tui_notebook_smesh.po | 0 .../fr/LC_MESSAGES/tui_prism_3d_algo.po | 0 .../fr/LC_MESSAGES/tui_quality_controls.po | 0 .../fr/LC_MESSAGES/tui_transforming_meshes.po | 0 .../fr/LC_MESSAGES/tui_use_existing_faces.po | 0 .../fr/LC_MESSAGES/tui_viewing_meshes.po | 0 .../tui_work_on_objects_from_gui.po | 0 .../LC_MESSAGES/uniting_set_of_triangles.po | 0 .../fr/LC_MESSAGES/uniting_two_triangles.po | 0 .../fr/LC_MESSAGES/use_existing_algos.po | 0 .../LC_MESSAGES/using_notebook_smesh_page.po | 0 .../LC_MESSAGES/using_operations_on_groups.po | 0 .../fr/LC_MESSAGES/viewing_meshes_overview.po | 0 .../locale/fr/LC_MESSAGES/volume.po | 0 .../locale/fr/LC_MESSAGES/warping.po | 0 .../gui/SMESH => gui}/merge_mesh_class.py | 0 .../gui/SMESH => gui}/static/switchers.js.in | 0 .../gui/SMESH => gui}/templates/layout.html | 0 doc/salome/CMakeLists.txt | 25 - doc/salome/examples/3dmesh.py | 104 --- doc/salome/examples/CMakeLists.txt | 49 -- .../examples/CTestTestfileInstall.cmake | 39 - .../examples/MGAdaptTests_without_session.py | 472 ----------- doc/salome/examples/cartesian_algo.py | 111 --- doc/salome/examples/creating_meshes_ex01.py | 35 - doc/salome/examples/creating_meshes_ex02.py | 66 -- doc/salome/examples/creating_meshes_ex03.py | 59 -- doc/salome/examples/creating_meshes_ex04.py | 60 -- doc/salome/examples/creating_meshes_ex05.py | 58 -- doc/salome/examples/creating_meshes_ex06.py | 120 --- doc/salome/examples/creating_meshes_ex07.py | 85 -- doc/salome/examples/creating_meshes_ex08.py | 59 -- .../defining_hypotheses_adaptive1d.py | 30 - .../examples/defining_hypotheses_ex01.py | 44 - .../examples/defining_hypotheses_ex02.py | 47 -- .../examples/defining_hypotheses_ex03.py | 44 - .../examples/defining_hypotheses_ex04.py | 44 - .../examples/defining_hypotheses_ex05.py | 44 - .../examples/defining_hypotheses_ex06.py | 37 - .../examples/defining_hypotheses_ex07.py | 37 - .../examples/defining_hypotheses_ex08.py | 65 -- .../examples/defining_hypotheses_ex09.py | 52 -- .../examples/defining_hypotheses_ex10.py | 84 -- .../examples/defining_hypotheses_ex11.py | 40 - .../examples/defining_hypotheses_ex12.py | 42 - .../examples/defining_hypotheses_ex13.py | 42 - .../examples/defining_hypotheses_ex14.py | 32 - .../examples/defining_hypotheses_ex15.py | 41 - .../examples/defining_hypotheses_ex16.py | 50 -- .../examples/defining_hypotheses_ex17.py | 77 -- .../defining_hypotheses_len_near_vertex.py | 29 - doc/salome/examples/ex_MakePolyLine.py | 37 - doc/salome/examples/filters_belong2group.py | 19 - doc/salome/examples/filters_ex01.py | 44 - doc/salome/examples/filters_ex02.py | 10 - doc/salome/examples/filters_ex03.py | 8 - doc/salome/examples/filters_ex04.py | 8 - doc/salome/examples/filters_ex05.py | 8 - doc/salome/examples/filters_ex06.py | 8 - doc/salome/examples/filters_ex07.py | 10 - doc/salome/examples/filters_ex08.py | 10 - doc/salome/examples/filters_ex09.py | 21 - doc/salome/examples/filters_ex10.py | 22 - doc/salome/examples/filters_ex11.py | 10 - doc/salome/examples/filters_ex12.py | 8 - doc/salome/examples/filters_ex13.py | 10 - doc/salome/examples/filters_ex14.py | 9 - doc/salome/examples/filters_ex15.py | 7 - doc/salome/examples/filters_ex16.py | 32 - doc/salome/examples/filters_ex17.py | 23 - doc/salome/examples/filters_ex18.py | 25 - doc/salome/examples/filters_ex19.py | 8 - doc/salome/examples/filters_ex20.py | 8 - doc/salome/examples/filters_ex21.py | 8 - doc/salome/examples/filters_ex22.py | 8 - doc/salome/examples/filters_ex23.py | 10 - doc/salome/examples/filters_ex24.py | 12 - doc/salome/examples/filters_ex25.py | 10 - doc/salome/examples/filters_ex26.py | 8 - doc/salome/examples/filters_ex27.py | 8 - doc/salome/examples/filters_ex28.py | 11 - doc/salome/examples/filters_ex29.py | 8 - doc/salome/examples/filters_ex30.py | 12 - doc/salome/examples/filters_ex31.py | 12 - doc/salome/examples/filters_ex32.py | 10 - doc/salome/examples/filters_ex33.py | 20 - doc/salome/examples/filters_ex34.py | 14 - doc/salome/examples/filters_ex35.py | 19 - doc/salome/examples/filters_ex36.py | 17 - doc/salome/examples/filters_ex37.py | 15 - doc/salome/examples/filters_ex38.py | 15 - doc/salome/examples/filters_ex39.py | 53 -- doc/salome/examples/filters_node_nb_conn.py | 9 - doc/salome/examples/generate_flat_elements.py | 65 -- doc/salome/examples/grouping_elements_ex01.py | 80 -- doc/salome/examples/grouping_elements_ex02.py | 46 -- doc/salome/examples/grouping_elements_ex03.py | 49 -- doc/salome/examples/grouping_elements_ex04.py | 45 -- doc/salome/examples/grouping_elements_ex05.py | 55 -- doc/salome/examples/grouping_elements_ex06.py | 37 - doc/salome/examples/grouping_elements_ex07.py | 35 - doc/salome/examples/grouping_elements_ex08.py | 33 - doc/salome/examples/grouping_elements_ex09.py | 16 - doc/salome/examples/measurements_ex01.py | 58 -- doc/salome/examples/measurements_ex02.py | 33 - doc/salome/examples/measurements_ex03.py | 79 -- doc/salome/examples/measurements_ex04.py | 26 - .../modifying_meshes_cut_triangles.py | 36 - doc/salome/examples/modifying_meshes_ex01.py | 16 - doc/salome/examples/modifying_meshes_ex02.py | 20 - doc/salome/examples/modifying_meshes_ex03.py | 52 -- doc/salome/examples/modifying_meshes_ex04.py | 15 - doc/salome/examples/modifying_meshes_ex05.py | 15 - doc/salome/examples/modifying_meshes_ex06.py | 18 - doc/salome/examples/modifying_meshes_ex07.py | 15 - doc/salome/examples/modifying_meshes_ex08.py | 19 - doc/salome/examples/modifying_meshes_ex09.py | 36 - doc/salome/examples/modifying_meshes_ex10.py | 63 -- doc/salome/examples/modifying_meshes_ex11.py | 18 - doc/salome/examples/modifying_meshes_ex12.py | 10 - doc/salome/examples/modifying_meshes_ex13.py | 13 - doc/salome/examples/modifying_meshes_ex14.py | 9 - doc/salome/examples/modifying_meshes_ex15.py | 52 -- doc/salome/examples/modifying_meshes_ex16.py | 54 -- doc/salome/examples/modifying_meshes_ex17.py | 54 -- doc/salome/examples/modifying_meshes_ex18.py | 54 -- doc/salome/examples/modifying_meshes_ex19.py | 45 -- doc/salome/examples/modifying_meshes_ex20.py | 10 - doc/salome/examples/modifying_meshes_ex21.py | 35 - doc/salome/examples/modifying_meshes_ex22.py | 83 -- doc/salome/examples/modifying_meshes_ex23.py | 180 ----- doc/salome/examples/modifying_meshes_ex24.py | 21 - doc/salome/examples/modifying_meshes_ex25.py | 138 ---- doc/salome/examples/modifying_meshes_ex26.py | 53 -- .../examples/modifying_meshes_split_vol.py | 19 - doc/salome/examples/notebook_smesh.py | 47 -- doc/salome/examples/prism_3d_algo.py | 78 -- doc/salome/examples/quad_medial_axis_algo.py | 30 - doc/salome/examples/quality_controls_defl.py | 45 -- doc/salome/examples/quality_controls_ex01.py | 47 -- doc/salome/examples/quality_controls_ex02.py | 49 -- doc/salome/examples/quality_controls_ex03.py | 49 -- doc/salome/examples/quality_controls_ex04.py | 40 - doc/salome/examples/quality_controls_ex05.py | 54 -- doc/salome/examples/quality_controls_ex06.py | 78 -- doc/salome/examples/quality_controls_ex07.py | 29 - doc/salome/examples/quality_controls_ex08.py | 33 - doc/salome/examples/quality_controls_ex09.py | 27 - doc/salome/examples/quality_controls_ex10.py | 25 - doc/salome/examples/quality_controls_ex11.py | 50 -- doc/salome/examples/quality_controls_ex12.py | 50 -- doc/salome/examples/quality_controls_ex13.py | 31 - doc/salome/examples/quality_controls_ex14.py | 31 - doc/salome/examples/quality_controls_ex15.py | 31 - doc/salome/examples/quality_controls_ex16.py | 32 - doc/salome/examples/quality_controls_ex17.py | 32 - doc/salome/examples/quality_controls_ex18.py | 31 - doc/salome/examples/quality_controls_ex19.py | 31 - doc/salome/examples/quality_controls_ex20.py | 32 - doc/salome/examples/quality_controls_ex21.py | 33 - doc/salome/examples/quality_controls_ex22.py | 31 - doc/salome/examples/radial_prism_3d_algo.py | 36 - doc/salome/examples/split_biquad.py | 37 - .../examples/ssl_hdf5_symbols_conflicts.py | 21 - doc/salome/examples/test_homard_adapt.py | 96 --- .../examples/test_uniform_refinement.py | 100 --- doc/salome/examples/tests.py.in | 54 -- doc/salome/examples/tests.set | 216 ----- .../examples/transforming_meshes_ex01.py | 11 - .../examples/transforming_meshes_ex02.py | 16 - .../examples/transforming_meshes_ex03.py | 33 - .../examples/transforming_meshes_ex04.py | 14 - .../examples/transforming_meshes_ex05.py | 24 - .../examples/transforming_meshes_ex06.py | 86 -- .../examples/transforming_meshes_ex07.py | 46 -- .../examples/transforming_meshes_ex08.py | 46 -- .../examples/transforming_meshes_ex09.py | 50 -- .../examples/transforming_meshes_ex10.py | 63 -- .../examples/transforming_meshes_ex11.py | 95 --- .../examples/transforming_meshes_ex12.py | 118 --- .../examples/transforming_meshes_ex13.py | 88 -- doc/salome/examples/use_existing_faces.py | 119 --- doc/salome/examples/viewing_meshes_ex01.py | 83 -- doc/salome/examples/viewing_meshes_ex02.py | 52 -- doc/salome/gui/CMakeLists.txt | 23 - .../SMESH/input/about_quality_controls.rst | 100 --- .../gui/SMESH/input/smeshpy_interface.rst | 111 --- doc/salome/gui/SMESH/input/tui_adaptation.rst | 33 - .../gui/SMESH/input/tui_creating_meshes.rst | 109 --- .../SMESH/input/tui_defining_hypotheses.rst | 330 -------- doc/salome/gui/SMESH/input/tui_filters.rst | 749 ------------------ .../gui/SMESH/input/tui_grouping_elements.rst | 121 --- .../gui/SMESH/input/tui_measurements.rst | 43 - .../gui/SMESH/input/tui_modifying_meshes.rst | 338 -------- .../gui/SMESH/input/tui_notebook_smesh.rst | 16 - .../gui/SMESH/input/tui_quality_controls.rst | 231 ------ .../SMESH/input/tui_transforming_meshes.rst | 138 ---- .../gui/SMESH/input/tui_viewing_meshes.rst | 27 - doc/{salome => }/tui/CMakeLists.txt | 0 doc/{salome => }/tui/doxyfile.in | 0 doc/{salome => }/tui/images/application.gif | Bin doc/{salome => }/tui/images/head.png | Bin doc/{salome => }/tui/images/logocorp.gif | Bin doc/{salome => }/tui/images/smeshscreen.png | Bin doc/{salome => }/tui/input/index.doc | 0 doc/{salome => }/tui/static/footer.html | 0 doc/{salome => }/tui/static/header.html.in | 0 doc/{salome => }/tui/static/salome_extra.css | 0 resources/SalomeApp.xml.in | 3 + src/SMESH_SWIG/CMakeLists.txt | 72 +- src/SMESH_SWIG/SMESH_flight_skin.py | 110 --- src/SMESH_SWIG/SMESH_shared_modules.py | 44 - src/SMESH_SWIG/SMESH_test5.py | 84 -- src/SMESH_SWIG/YACS_geomesh0.py | 192 ----- src/SMESH_SWIG/ex29_refine.py | 235 ------ src/Tools/MacMesh/CMakeLists.txt | 14 +- src/Tools/TopIIVolMeshPlug/CMakeLists.txt | 1 - test/0README | 7 + test/CMakeLists.txt | 38 +- test/CTestTestfileInstall.cmake | 34 + {src/SMESH_SWIG => test}/PAL_MESH_041_mesh.py | 0 {src/SMESH_SWIG => test}/PAL_MESH_043_2D.py | 0 {src/SMESH_SWIG => test}/PAL_MESH_043_3D.py | 0 .../SMESH_AdvancedEditor.py | 0 .../SMESH_SWIG => test}/SMESH_BelongToGeom.py | 0 .../SMESH_BuildCompound.py | 0 .../SMESH_GroupFromGeom.py | 0 .../SMESH_GroupFromGeom2.py | 0 .../SMESH_GroupLyingOnGeom.py | 0 {src/SMESH_SWIG => test}/SMESH_Nut.py | 0 .../SMESH_Partition1_tetra.py | 0 {src/SMESH_SWIG => test}/SMESH_Sphere.py | 0 {src/SMESH_SWIG => test}/SMESH_blocks.py | 0 {src/SMESH_SWIG => test}/SMESH_box.py | 0 {src/SMESH_SWIG => test}/SMESH_box2_tetra.py | 0 {src/SMESH_SWIG => test}/SMESH_box3_tetra.py | 0 {src/SMESH_SWIG => test}/SMESH_box_tetra.py | 0 {src/SMESH_SWIG => test}/SMESH_controls.py | 0 .../SMESH_demo_hexa2_upd.py | 0 {src/SMESH_SWIG => test}/SMESH_fixation.py | 0 .../SMESH_fixation_hexa.py | 0 .../SMESH_fixation_netgen.py | 0 .../SMESH_fixation_tetra.py | 0 test/SMESH_flight_skin.py | 110 +++ {src/SMESH_SWIG => test}/SMESH_freebord.py | 0 {src/SMESH_SWIG => test}/SMESH_hexaedre.py | 0 {src/SMESH_SWIG => test}/SMESH_mechanic.py | 0 .../SMESH_mechanic_editor.py | 0 .../SMESH_mechanic_netgen.py | 0 .../SMESH_mechanic_tetra.py | 0 {src/SMESH_SWIG => test}/SMESH_reg.py | 0 {src/SMESH_SWIG => test}/SMESH_test.py | 0 {src/SMESH_SWIG => test}/SMESH_test0.py | 0 {src/SMESH_SWIG => test}/SMESH_test1.py | 0 .../SMESH_test1_AndDisplay.py | 0 {src/SMESH_SWIG => test}/SMESH_test2.py | 0 {src/SMESH_SWIG => test}/SMESH_test3.py | 0 {src/SMESH_SWIG => test}/SMESH_test4.py | 0 test/SMESH_test5.py | 79 ++ .../basic_geom_smesh_without_session.py | 0 .../basic_shaper_smesh_without_session.py | 0 .../basic_smesh_output_with_mc_field.py | 0 .../blocFissure_01_without_session.py | 0 .../blocFissure_02_without_session.py | 0 .../blocFissure_03_without_session.py | 0 .../blocFissure_04_without_session.py | 0 .../blocFissure_05_without_session.py | 0 .../blocFissure_06_without_session.py | 0 .../blocFissure_07_without_session.py | 0 .../examples => test}/create_penta_biquad.py | 0 .../examples => test/data}/Mesh_tri.med | Bin .../doublenodes_polyhedra.py | 0 {src/SMESH_SWIG => test}/ex00_all.py | 0 {src/SMESH_SWIG => test}/ex01_cube2build.py | 0 .../ex02_cube2primitive.py | 0 .../ex03_cube2partition.py | 0 .../ex04_cube5tetraHexa.py | 0 {src/SMESH_SWIG => test}/ex05_hole1build.py | 0 {src/SMESH_SWIG => test}/ex06_hole1boolean.py | 0 .../ex07_hole1partition.py | 0 {src/SMESH_SWIG => test}/ex08_hole2build.py | 0 {src/SMESH_SWIG => test}/ex09_grid4build.py | 0 .../SMESH_SWIG => test}/ex10_grid4geometry.py | 0 .../ex11_grid3partition.py | 0 .../ex12_grid17partition.py | 0 {src/SMESH_SWIG => test}/ex13_hole1partial.py | 0 {src/SMESH_SWIG => test}/ex14_cyl1holed.py | 0 {src/SMESH_SWIG => test}/ex15_cyl2geometry.py | 0 .../ex16_cyl2complementary.py | 0 {src/SMESH_SWIG => test}/ex17_dome1.py | 0 {src/SMESH_SWIG => test}/ex18_dome2.py | 0 {src/SMESH_SWIG => test}/ex19_sphereINcube.py | 0 {src/SMESH_SWIG => test}/ex21_lamp.py | 0 {src/SMESH_SWIG => test}/ex24_cylinder.py | 0 test/ex29_refine.py | 244 ++++++ {src/SMESH_SWIG => test}/ex30_groupsOp.py | 0 {src/SMESH_SWIG => test}/ex30_tepal.py | 0 {src/SMESH_SWIG => test}/ex31_dimGroup.py | 0 test/ex_MakePolyLine.py | 37 + .../extrusion_penta_biquad.py | 0 .../shaper_smesh_groups_without_session.py | 0 test/ssl_hdf5_symbols_conflicts.py | 24 + .../examples/testme.py => test/test_helper.py | 0 .../test_polyhedron_per_solid.py | 0 .../test_smeshplugin_mg_tetra_parallele.py | 0 .../examples => test}/test_smeshplugins.py | 0 test/tests.set | 133 ++++ 1244 files changed, 10014 insertions(+), 10331 deletions(-) create mode 100644 CTestTestfileInstall.cmake.in create mode 100644 doc/examples/0README create mode 100644 doc/examples/CMakeLists.txt create mode 100644 doc/examples/CTestTestfileInstall.cmake create mode 100644 doc/examples/MGAdaptTests_without_session.py rename doc/{salome => }/examples/a3DmeshOnModified2Dmesh.py (100%) create mode 100644 doc/examples/cartesian_algo.py create mode 100644 doc/examples/creating_meshes_ex01.py create mode 100644 doc/examples/creating_meshes_ex02.py create mode 100644 doc/examples/creating_meshes_ex03.py create mode 100644 doc/examples/creating_meshes_ex04.py create mode 100644 doc/examples/creating_meshes_ex05.py create mode 100644 doc/examples/creating_meshes_ex06.py create mode 100644 doc/examples/creating_meshes_ex07.py create mode 100644 doc/examples/creating_meshes_ex08.py rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_01.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_02.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_02_bg.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_04.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_06.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_07.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_08.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_08_bg.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_10.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_11.med (100%) rename doc/{salome/examples/MGAdapt_med_files => examples/data}/test_13.med (100%) rename doc/{salome/examples => examples/data}/test_homard_adapt.med (100%) rename doc/{salome/examples => examples/data}/tutorial_4.00.med (100%) rename doc/{salome/examples => examples/data}/tutorial_4.xao (100%) rename doc/{salome/examples => examples/data}/tutorial_5.00.med (100%) rename doc/{salome/examples => examples/data}/tutorial_5.fr.med (100%) create mode 100644 doc/examples/defining_hypotheses_adaptive1d.py create mode 100644 doc/examples/defining_hypotheses_ex01.py create mode 100644 doc/examples/defining_hypotheses_ex02.py create mode 100644 doc/examples/defining_hypotheses_ex03.py create mode 100644 doc/examples/defining_hypotheses_ex04.py create mode 100644 doc/examples/defining_hypotheses_ex05.py create mode 100644 doc/examples/defining_hypotheses_ex06.py create mode 100644 doc/examples/defining_hypotheses_ex07.py create mode 100644 doc/examples/defining_hypotheses_ex08.py create mode 100644 doc/examples/defining_hypotheses_ex09.py create mode 100644 doc/examples/defining_hypotheses_ex10.py create mode 100644 doc/examples/defining_hypotheses_ex11.py create mode 100644 doc/examples/defining_hypotheses_ex12.py create mode 100644 doc/examples/defining_hypotheses_ex13.py create mode 100644 doc/examples/defining_hypotheses_ex14.py create mode 100644 doc/examples/defining_hypotheses_ex15.py create mode 100644 doc/examples/defining_hypotheses_ex16.py create mode 100644 doc/examples/defining_hypotheses_ex17.py create mode 100644 doc/examples/defining_hypotheses_len_near_vertex.py create mode 100644 doc/examples/filters_belong2group.py create mode 100644 doc/examples/filters_ex01.py create mode 100644 doc/examples/filters_ex02.py create mode 100644 doc/examples/filters_ex03.py create mode 100644 doc/examples/filters_ex04.py create mode 100644 doc/examples/filters_ex05.py create mode 100644 doc/examples/filters_ex06.py create mode 100644 doc/examples/filters_ex07.py create mode 100644 doc/examples/filters_ex08.py create mode 100644 doc/examples/filters_ex09.py create mode 100644 doc/examples/filters_ex10.py create mode 100644 doc/examples/filters_ex11.py create mode 100644 doc/examples/filters_ex12.py create mode 100644 doc/examples/filters_ex13.py create mode 100644 doc/examples/filters_ex14.py create mode 100644 doc/examples/filters_ex15.py create mode 100644 doc/examples/filters_ex16.py create mode 100644 doc/examples/filters_ex17.py create mode 100644 doc/examples/filters_ex18.py create mode 100644 doc/examples/filters_ex19.py create mode 100644 doc/examples/filters_ex20.py create mode 100644 doc/examples/filters_ex21.py create mode 100644 doc/examples/filters_ex22.py create mode 100644 doc/examples/filters_ex23.py create mode 100644 doc/examples/filters_ex24.py create mode 100644 doc/examples/filters_ex25.py create mode 100644 doc/examples/filters_ex26.py create mode 100644 doc/examples/filters_ex27.py create mode 100644 doc/examples/filters_ex28.py create mode 100644 doc/examples/filters_ex29.py create mode 100644 doc/examples/filters_ex30.py create mode 100644 doc/examples/filters_ex31.py create mode 100644 doc/examples/filters_ex32.py create mode 100644 doc/examples/filters_ex33.py create mode 100644 doc/examples/filters_ex34.py create mode 100644 doc/examples/filters_ex35.py create mode 100644 doc/examples/filters_ex36.py create mode 100644 doc/examples/filters_ex37.py create mode 100644 doc/examples/filters_ex38.py create mode 100644 doc/examples/filters_ex39.py create mode 100644 doc/examples/filters_node_nb_conn.py create mode 100644 doc/examples/generate_flat_elements.py create mode 100644 doc/examples/grouping_elements_ex01.py create mode 100644 doc/examples/grouping_elements_ex02.py create mode 100644 doc/examples/grouping_elements_ex03.py create mode 100644 doc/examples/grouping_elements_ex04.py create mode 100644 doc/examples/grouping_elements_ex05.py create mode 100644 doc/examples/grouping_elements_ex06.py create mode 100644 doc/examples/grouping_elements_ex07.py create mode 100644 doc/examples/grouping_elements_ex08.py create mode 100644 doc/examples/grouping_elements_ex09.py create mode 100644 doc/examples/measurements_ex01.py create mode 100644 doc/examples/measurements_ex02.py create mode 100644 doc/examples/measurements_ex03.py create mode 100644 doc/examples/measurements_ex04.py create mode 100644 doc/examples/mechanic.py create mode 100644 doc/examples/mesh_3d.py create mode 100644 doc/examples/modifying_meshes_cut_triangles.py create mode 100644 doc/examples/modifying_meshes_ex01.py create mode 100644 doc/examples/modifying_meshes_ex02.py create mode 100644 doc/examples/modifying_meshes_ex03.py create mode 100644 doc/examples/modifying_meshes_ex04.py create mode 100644 doc/examples/modifying_meshes_ex05.py create mode 100644 doc/examples/modifying_meshes_ex06.py create mode 100644 doc/examples/modifying_meshes_ex07.py create mode 100644 doc/examples/modifying_meshes_ex08.py create mode 100644 doc/examples/modifying_meshes_ex09.py create mode 100644 doc/examples/modifying_meshes_ex10.py create mode 100644 doc/examples/modifying_meshes_ex11.py create mode 100644 doc/examples/modifying_meshes_ex12.py create mode 100644 doc/examples/modifying_meshes_ex13.py create mode 100644 doc/examples/modifying_meshes_ex15.py create mode 100644 doc/examples/modifying_meshes_ex16.py create mode 100644 doc/examples/modifying_meshes_ex17.py create mode 100644 doc/examples/modifying_meshes_ex18.py create mode 100644 doc/examples/modifying_meshes_ex19.py create mode 100644 doc/examples/modifying_meshes_ex20.py create mode 100644 doc/examples/modifying_meshes_ex21.py create mode 100644 doc/examples/modifying_meshes_ex22.py create mode 100644 doc/examples/modifying_meshes_ex23.py create mode 100644 doc/examples/modifying_meshes_ex24.py create mode 100644 doc/examples/modifying_meshes_ex25.py create mode 100644 doc/examples/modifying_meshes_ex26.py create mode 100644 doc/examples/modifying_meshes_split_vol.py create mode 100644 doc/examples/notebook_smesh.py create mode 100644 doc/examples/prism_3d_algo.py create mode 100644 doc/examples/quad_medial_axis_algo.py create mode 100644 doc/examples/quality_controls_defl.py create mode 100644 doc/examples/quality_controls_ex01.py create mode 100644 doc/examples/quality_controls_ex02.py create mode 100644 doc/examples/quality_controls_ex03.py create mode 100644 doc/examples/quality_controls_ex04.py create mode 100644 doc/examples/quality_controls_ex05.py create mode 100644 doc/examples/quality_controls_ex06.py create mode 100644 doc/examples/quality_controls_ex07.py create mode 100644 doc/examples/quality_controls_ex08.py create mode 100644 doc/examples/quality_controls_ex09.py create mode 100644 doc/examples/quality_controls_ex10.py create mode 100644 doc/examples/quality_controls_ex11.py create mode 100644 doc/examples/quality_controls_ex12.py create mode 100644 doc/examples/quality_controls_ex13.py create mode 100644 doc/examples/quality_controls_ex14.py create mode 100644 doc/examples/quality_controls_ex15.py create mode 100644 doc/examples/quality_controls_ex16.py create mode 100644 doc/examples/quality_controls_ex17.py create mode 100644 doc/examples/quality_controls_ex18.py create mode 100644 doc/examples/quality_controls_ex19.py create mode 100644 doc/examples/quality_controls_ex20.py create mode 100644 doc/examples/quality_controls_ex21.py create mode 100644 doc/examples/quality_controls_ex22.py create mode 100644 doc/examples/radial_prism_3d_algo.py create mode 100644 doc/examples/split_biquad.py create mode 100644 doc/examples/test_homard_adapt.py create mode 100644 doc/examples/test_uniform_refinement.py create mode 100644 doc/examples/tests.set create mode 100644 doc/examples/transforming_meshes_ex01.py create mode 100644 doc/examples/transforming_meshes_ex02.py create mode 100644 doc/examples/transforming_meshes_ex03.py create mode 100644 doc/examples/transforming_meshes_ex04.py create mode 100644 doc/examples/transforming_meshes_ex05.py create mode 100644 doc/examples/transforming_meshes_ex06.py create mode 100644 doc/examples/transforming_meshes_ex07.py create mode 100644 doc/examples/transforming_meshes_ex08.py create mode 100644 doc/examples/transforming_meshes_ex09.py create mode 100644 doc/examples/transforming_meshes_ex10.py create mode 100644 doc/examples/transforming_meshes_ex11.py create mode 100644 doc/examples/transforming_meshes_ex12.py create mode 100644 doc/examples/transforming_meshes_ex13.py create mode 100644 doc/examples/use_existing_faces.py create mode 100644 doc/examples/viewing_meshes_ex01.py create mode 100644 doc/examples/viewing_meshes_ex02.py rename doc/{salome/gui/SMESH => gui}/CMakeLists.txt (100%) rename doc/{salome/gui/SMESH => gui}/collect_mesh_methods.py (100%) rename doc/{salome/gui/SMESH => gui}/conf.py.in (100%) rename doc/{salome/gui/SMESH => gui}/images/2d_from_3d_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/2d_from_3d_example.png (100%) rename doc/{salome/gui/SMESH => gui}/images/2d_from_3d_ico.png (100%) rename doc/{salome/gui/SMESH => gui}/images/2d_from_3d_menu.png (100%) rename doc/{salome/gui/SMESH => gui}/images/Clipping_Absolute.png (100%) rename doc/{salome/gui/SMESH => gui}/images/Clipping_Relative.png (100%) rename doc/{salome/gui/SMESH => gui}/images/Nut_sharp_edges.png (100%) rename doc/{salome/gui/SMESH => gui}/images/a-arithmetic1d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/a-averagelength.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-clipping2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-creategroup.png (100%) rename doc/{salome/gui/SMESH => gui}/images/a-createpolyhedralvolume.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-cuttingofquadrangles.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-deflection1d.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-filteronfaces.png (100%) rename doc/{salome/gui/SMESH => gui}/images/a-geometric1d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/a-maxelarea.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-maxelvolume.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-maxsize1d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/a-nbsegments1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-nbsegments2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/a-patterntype.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-patterntype1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-standmeshinfo.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-startendlength.png (100%) rename doc/{salome/gui/SMESH => gui}/images/a-transparency.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-unionoftriangles.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/a-viewgeneral.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/adaptation_01.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptation_02.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptation_with_homard_advanced.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptation_with_homard_arguments.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptation_with_homard_boundary_analytical.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptation_with_homard_boundary_cao.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptation_with_homard_boundary_discrete.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptation_with_homard_boundary_groups.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptive1d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/adaptive1d_sample_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/add.gif (100%) rename doc/{salome/gui/SMESH => gui}/images/add.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/add0delement.png (100%) rename doc/{salome/gui/SMESH => gui}/images/add_0delement.png (100%) rename doc/{salome/gui/SMESH => gui}/images/add_ball.png (100%) rename doc/{salome/gui/SMESH => gui}/images/add_edge.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/add_node.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/add_node_on_face-dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/add_node_on_face.png (100%) rename doc/{salome/gui/SMESH => gui}/images/add_node_on_segment-dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/add_node_on_segment.png (100%) rename doc/{salome/gui/SMESH => gui}/images/add_polygone.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/add_polyhedron.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/add_quadrangle.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/add_triangle.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/addball.png (100%) rename doc/{salome/gui/SMESH => gui}/images/addedge.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/addhexahedron.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/addinfo_group.png (100%) rename doc/{salome/gui/SMESH => gui}/images/addinfo_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/addinfo_submesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/addnode.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/addnode_notebook.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/addpolygon.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/addquadrangle.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/addtetrahedron.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/addtriangle.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/advanced_mesh_infos.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/analyticdensity.png (100%) rename doc/{salome/gui/SMESH => gui}/images/angle_measure.png (100%) rename doc/{salome/gui/SMESH => gui}/images/aqt.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/automaticlength.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/b-art_end_length.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/b-erage_length.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/b-flection1d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/b-ithmetic1d.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/b-mberofsegments.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/b-mesh_infos.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/bare_border_faces_smpl.png (100%) rename doc/{salome/gui/SMESH => gui}/images/bare_border_volumes_smpl.png (100%) rename doc/{salome/gui/SMESH => gui}/images/basic_props.png (100%) rename doc/{salome/gui/SMESH => gui}/images/before_clipping.png (100%) rename doc/{salome/gui/SMESH => gui}/images/before_clipping_preview.png (100%) rename doc/{salome/gui/SMESH => gui}/images/block_renumber_hyp.png (100%) rename doc/{salome/gui/SMESH => gui}/images/bnd_box.png (100%) rename doc/{salome/gui/SMESH => gui}/images/bnd_box_preview.png (100%) rename doc/{salome/gui/SMESH => gui}/images/buildcompound.png (100%) rename doc/{salome/gui/SMESH => gui}/images/buildcompound_groups.png (100%) rename doc/{salome/gui/SMESH => gui}/images/cartesian3D_hyp.png (100%) rename doc/{salome/gui/SMESH => gui}/images/cartesian3D_sphere.png (100%) rename doc/{salome/gui/SMESH => gui}/images/cartesian_implement_edge.png (100%) rename doc/{salome/gui/SMESH => gui}/images/choose_geom_selection_way.png (100%) rename doc/{salome/gui/SMESH => gui}/images/circle_angles_after.png (100%) rename doc/{salome/gui/SMESH => gui}/images/circle_simple_after.png (100%) rename doc/{salome/gui/SMESH => gui}/images/circle_simple_before.png (100%) rename doc/{salome/gui/SMESH => gui}/images/colors_size.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/connectivity_edge.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_hex_prism.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_hexa.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_penta.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_polygon.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_polyhedron.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_pyramid.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_quad.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_tetra.png (100%) rename doc/{salome/gui/SMESH => gui}/images/connectivity_tria.png (100%) rename doc/{salome/gui/SMESH => gui}/images/controls_popup.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/convert.png (100%) rename doc/{salome/gui/SMESH => gui}/images/copy_mesh_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/copy_mesh_icon.png (100%) rename doc/{salome/gui/SMESH => gui}/images/crack_emulation_double_nodes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/crack_emulation_double_nodes_with_elems.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_3.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_4.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_co_1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_co_2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_cy.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_sp.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_an_to.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_cao_1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_cao_2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_di_1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_di_2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_boundary_di_3.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_group.png (100%) rename doc/{salome/gui/SMESH => gui}/images/create_groups_from_geometry.png (100%) rename doc/{salome/gui/SMESH => gui}/images/creategroup.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/creategroup_on_filter.png (100%) rename doc/{salome/gui/SMESH => gui}/images/createmesh-inv.png (100%) rename doc/{salome/gui/SMESH => gui}/images/createmesh-inv2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/createmesh-inv3.png (100%) rename doc/{salome/gui/SMESH => gui}/images/ctrlinfo.png (100%) rename doc/{salome/gui/SMESH => gui}/images/curvi_angles_after.png (100%) rename doc/{salome/gui/SMESH => gui}/images/curvi_simple_after.png (100%) rename doc/{salome/gui/SMESH => gui}/images/curvi_simple_before.png (100%) rename doc/{salome/gui/SMESH => gui}/images/custom_point_marker.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/cut_groups1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/cutgroups.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/dataset_clipping.png (100%) rename doc/{salome/gui/SMESH => gui}/images/deflection_2d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/deletegroups.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/diagonalinversion.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/dialog.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/dimgroup_0d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/dimgroup_1d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/dimgroup_2d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/dimgroup_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/dimgroup_src.png (100%) rename doc/{salome/gui/SMESH => gui}/images/dimgroup_tui1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/display_entity_choose_item.png (100%) rename doc/{salome/gui/SMESH => gui}/images/display_entity_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/distribution_of_layers.png (100%) rename doc/{salome/gui/SMESH => gui}/images/distributionwithanalyticdensity.png (100%) rename doc/{salome/gui/SMESH => gui}/images/distributionwithtabledensity.png (100%) rename doc/{salome/gui/SMESH => gui}/images/dlg_0D_on_all_nodes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/double_faces.png (100%) rename doc/{salome/gui/SMESH => gui}/images/double_nodes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/duplicate01.png (100%) rename doc/{salome/gui/SMESH => gui}/images/duplicate02.png (100%) rename doc/{salome/gui/SMESH => gui}/images/duplicate03.png (100%) rename doc/{salome/gui/SMESH => gui}/images/duplicate04.png (100%) rename doc/{salome/gui/SMESH => gui}/images/duplicate_nodes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/edge_wire_3d_after.png (100%) rename doc/{salome/gui/SMESH => gui}/images/edge_wire_3d_before.png (100%) rename doc/{salome/gui/SMESH => gui}/images/edge_wire_after.png (100%) rename doc/{salome/gui/SMESH => gui}/images/edge_wire_before.png (100%) rename doc/{salome/gui/SMESH => gui}/images/edit_mesh1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/edit_mesh_change_value_hyp.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/edit_mesh_remove_hyp.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/editgroup.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/editing_groups1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/elem_info.png (100%) rename doc/{salome/gui/SMESH => gui}/images/eleminfo1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/eleminfo2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extr_along_wire_after.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extr_along_wire_before.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extru_rib_segs.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusion_along_path_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusion_box.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusion_groups.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusion_groups_res.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusionalongaline1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusionalongaline2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusionalongaline3.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusionbynormal_alongavgnorm.png (100%) rename doc/{salome/gui/SMESH => gui}/images/extrusionbynormal_useonly.png (100%) rename doc/{salome/gui/SMESH => gui}/images/failed_computation.png (100%) rename doc/{salome/gui/SMESH => gui}/images/find_geom_by_mesh_elem.png (100%) rename doc/{salome/gui/SMESH => gui}/images/findelement1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/findelement2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/findelement3.png (100%) rename doc/{salome/gui/SMESH => gui}/images/formula1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/formula2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/formula4.png (100%) rename doc/{salome/gui/SMESH => gui}/images/formula5.png (100%) rename doc/{salome/gui/SMESH => gui}/images/free_borders1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/free_edges.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/free_faces.png (100%) rename doc/{salome/gui/SMESH => gui}/images/free_nodes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/ghs3dprl_parameters_basic.png (100%) rename doc/{salome/gui/SMESH => gui}/images/groups_by_sharp_edges_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/groups_in_OB.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hexa_ijk_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hyp_source_edges.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hyp_source_faces.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_fixedpnt_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_dialog.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_dialog_corners.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_dialog_enf.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_dialog_vert.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_enfnodes_algo1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_enfnodes_algo2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_enfnodes_algo3.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_res.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_quad_params_res_2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/hypo_radquad_dlg.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/hypo_sets.png (100%) rename doc/{salome/gui/SMESH => gui}/images/image10.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image101.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image105.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image106.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image120.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image121.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image122.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image123.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image124.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image125.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image126.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image127.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image130.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image131.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image132.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image133.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image134.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image135.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image136.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image137.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image138.gif (100%) rename doc/{salome/gui/SMESH => gui}/images/image143.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image144.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image145.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image146.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image147.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image148.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image15.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image151.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image152.png (100%) rename doc/{salome/gui/SMESH => gui}/images/image154.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image155.gif (100%) rename doc/{salome/gui/SMESH => gui}/images/image156.gif (100%) rename doc/{salome/gui/SMESH => gui}/images/image157.gif (100%) rename doc/{salome/gui/SMESH => gui}/images/image160.gif (100%) rename doc/{salome/gui/SMESH => gui}/images/image161.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image22.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image23.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image24.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image25.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image25.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image27.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image28.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image30.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image31.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image32.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image32.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image33.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image34.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image35.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image36.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image36.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image37.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image37.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image38.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image38.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image39.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image40.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image41.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image42.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image43.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image46.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image49.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image5.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image50.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image51.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image52.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image53.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image55.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image56.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image56.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image58.png (100%) rename doc/{salome/gui/SMESH => gui}/images/image59.png (100%) rename doc/{salome/gui/SMESH => gui}/images/image63.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image64.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image67.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image7.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image70.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image70.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image71.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image71.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image74.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image75.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image76.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image77.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image78.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image79.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image79.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image80.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image82.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image83.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image84.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image86.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image88.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image88.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image90.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image91.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image92.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image92.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image93.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image94.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image94.jpg (100%) rename doc/{salome/gui/SMESH => gui}/images/image95.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image95.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image96.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image96.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image97.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image97.jpg (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image98.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image99.gif (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/image_octa12.png (100%) rename doc/{salome/gui/SMESH => gui}/images/intersect_groups1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/intersectgroups.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/length-crit.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/length2d.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/lengthnearvertex.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/max_el_area.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/max_element_length_2d.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/max_element_length_3d.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/mergeelems.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mergeelems_auto.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mergeelems_ico.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/mergenodes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mergenodes_auto.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mergenodes_ico.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/merging_nodes1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/merging_nodes2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_clear.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_cylinder_hexa.png (100%) create mode 100644 doc/gui/images/mesh_deflection.png rename doc/{salome/gui/SMESH => gui}/images/mesh_evaluation_succeed.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/mesh_fixedpnt.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/mesh_for_extr_along_path.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_node_to_point.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_order_123.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_order_123_res.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_order_213.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_order_213_res.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_order_321.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_order_321_res.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_order_no_concurrent.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_order_preview.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_precompute.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_radquad_01.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/mesh_radquad_02.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/mesh_split_diag_interactive.png (100%) rename doc/{salome/gui/SMESH => gui}/images/mesh_split_face_interactive.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshcomputationfail.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshcomputationsucceed.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshcut_plugin.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshexportgroupwarning.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshexportmesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshimportmesh.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/meshtopass1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshtopass2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshtopass3.png (100%) rename doc/{salome/gui/SMESH => gui}/images/meshtrianglemergeelem1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/min_distance.png (100%) rename doc/{salome/gui/SMESH => gui}/images/min_distance_preview.png (100%) rename doc/{salome/gui/SMESH => gui}/images/movenodes.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/moving_nodes1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/moving_nodes2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/number_of_layers.png (100%) rename doc/{salome/gui/SMESH => gui}/images/opengl_clipping.png (100%) rename doc/{salome/gui/SMESH => gui}/images/orientaation1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/over_constrained_faces.png (100%) rename doc/{salome/gui/SMESH => gui}/images/over_constrained_volumes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/pattern2d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/patternmapping1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/patternmapping2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/point_marker_widget1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/point_marker_widget2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/pref21.png (100%) rename doc/{salome/gui/SMESH => gui}/images/pref22.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/pref23.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/pref24.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/preview_mesh_1D.png (100%) rename doc/{salome/gui/SMESH => gui}/images/preview_mesh_2D.png (100%) rename doc/{salome/gui/SMESH => gui}/images/preview_tmp_data.png (100%) rename doc/{salome/gui/SMESH => gui}/images/prism_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/prism_needs_hyps.png (100%) rename doc/{salome/gui/SMESH => gui}/images/prism_ok_ko.png (100%) rename doc/{salome/gui/SMESH => gui}/images/prism_stack.png (100%) rename doc/{salome/gui/SMESH => gui}/images/prism_tui_sample.png (100%) rename doc/{salome/gui/SMESH => gui}/images/projection_1d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/projection_2d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/projection_3d.png (100%) rename doc/{salome/gui/SMESH => gui}/images/propagation_chain.png (100%) rename doc/{salome/gui/SMESH => gui}/images/quad_from_ma_medial_axis.png (100%) rename doc/{salome/gui/SMESH => gui}/images/quad_from_ma_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/quad_from_ma_ring_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/quad_mesh_invalid.png (100%) rename doc/{salome/gui/SMESH => gui}/images/quad_meshes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/radial_prism_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/reduce_three_to_one.png (100%) rename doc/{salome/gui/SMESH => gui}/images/remove.gif (100%) rename doc/{salome/gui/SMESH => gui}/images/remove.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/remove_elements1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/remove_elements2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/remove_elements_icon.png (100%) rename doc/{salome/gui/SMESH => gui}/images/remove_node_reconnection.png (100%) rename doc/{salome/gui/SMESH => gui}/images/remove_node_reconnection_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/remove_node_reconnection_icon.png (100%) rename doc/{salome/gui/SMESH => gui}/images/remove_nodes1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/remove_nodes2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/remove_nodes_icon.png (100%) rename doc/{salome/gui/SMESH => gui}/images/remove_orphan_nodes_icon.png (100%) rename doc/{salome/gui/SMESH => gui}/images/removeelements.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/removenodes.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/removeorphannodes.png (100%) rename doc/{salome/gui/SMESH => gui}/images/renumberelements.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/renumbernodes.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/reorient_2d_face.png (100%) rename doc/{salome/gui/SMESH => gui}/images/reorient_2d_point.png (100%) rename doc/{salome/gui/SMESH => gui}/images/reorient_2d_refgroup.png (100%) rename doc/{salome/gui/SMESH => gui}/images/reorient_2d_volume.png (100%) rename doc/{salome/gui/SMESH => gui}/images/reorient_faces_face.png (100%) rename doc/{salome/gui/SMESH => gui}/images/reorient_faces_point.png (100%) rename doc/{salome/gui/SMESH => gui}/images/reorient_faces_ref_groups.png (100%) rename doc/{salome/gui/SMESH => gui}/images/reorient_faces_volume.png (100%) rename doc/{salome/gui/SMESH => gui}/images/rev_edges_helper_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/revolution1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/revolutionsn1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/revolutionsn2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/rotation.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/rotation1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/rotation2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/rotation_ico.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/scalar_bar_dlg.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/scale01.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scale02.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scale03.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scale04.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scale06.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scale07.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scale09.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scaleinit01.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scaleinit02.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scaleres03.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scaleres04.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scaleres06.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scaleres07.png (100%) rename doc/{salome/gui/SMESH => gui}/images/scaleres09.png (100%) rename doc/{salome/gui/SMESH => gui}/images/selectionfilterlibrary.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/sew_after_merge.png (100%) rename doc/{salome/gui/SMESH => gui}/images/sew_using_merge.png (100%) rename doc/{salome/gui/SMESH => gui}/images/sewing.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/sewing1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/sewing2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/sewing3.png (100%) rename doc/{salome/gui/SMESH => gui}/images/sewing4.png (100%) rename doc/{salome/gui/SMESH => gui}/images/sewing_auto.png (100%) rename doc/{salome/gui/SMESH => gui}/images/sewing_manual.png (100%) rename doc/{salome/gui/SMESH => gui}/images/show_bad_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/smesh_sort.png (100%) rename doc/{salome/gui/SMESH => gui}/images/smesh_sort_groups.png (100%) rename doc/{salome/gui/SMESH => gui}/images/smoothing.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/smoothing1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/smoothing2.png (100%) rename doc/{salome/gui/SMESH => gui}/images/sort.gif (100%) rename doc/{salome/gui/SMESH => gui}/images/sort.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/split_biquad_to_linear_dlg.png (100%) rename doc/{salome/gui/SMESH => gui}/images/split_biquad_to_linear_icon.png (100%) rename doc/{salome/gui/SMESH => gui}/images/split_biquad_to_linear_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/split_into_prisms.png (100%) rename doc/{salome/gui/SMESH => gui}/images/split_into_tetra.png (100%) rename doc/{salome/gui/SMESH => gui}/images/split_into_tetra_icon.png (100%) rename doc/{salome/gui/SMESH => gui}/images/std_point_marker.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/straight_after.png (100%) rename doc/{salome/gui/SMESH => gui}/images/straight_before.png (100%) rename doc/{salome/gui/SMESH => gui}/images/swap.png (100%) rename doc/{salome/gui/SMESH => gui}/images/symmetry.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/symmetry1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/symmetry2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/symmetry3.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/topo_equality.png (100%) rename doc/{salome/gui/SMESH => gui}/images/translation.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/translation1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/translation2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/union_groups1.png (100%) rename doc/{salome/gui/SMESH => gui}/images/uniongroups.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/unionoftwotriangles.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/uniting_a_set_of_triangles1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/uniting_a_set_of_triangles2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/uniting_two_triangles1.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/uniting_two_triangles2.png (100%) mode change 100755 => 100644 rename doc/{salome/gui/SMESH => gui}/images/use_existing_face_sample_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/using_notebook_smesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/viscous_layers_2d_hyp.png (100%) rename doc/{salome/gui/SMESH => gui}/images/viscous_layers_extrusion_method.png (100%) rename doc/{salome/gui/SMESH => gui}/images/viscous_layers_hyp.png (100%) rename doc/{salome/gui/SMESH => gui}/images/viscous_layers_mesh.png (100%) rename doc/{salome/gui/SMESH => gui}/images/viscous_layers_on_submesh.png (100%) rename doc/{salome/gui/SMESH => gui}/input/1d_meshing_hypo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/2d_meshing_hypo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/3d_meshing_hypo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/StdMeshersBuilder.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/about_filters.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/about_hypo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/about_meshes.rst (100%) create mode 100644 doc/gui/input/about_quality_controls.rst rename doc/{salome/gui/SMESH => gui}/input/adaptation.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/add_node_on_face.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/add_node_on_segment.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/adding_nodes_and_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/adding_quadratic_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/additional_hypo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/area.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/aspect_ratio.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/aspect_ratio_3d.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/bare_border_face.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/bare_border_volumes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/basic_meshing_algos.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/borders_at_multi_connection.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/borders_at_multi_connection_2d.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/building_compounds.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/cartesian_algo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/changing_orientation_of_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/clipping.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/colors_size.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/connectivity.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/constructing_meshes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/constructing_submeshes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/convert_to_from_quadratic_mesh.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/copy_mesh.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/create_groups_from_geometry.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/creating_groups.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/cut_mesh_by_plane.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/cutting_quadrangles.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/define_mesh_by_script.rst (100%) create mode 100644 doc/gui/input/deflection_2d.rst rename doc/{salome/gui/SMESH => gui}/input/deleting_groups.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/diagonal_inversion_of_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/display_entity.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/display_mode.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/double_elements_control.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/double_nodes_control.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/double_nodes_page.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/editing_groups.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/editing_meshes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/extrusion.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/extrusion_along_path.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/face_groups_by_sharp_edges.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/find_element_by_point.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/free_borders.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/free_edges.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/free_faces.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/free_nodes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/generate_flat_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/group_of_underlying_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/grouping_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/homard_create_boundary.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/importing_exporting_meshes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/index.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/length.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/length_2d.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/make_2dmesh_from_3d.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/max_element_length_2d.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/max_element_length_3d.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/measurements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/merging_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/merging_nodes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/mesh_infos.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/mesh_preferences.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/mesh_through_point.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/minimum_angle.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/modifying_meshes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/modules.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/numbering.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/over_constrained_faces.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/over_constrained_volumes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/pattern_mapping.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/point_marker.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/prism_3d_algo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/projection_algos.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/quad_from_ma_algo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/quad_ijk_algo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/radial_prism_algo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/radial_quadrangle_1D2D_algo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/removing_nodes_and_elements.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/reorient_faces.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/revolution.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/rotation.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/scalar_bar.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/scale.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/segments_around_vertex_algo.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/selection_filter_library.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/sewing_meshes.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/skew.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/smeshBuilder.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/smesh_migration.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/smesh_module.rst (100%) create mode 100644 doc/gui/input/smeshpy_interface.rst rename doc/{salome/gui/SMESH => gui}/input/smeshstudytools.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/smoothing.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/split_biquad_to_linear.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/split_to_tetra.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/symmetry.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/taper.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/tools.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/translation.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/transparency.rst (100%) create mode 100644 doc/gui/input/tui_adaptation.rst create mode 100644 doc/gui/input/tui_creating_meshes.rst create mode 100644 doc/gui/input/tui_defining_hypotheses.rst create mode 100644 doc/gui/input/tui_filters.rst create mode 100644 doc/gui/input/tui_grouping_elements.rst create mode 100644 doc/gui/input/tui_measurements.rst create mode 100644 doc/gui/input/tui_modifying_meshes.rst create mode 100644 doc/gui/input/tui_notebook_smesh.rst create mode 100644 doc/gui/input/tui_quality_controls.rst create mode 100644 doc/gui/input/tui_transforming_meshes.rst create mode 100644 doc/gui/input/tui_viewing_meshes.rst rename doc/{salome/gui/SMESH => gui}/input/tui_work_on_objects_from_gui.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/uniting_set_of_triangles.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/uniting_two_triangles.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/use_existing_algos.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/using_notebook_smesh_page.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/using_operations_on_groups.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/viewing_meshes_overview.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/volume.rst (100%) rename doc/{salome/gui/SMESH => gui}/input/warping.rst (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/1d_meshing_hypo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/2d_meshing_hypo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/about_filters.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/about_hypo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/about_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/about_quality_controls.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/adding_quadratic_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/additional_hypo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/area.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/aspect_ratio.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/aspect_ratio_3d.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/bare_border_face.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/bare_border_volumes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/basic_meshing_algos.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/borders_at_multi_connection.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/building_compounds.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/cartesian_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/clipping.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/colors_size.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/connectivity.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/constructing_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/constructing_submeshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/copy_mesh.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/create_groups_from_geometry.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/creating_groups.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/cutting_quadrangles.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/define_mesh_by_script.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/deleting_groups.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/display_entity.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/display_mode.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/double_elements_control.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/double_nodes_control.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/double_nodes_page.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/editing_groups.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/editing_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/extrusion.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/extrusion_along_path.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/find_element_by_point.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/free_borders.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/free_edges.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/free_faces.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/free_nodes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/generate_flat_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/group_of_underlying_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/grouping_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/importing_exporting_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/index.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/introduction.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/length.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/length_2d.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/max_element_length_2d.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/max_element_length_3d.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/max_element_volume_hypo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/measurements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/merging_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/merging_nodes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/mesh_infos.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/mesh_preferences.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/mesh_through_point.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/minimum_angle.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/modifying_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/modules.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/numbering.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/over_constrained_faces.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/over_constrained_volumes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/pattern_mapping.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/point_marker.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/prism_3d_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/projection_algos.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/python_api.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/quad_from_ma_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/quad_ijk_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/radial_prism_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/reorient_faces.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/revolution.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/rotation.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/scalar_bar.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/scale.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/selection_filter_library.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/sewing_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/skew.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/smesh_migration.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/smeshpy_interface.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/smoothing.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/split_biquad_to_linear.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/split_to_tetra.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/symmetry.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/taper.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tools.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/translation.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/transparency.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_cartesian_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_creating_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_filters.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_grouping_elements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_measurements.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_modifying_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_notebook_smesh.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_quality_controls.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_transforming_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_use_existing_faces.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_viewing_meshes.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/uniting_two_triangles.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/use_existing_algos.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/using_operations_on_groups.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/viewing_meshes_overview.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/volume.po (100%) rename doc/{salome/gui/SMESH => gui}/locale/fr/LC_MESSAGES/warping.po (100%) rename doc/{salome/gui/SMESH => gui}/merge_mesh_class.py (100%) rename doc/{salome/gui/SMESH => gui}/static/switchers.js.in (100%) rename doc/{salome/gui/SMESH => gui}/templates/layout.html (100%) delete mode 100644 doc/salome/CMakeLists.txt delete mode 100644 doc/salome/examples/3dmesh.py delete mode 100644 doc/salome/examples/CMakeLists.txt delete mode 100644 doc/salome/examples/CTestTestfileInstall.cmake delete mode 100644 doc/salome/examples/MGAdaptTests_without_session.py delete mode 100644 doc/salome/examples/cartesian_algo.py delete mode 100644 doc/salome/examples/creating_meshes_ex01.py delete mode 100644 doc/salome/examples/creating_meshes_ex02.py delete mode 100644 doc/salome/examples/creating_meshes_ex03.py delete mode 100644 doc/salome/examples/creating_meshes_ex04.py delete mode 100644 doc/salome/examples/creating_meshes_ex05.py delete mode 100644 doc/salome/examples/creating_meshes_ex06.py delete mode 100644 doc/salome/examples/creating_meshes_ex07.py delete mode 100644 doc/salome/examples/creating_meshes_ex08.py delete mode 100644 doc/salome/examples/defining_hypotheses_adaptive1d.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex01.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex02.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex03.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex04.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex05.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex06.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex07.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex08.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex09.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex10.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex11.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex12.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex13.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex14.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex15.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex16.py delete mode 100644 doc/salome/examples/defining_hypotheses_ex17.py delete mode 100644 doc/salome/examples/defining_hypotheses_len_near_vertex.py delete mode 100644 doc/salome/examples/ex_MakePolyLine.py delete mode 100644 doc/salome/examples/filters_belong2group.py delete mode 100644 doc/salome/examples/filters_ex01.py delete mode 100644 doc/salome/examples/filters_ex02.py delete mode 100644 doc/salome/examples/filters_ex03.py delete mode 100644 doc/salome/examples/filters_ex04.py delete mode 100644 doc/salome/examples/filters_ex05.py delete mode 100644 doc/salome/examples/filters_ex06.py delete mode 100644 doc/salome/examples/filters_ex07.py delete mode 100644 doc/salome/examples/filters_ex08.py delete mode 100644 doc/salome/examples/filters_ex09.py delete mode 100644 doc/salome/examples/filters_ex10.py delete mode 100644 doc/salome/examples/filters_ex11.py delete mode 100644 doc/salome/examples/filters_ex12.py delete mode 100644 doc/salome/examples/filters_ex13.py delete mode 100644 doc/salome/examples/filters_ex14.py delete mode 100644 doc/salome/examples/filters_ex15.py delete mode 100644 doc/salome/examples/filters_ex16.py delete mode 100644 doc/salome/examples/filters_ex17.py delete mode 100644 doc/salome/examples/filters_ex18.py delete mode 100644 doc/salome/examples/filters_ex19.py delete mode 100644 doc/salome/examples/filters_ex20.py delete mode 100644 doc/salome/examples/filters_ex21.py delete mode 100644 doc/salome/examples/filters_ex22.py delete mode 100644 doc/salome/examples/filters_ex23.py delete mode 100644 doc/salome/examples/filters_ex24.py delete mode 100644 doc/salome/examples/filters_ex25.py delete mode 100644 doc/salome/examples/filters_ex26.py delete mode 100644 doc/salome/examples/filters_ex27.py delete mode 100644 doc/salome/examples/filters_ex28.py delete mode 100644 doc/salome/examples/filters_ex29.py delete mode 100644 doc/salome/examples/filters_ex30.py delete mode 100644 doc/salome/examples/filters_ex31.py delete mode 100644 doc/salome/examples/filters_ex32.py delete mode 100644 doc/salome/examples/filters_ex33.py delete mode 100644 doc/salome/examples/filters_ex34.py delete mode 100644 doc/salome/examples/filters_ex35.py delete mode 100644 doc/salome/examples/filters_ex36.py delete mode 100644 doc/salome/examples/filters_ex37.py delete mode 100644 doc/salome/examples/filters_ex38.py delete mode 100644 doc/salome/examples/filters_ex39.py delete mode 100644 doc/salome/examples/filters_node_nb_conn.py delete mode 100644 doc/salome/examples/generate_flat_elements.py delete mode 100644 doc/salome/examples/grouping_elements_ex01.py delete mode 100644 doc/salome/examples/grouping_elements_ex02.py delete mode 100644 doc/salome/examples/grouping_elements_ex03.py delete mode 100644 doc/salome/examples/grouping_elements_ex04.py delete mode 100644 doc/salome/examples/grouping_elements_ex05.py delete mode 100644 doc/salome/examples/grouping_elements_ex06.py delete mode 100644 doc/salome/examples/grouping_elements_ex07.py delete mode 100644 doc/salome/examples/grouping_elements_ex08.py delete mode 100644 doc/salome/examples/grouping_elements_ex09.py delete mode 100644 doc/salome/examples/measurements_ex01.py delete mode 100644 doc/salome/examples/measurements_ex02.py delete mode 100644 doc/salome/examples/measurements_ex03.py delete mode 100644 doc/salome/examples/measurements_ex04.py delete mode 100644 doc/salome/examples/modifying_meshes_cut_triangles.py delete mode 100644 doc/salome/examples/modifying_meshes_ex01.py delete mode 100644 doc/salome/examples/modifying_meshes_ex02.py delete mode 100644 doc/salome/examples/modifying_meshes_ex03.py delete mode 100644 doc/salome/examples/modifying_meshes_ex04.py delete mode 100644 doc/salome/examples/modifying_meshes_ex05.py delete mode 100644 doc/salome/examples/modifying_meshes_ex06.py delete mode 100644 doc/salome/examples/modifying_meshes_ex07.py delete mode 100644 doc/salome/examples/modifying_meshes_ex08.py delete mode 100644 doc/salome/examples/modifying_meshes_ex09.py delete mode 100644 doc/salome/examples/modifying_meshes_ex10.py delete mode 100644 doc/salome/examples/modifying_meshes_ex11.py delete mode 100644 doc/salome/examples/modifying_meshes_ex12.py delete mode 100644 doc/salome/examples/modifying_meshes_ex13.py delete mode 100644 doc/salome/examples/modifying_meshes_ex14.py delete mode 100644 doc/salome/examples/modifying_meshes_ex15.py delete mode 100644 doc/salome/examples/modifying_meshes_ex16.py delete mode 100644 doc/salome/examples/modifying_meshes_ex17.py delete mode 100644 doc/salome/examples/modifying_meshes_ex18.py delete mode 100644 doc/salome/examples/modifying_meshes_ex19.py delete mode 100644 doc/salome/examples/modifying_meshes_ex20.py delete mode 100644 doc/salome/examples/modifying_meshes_ex21.py delete mode 100644 doc/salome/examples/modifying_meshes_ex22.py delete mode 100644 doc/salome/examples/modifying_meshes_ex23.py delete mode 100644 doc/salome/examples/modifying_meshes_ex24.py delete mode 100644 doc/salome/examples/modifying_meshes_ex25.py delete mode 100644 doc/salome/examples/modifying_meshes_ex26.py delete mode 100644 doc/salome/examples/modifying_meshes_split_vol.py delete mode 100644 doc/salome/examples/notebook_smesh.py delete mode 100644 doc/salome/examples/prism_3d_algo.py delete mode 100644 doc/salome/examples/quad_medial_axis_algo.py delete mode 100644 doc/salome/examples/quality_controls_defl.py delete mode 100644 doc/salome/examples/quality_controls_ex01.py delete mode 100644 doc/salome/examples/quality_controls_ex02.py delete mode 100644 doc/salome/examples/quality_controls_ex03.py delete mode 100644 doc/salome/examples/quality_controls_ex04.py delete mode 100644 doc/salome/examples/quality_controls_ex05.py delete mode 100644 doc/salome/examples/quality_controls_ex06.py delete mode 100644 doc/salome/examples/quality_controls_ex07.py delete mode 100644 doc/salome/examples/quality_controls_ex08.py delete mode 100644 doc/salome/examples/quality_controls_ex09.py delete mode 100644 doc/salome/examples/quality_controls_ex10.py delete mode 100644 doc/salome/examples/quality_controls_ex11.py delete mode 100644 doc/salome/examples/quality_controls_ex12.py delete mode 100644 doc/salome/examples/quality_controls_ex13.py delete mode 100644 doc/salome/examples/quality_controls_ex14.py delete mode 100644 doc/salome/examples/quality_controls_ex15.py delete mode 100644 doc/salome/examples/quality_controls_ex16.py delete mode 100644 doc/salome/examples/quality_controls_ex17.py delete mode 100644 doc/salome/examples/quality_controls_ex18.py delete mode 100644 doc/salome/examples/quality_controls_ex19.py delete mode 100644 doc/salome/examples/quality_controls_ex20.py delete mode 100644 doc/salome/examples/quality_controls_ex21.py delete mode 100644 doc/salome/examples/quality_controls_ex22.py delete mode 100644 doc/salome/examples/radial_prism_3d_algo.py delete mode 100644 doc/salome/examples/split_biquad.py delete mode 100644 doc/salome/examples/ssl_hdf5_symbols_conflicts.py delete mode 100644 doc/salome/examples/test_homard_adapt.py delete mode 100644 doc/salome/examples/test_uniform_refinement.py delete mode 100644 doc/salome/examples/tests.py.in delete mode 100644 doc/salome/examples/tests.set delete mode 100644 doc/salome/examples/transforming_meshes_ex01.py delete mode 100644 doc/salome/examples/transforming_meshes_ex02.py delete mode 100644 doc/salome/examples/transforming_meshes_ex03.py delete mode 100644 doc/salome/examples/transforming_meshes_ex04.py delete mode 100644 doc/salome/examples/transforming_meshes_ex05.py delete mode 100644 doc/salome/examples/transforming_meshes_ex06.py delete mode 100644 doc/salome/examples/transforming_meshes_ex07.py delete mode 100644 doc/salome/examples/transforming_meshes_ex08.py delete mode 100644 doc/salome/examples/transforming_meshes_ex09.py delete mode 100644 doc/salome/examples/transforming_meshes_ex10.py delete mode 100644 doc/salome/examples/transforming_meshes_ex11.py delete mode 100644 doc/salome/examples/transforming_meshes_ex12.py delete mode 100644 doc/salome/examples/transforming_meshes_ex13.py delete mode 100644 doc/salome/examples/use_existing_faces.py delete mode 100644 doc/salome/examples/viewing_meshes_ex01.py delete mode 100644 doc/salome/examples/viewing_meshes_ex02.py delete mode 100644 doc/salome/gui/CMakeLists.txt delete mode 100644 doc/salome/gui/SMESH/input/about_quality_controls.rst delete mode 100644 doc/salome/gui/SMESH/input/smeshpy_interface.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_adaptation.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_creating_meshes.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_filters.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_grouping_elements.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_measurements.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_modifying_meshes.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_notebook_smesh.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_quality_controls.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_transforming_meshes.rst delete mode 100644 doc/salome/gui/SMESH/input/tui_viewing_meshes.rst rename doc/{salome => }/tui/CMakeLists.txt (100%) rename doc/{salome => }/tui/doxyfile.in (100%) rename doc/{salome => }/tui/images/application.gif (100%) rename doc/{salome => }/tui/images/head.png (100%) rename doc/{salome => }/tui/images/logocorp.gif (100%) rename doc/{salome => }/tui/images/smeshscreen.png (100%) rename doc/{salome => }/tui/input/index.doc (100%) rename doc/{salome => }/tui/static/footer.html (100%) rename doc/{salome => }/tui/static/header.html.in (100%) rename doc/{salome => }/tui/static/salome_extra.css (100%) delete mode 100644 src/SMESH_SWIG/SMESH_flight_skin.py delete mode 100644 src/SMESH_SWIG/SMESH_shared_modules.py delete mode 100644 src/SMESH_SWIG/SMESH_test5.py delete mode 100644 src/SMESH_SWIG/YACS_geomesh0.py delete mode 100644 src/SMESH_SWIG/ex29_refine.py create mode 100644 test/0README create mode 100644 test/CTestTestfileInstall.cmake rename {src/SMESH_SWIG => test}/PAL_MESH_041_mesh.py (100%) rename {src/SMESH_SWIG => test}/PAL_MESH_043_2D.py (100%) rename {src/SMESH_SWIG => test}/PAL_MESH_043_3D.py (100%) rename {src/SMESH_SWIG => test}/SMESH_AdvancedEditor.py (100%) rename {src/SMESH_SWIG => test}/SMESH_BelongToGeom.py (100%) rename {src/SMESH_SWIG => test}/SMESH_BuildCompound.py (100%) rename {src/SMESH_SWIG => test}/SMESH_GroupFromGeom.py (100%) rename {src/SMESH_SWIG => test}/SMESH_GroupFromGeom2.py (100%) rename {src/SMESH_SWIG => test}/SMESH_GroupLyingOnGeom.py (100%) rename {src/SMESH_SWIG => test}/SMESH_Nut.py (100%) rename {src/SMESH_SWIG => test}/SMESH_Partition1_tetra.py (100%) rename {src/SMESH_SWIG => test}/SMESH_Sphere.py (100%) rename {src/SMESH_SWIG => test}/SMESH_blocks.py (100%) rename {src/SMESH_SWIG => test}/SMESH_box.py (100%) rename {src/SMESH_SWIG => test}/SMESH_box2_tetra.py (100%) rename {src/SMESH_SWIG => test}/SMESH_box3_tetra.py (100%) rename {src/SMESH_SWIG => test}/SMESH_box_tetra.py (100%) rename {src/SMESH_SWIG => test}/SMESH_controls.py (100%) rename {src/SMESH_SWIG => test}/SMESH_demo_hexa2_upd.py (100%) rename {src/SMESH_SWIG => test}/SMESH_fixation.py (100%) rename {src/SMESH_SWIG => test}/SMESH_fixation_hexa.py (100%) rename {src/SMESH_SWIG => test}/SMESH_fixation_netgen.py (100%) rename {src/SMESH_SWIG => test}/SMESH_fixation_tetra.py (100%) create mode 100644 test/SMESH_flight_skin.py rename {src/SMESH_SWIG => test}/SMESH_freebord.py (100%) rename {src/SMESH_SWIG => test}/SMESH_hexaedre.py (100%) rename {src/SMESH_SWIG => test}/SMESH_mechanic.py (100%) rename {src/SMESH_SWIG => test}/SMESH_mechanic_editor.py (100%) rename {src/SMESH_SWIG => test}/SMESH_mechanic_netgen.py (100%) rename {src/SMESH_SWIG => test}/SMESH_mechanic_tetra.py (100%) rename {src/SMESH_SWIG => test}/SMESH_reg.py (100%) rename {src/SMESH_SWIG => test}/SMESH_test.py (100%) rename {src/SMESH_SWIG => test}/SMESH_test0.py (100%) rename {src/SMESH_SWIG => test}/SMESH_test1.py (100%) rename {src/SMESH_SWIG => test}/SMESH_test1_AndDisplay.py (100%) rename {src/SMESH_SWIG => test}/SMESH_test2.py (100%) rename {src/SMESH_SWIG => test}/SMESH_test3.py (100%) rename {src/SMESH_SWIG => test}/SMESH_test4.py (100%) create mode 100644 test/SMESH_test5.py rename {doc/salome/examples => test}/basic_geom_smesh_without_session.py (100%) rename {doc/salome/examples => test}/basic_shaper_smesh_without_session.py (100%) rename {doc/salome/examples => test}/basic_smesh_output_with_mc_field.py (100%) rename {doc/salome/examples => test}/blocFissure_01_without_session.py (100%) rename {doc/salome/examples => test}/blocFissure_02_without_session.py (100%) rename {doc/salome/examples => test}/blocFissure_03_without_session.py (100%) rename {doc/salome/examples => test}/blocFissure_04_without_session.py (100%) rename {doc/salome/examples => test}/blocFissure_05_without_session.py (100%) rename {doc/salome/examples => test}/blocFissure_06_without_session.py (100%) rename {doc/salome/examples => test}/blocFissure_07_without_session.py (100%) rename {doc/salome/examples => test}/create_penta_biquad.py (100%) rename {doc/salome/examples => test/data}/Mesh_tri.med (100%) rename {doc/salome/examples => test}/doublenodes_polyhedra.py (100%) rename {src/SMESH_SWIG => test}/ex00_all.py (100%) rename {src/SMESH_SWIG => test}/ex01_cube2build.py (100%) rename {src/SMESH_SWIG => test}/ex02_cube2primitive.py (100%) rename {src/SMESH_SWIG => test}/ex03_cube2partition.py (100%) rename {src/SMESH_SWIG => test}/ex04_cube5tetraHexa.py (100%) rename {src/SMESH_SWIG => test}/ex05_hole1build.py (100%) rename {src/SMESH_SWIG => test}/ex06_hole1boolean.py (100%) rename {src/SMESH_SWIG => test}/ex07_hole1partition.py (100%) rename {src/SMESH_SWIG => test}/ex08_hole2build.py (100%) rename {src/SMESH_SWIG => test}/ex09_grid4build.py (100%) rename {src/SMESH_SWIG => test}/ex10_grid4geometry.py (100%) rename {src/SMESH_SWIG => test}/ex11_grid3partition.py (100%) rename {src/SMESH_SWIG => test}/ex12_grid17partition.py (100%) rename {src/SMESH_SWIG => test}/ex13_hole1partial.py (100%) rename {src/SMESH_SWIG => test}/ex14_cyl1holed.py (100%) rename {src/SMESH_SWIG => test}/ex15_cyl2geometry.py (100%) rename {src/SMESH_SWIG => test}/ex16_cyl2complementary.py (100%) rename {src/SMESH_SWIG => test}/ex17_dome1.py (100%) rename {src/SMESH_SWIG => test}/ex18_dome2.py (100%) rename {src/SMESH_SWIG => test}/ex19_sphereINcube.py (100%) rename {src/SMESH_SWIG => test}/ex21_lamp.py (100%) rename {src/SMESH_SWIG => test}/ex24_cylinder.py (100%) create mode 100644 test/ex29_refine.py rename {src/SMESH_SWIG => test}/ex30_groupsOp.py (100%) rename {src/SMESH_SWIG => test}/ex30_tepal.py (100%) rename {src/SMESH_SWIG => test}/ex31_dimGroup.py (100%) create mode 100644 test/ex_MakePolyLine.py rename {doc/salome/examples => test}/extrusion_penta_biquad.py (100%) rename {doc/salome/examples => test}/shaper_smesh_groups_without_session.py (100%) create mode 100644 test/ssl_hdf5_symbols_conflicts.py rename doc/salome/examples/testme.py => test/test_helper.py (100%) rename {doc/salome/examples => test}/test_polyhedron_per_solid.py (100%) rename {doc/salome/examples => test}/test_smeshplugin_mg_tetra_parallele.py (100%) rename {doc/salome/examples => test}/test_smeshplugins.py (100%) create mode 100644 test/tests.set diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e72044a2..6e350981c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -316,6 +316,17 @@ SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOM ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_PYTHON_SHARED}) SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH NOCHECK ${CMAKE_INSTALL_PREFIX}/${SALOME_INSTALL_LIBS}) +# For salome test +# =============== + +SET(SMESH_TEST_DIR ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test) +IF(SALOME_BUILD_TESTS) + CONFIGURE_FILE(CTestTestfileInstall.cmake.in CTestTestfileInstall.cmake @ONLY) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/CTestTestfileInstall.cmake + DESTINATION ${SMESH_TEST_DIR} + RENAME CTestTestfile.cmake) +ENDIF() + # Sources # ======== @@ -324,9 +335,7 @@ ADD_SUBDIRECTORY(adm_local) ADD_SUBDIRECTORY(resources) ADD_SUBDIRECTORY(bin) ADD_SUBDIRECTORY(src) -IF(SALOME_BUILD_DOC) - ADD_SUBDIRECTORY(doc) -ENDIF() +ADD_SUBDIRECTORY(doc) IF(SALOME_BUILD_TESTS) ADD_SUBDIRECTORY(test) ENDIF() diff --git a/CTestTestfileInstall.cmake.in b/CTestTestfileInstall.cmake.in new file mode 100644 index 000000000..124ebc0e8 --- /dev/null +++ b/CTestTestfileInstall.cmake.in @@ -0,0 +1,29 @@ +# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# 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, or (at your option) any later version. +# +# 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 +# + +SET(MED_INT_IS_LONG @MED_INT_IS_LONG@) +SET(PYTHON_TEST_DRIVER "$ENV{KERNEL_ROOT_DIR}/bin/salome/appliskel/python_test_driver.py") +SET(COMPONENT_NAME SMESH) +SET(TIMEOUT 300) + +# Add all test subdirs +SUBDIRS(examples other) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index f7d90a4e3..1e02c7903 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -20,4 +20,8 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -ADD_SUBDIRECTORY(salome) +ADD_SUBDIRECTORY(examples) +IF(SALOME_BUILD_DOC) + ADD_SUBDIRECTORY(tui) + ADD_SUBDIRECTORY(gui) +ENDIF() diff --git a/doc/examples/0README b/doc/examples/0README new file mode 100644 index 000000000..39e339f5b --- /dev/null +++ b/doc/examples/0README @@ -0,0 +1,7 @@ +This folder contains example Python scripts which are used in the documentation of Mesh module, +i.e. those mentioned in *.rst files in {root_src}/doc/gui folder. + +These tests are exported into the ${SMESH_ROOT_DIR}/share/doc/salome/examples folder and can be +executed with the `salome test` command, as a part of whole testing procedure. + +Other Python scripts aimed for testing purposes must be put into the ${root_src}/test folder! diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt new file mode 100644 index 000000000..82b56bf96 --- /dev/null +++ b/doc/examples/CMakeLists.txt @@ -0,0 +1,56 @@ +# Copyright (C) 2012-2022 CEA/DEN, EDF R&D, OPEN CASCADE +# +# 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, or (at your option) any later version. +# +# 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(tests.set) + +SET(TEST_INSTALL_DIRECTORY ${SMESH_TEST_DIR}/examples) +SET(EXAMPLES_INSTALL_DIRECTORY ${SALOME_INSTALL_DOC}/examples/SMESH) + +IF(SALOME_BUILD_TESTS) + + # Install 'salome test' staff + # --------------------------- + + SALOME_CONFIGURE_FILE(CTestTestfileInstall.cmake + ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CTestTestfile.cmake + INSTALL ${TEST_INSTALL_DIRECTORY}) + INSTALL(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY}) + + # Add tests for 'make test' + # ------------------------- + + SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env) + + FOREACH(test ${GOOD_TESTS}) + GET_FILENAME_COMPONENT(testname ${test} NAME_WE) + ADD_TEST(NAME ${testname} + COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/test/test_helper.py ${CMAKE_CURRENT_SOURCE_DIR}/${test}) + SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}" LABELS "examples") + ENDFOREACH() + +ENDIF() + +# Install example scripts and data +# -------------------------------- + +IF(SALOME_BUILD_TESTS OR SALOME_BUILD_DOC) + INSTALL(FILES ${GOOD_TESTS} ${BAD_TESTS} DESTINATION ${EXAMPLES_INSTALL_DIRECTORY}) + INSTALL(FILES mechanic.py DESTINATION ${SALOME_INSTALL_BINS}) + INSTALL(DIRECTORY data DESTINATION ${EXAMPLES_INSTALL_DIRECTORY}) +ENDIF() diff --git a/doc/examples/CTestTestfileInstall.cmake b/doc/examples/CTestTestfileInstall.cmake new file mode 100644 index 000000000..93708f8e0 --- /dev/null +++ b/doc/examples/CTestTestfileInstall.cmake @@ -0,0 +1,32 @@ +# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# 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, or (at your option) any later version. +# +# 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 +# + +SET(SCRIPTS_DIR "../../../../share/doc/salome/examples/SMESH") + +INCLUDE(tests.set) + +FOREACH(tfile ${GOOD_TESTS} ${BAD_TESTS}) + GET_FILENAME_COMPONENT(BASE_NAME ${tfile} NAME_WE) + SET(TEST_NAME SMESH_${BASE_NAME}) + ADD_TEST(${TEST_NAME} python ${PYTHON_TEST_DRIVER} ${TIMEOUT} ${SCRIPTS_DIR}/${tfile}) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME};${COMPONENT_NAME}_examples") +ENDFOREACH() diff --git a/doc/examples/MGAdaptTests_without_session.py b/doc/examples/MGAdaptTests_without_session.py new file mode 100644 index 000000000..dac79eae1 --- /dev/null +++ b/doc/examples/MGAdaptTests_without_session.py @@ -0,0 +1,482 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +"""Tests des adaptations par MGAdapt en standalone + +Copyright 2021 EDF +Gérald NICOLAS ++33.1.78.19.43.52 +""" + +__revision__ = "V04.04" + +#========================= Les imports - Début =================================== + +import inspect +import sys +import os +import tempfile +import shutil +import salome + +salome.standalone() +salome.salome_init_without_session() + +import SMESH +from salome.smesh import smeshBuilder +smesh = smeshBuilder.New() + +#========================== Les imports - Fin ==================================== + +#========================= Paramétrage - Début =================================== +# 1. REPDATA = répertoire du cas +REPDATA = os.path.abspath(os.path.join(os.path.dirname(inspect.getfile(lambda: None)), 'data')) +# +# 2. Repérage des données +D_DATA = dict() +D_DATA["01"] = "01" # 2D plan ; carte locale +D_DATA["02"] = "02" # 2D plan ; carte en arrière-plan +D_DATA["03"] = "01" # 2D plan ; taille constante +D_DATA["04"] = "04" # 3D ; carte locale et dernier pas de temps +D_DATA["05"] = "04" # 3D ; carte locale et pas de temps n°1 +D_DATA["06"] = "06" # 2D non plan; carte locale +D_DATA["07"] = "07" # 2D plan ; carte locale anisotrope +D_DATA["08"] = "08" # 3D ; carte en arrière-plan anisotrope +D_DATA["10"] = "10" # 2D plan ; carte locale et maillage initial quadratique +D_DATA["11"] = "11" # 2D plan ; carte locale et maillage initial en quadrangles +D_DATA["13"] = "13" # 3D ; carte locale en simple précision et dernier pas de temps +#========================== Paramétrage - Fin ==================================== + +class MGAdaptTest (object): + + """Test de l'adaptation par MGAdapt + +Options facultatives +******************** +Le(s) nom du/des tests à passer. Si aucun n'est donné, tous les cas sont passés. + """ + +# A. La base + + message_info = "" + _verbose = 0 + _verbose_max = 0 + affiche_aide_globale = 0 + +# B. Les variables + + l_cas = None + rep_test = None + nro_cas = None + cas = None + +#=========================== Début de la méthode ================================= + + def __init__ ( self, liste_option ): + + """Le constructeur de la classe MGAdaptTest""" + + self.l_cas = list() + self.repout = None + + for option in liste_option : + + #print (option) + saux = option.upper() + #print (saux) + if saux in ( "-H", "-HELP" ): + self.affiche_aide_globale = 1 + elif saux == "-V" : + self._verbose = 1 + elif saux == "-VMAX" : + self._verbose = 1 + self._verbose_max = 1 + else : + self.l_cas.append(option) + + if not self.l_cas: + for cle in D_DATA: + self.l_cas.append(cle) + self.l_cas.sort() + + if self._verbose_max: + print ("Liste des cas : {}".format(self.l_cas)) + +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def __del__(self): + """A la suppression de l'instance de classe""" + if self._verbose_max: + print ("Suppression de l'instance de la classe.") + +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def _add_file_in (self, objet_adapt): + """Ajout du fichier med d'entrée + +Entrées/Sorties : + :objet_adapt: l'objet du module + """ + if self._verbose_max: + print ("_add_file_in pour {}".format(self.nro_cas)) + + ficmed = os.path.join (REPDATA, "test_{}.med".format(D_DATA[self.nro_cas])) + if self._verbose_max: + print ("Fichier {}".format(ficmed)) + if not os.path.isfile(ficmed): + erreur = 1 + message = "Le fichier {} est inconnu.".format(ficmed) + else: + objet_adapt.setMEDFileIn(ficmed) + erreur = 0 + message = "" + + return erreur, message + +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def _add_file_out (self, objet_adapt): + """Ajout du fichier de sortie + +Entrées/Sorties : + :objet_adapt: l'objet du module + """ + if self._verbose_max: + print ("_add_file_out pour {}".format(self.nro_cas)) + + if not self.repout: + self.repout = tempfile.mkdtemp() + + ficmed = os.path.join (self.repout, "test_{}.adapt.tui.med".format(self.nro_cas)) + if os.path.isfile(ficmed): + os.remove(ficmed) + + objet_adapt.setMEDFileOut(ficmed) + + if self._verbose: + print (". Maillage adapté dans le fichier {}".format(ficmed)) + + return + +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def _add_file_bkg (self, objet_adapt): + """Ajout du fichier med de fond + +Entrées/Sorties : + :objet_adapt: l'objet du module + """ + if self._verbose_max: + print ("_add_file_bkg pour {}".format(self.nro_cas)) + + ficmed = os.path.join (REPDATA, "test_{}_bg.med".format(D_DATA[self.nro_cas])) + if self._verbose_max: + print ("Fichier {}".format(ficmed)) + if not os.path.isfile(ficmed): + erreur = 1 + message = "Le fichier {} est inconnu.".format(ficmed) + else: + objet_adapt.setMEDFileBackground(ficmed) + erreur = 0 + message = "" + + return erreur, message + +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def _hypo_creation (self, maptype, option, niveau=3): + """Création d'une hypothèse + +Entrées : + :maptype: type de carte : "Local", "Background", "Constant" + :option: nom du champ si "Local" ou "Background", valeur si "Constant" + :niveau: niveau de verbosité + +Sortie : + :hypo: l'objet hypothèse + """ + if self._verbose_max: + print ("_hypo_creation pour {} avec {}".format(maptype,option)) + + erreur = 0 + message = "" + + while not erreur : + + #--- Création de l'hypothèse --- + hypo = smesh.CreateAdaptationHypothesis() + + # Type de données + if ( maptype in ("Local", "Background", "Constant") ): + hypo.setSizeMapType(maptype) + else: + message = "Le type de carte {} est inconnu.".format(maptype) + erreur = 2 + break + + # Valeur + if ( maptype in ("Local", "Background") ): + hypo.setSizeMapFieldName(option) + else: + hypo.setConstantSize(option) + + # Verbosité + self._hypo_verbose (hypo, niveau) + + break + + return erreur, message, hypo +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def _hypo_verbose (self, hypo, niveau=10): + """Débogage des hypothèses + +Entrées : + :niveau: niveau de verbosité + +Entrées/Sorties : + :hypo: l'objet hypothèse + """ + + hypo.setVerbosityLevel(niveau) + + if self._verbose_max: + + hypo.setPrintLogInFile(True) + hypo.setKeepWorkingFiles(True) + hypo.setRemoveOnSuccess(False) + + return +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def _calcul (self, objet_adapt, hypo): + """Calcul + +Entrées : + :objet_adapt: l'objet du module + :hypo: l'objet hypothèse + """ + + #--- association de l'hypothese à l'objet de l'adaptation + objet_adapt.AddHypothesis(hypo) + + #-- Calcul + if self._verbose_max: + print (hypo.getCommandToRun()) + erreur = objet_adapt.Compute(False) + if erreur: + message = "Echec dans l'adaptation." + else: + message = "" + + return erreur, message + +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def _test_00 (self, objet_adapt): + """Test générique + +Entrées/Sorties : + :objet_adapt: l'objet du module + """ + + erreur = 0 + message = "" + + while not erreur : + + #--- les fichiers MED ---# + erreur, message = self._add_file_in (objet_adapt) + if erreur: + break + self._add_file_out (objet_adapt) + if self.nro_cas in ("02", "08"): + erreur, message = self._add_file_bkg (objet_adapt) + if erreur: + break + + #--- Création de l'hypothèse --- + if self.nro_cas in ("01", "04", "05", "06", "07", "10", "11", "13"): + maptype = "Local" + if self.nro_cas in ("01", "04", "05", "06", "07", "10"): + option = "TAILLE" + elif self.nro_cas in ("11",): + option = "Taille de maille" + elif self.nro_cas in ("13",): + option = "Elevation" + elif self.nro_cas in ("02", "08"): + maptype = "Background" + option = "TAILLE" + elif self.nro_cas in ("03",): + maptype = "Constant" + option = 0.5 + + if self._verbose: + niveau = 3 + elif self._verbose_max: + niveau = 10 + else: + niveau = 0 + erreur, message, hypo = self._hypo_creation(maptype, option, niveau) + if erreur: + break + + #-- Ajout des options + if self.nro_cas in ("04", "06", "07", "08", "10", "11"): + hypo.setTimeStepRankLast() + elif self.nro_cas in ("05",): + hypo.setTimeStepRank(1,1) + elif self.nro_cas in ("13",): + hypo.setTimeStepRank(0,0) + + # options facultatives + if self.nro_cas in ("03",): + hypo.setOptionValue("adaptation", "surface") + + #-- Calcul + try : + erreur, message = self._calcul (objet_adapt, hypo) + except : + erreur = 1871 + message = "Erreur dans le calcul par SMESH" + + break + + return erreur, message + +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def _traitement_cas (self ): + """Traitement d'un cas + + +Sorties : + :erreur: code d'erreur + :message: message d'erreur + """ + + nom_fonction = __name__ + "/_traitement_cas" + blabla = "\nDans {} :".format(nom_fonction) + + if self._verbose_max: + print (blabla) + +# 1. Préalables + + erreur = 0 + message = "" + if self._verbose: + print ("Passage du cas '{}'".format(self.nro_cas)) + + if ( self.nro_cas in ("01", "02", "03", "04", "05", "06", "07", "08", "10" ,"11" ,"13") ): + objet_adapt = smesh.Adaptation('MG_Adapt') + erreur, message = self._test_00 (objet_adapt) + del objet_adapt + + else: + erreur = 1 + message = "Le cas '{}' est inconnu.".format(self.nro_cas) + + return erreur, message + +#=========================== Fin de la méthode ================================== + +#=========================== Début de la méthode ================================= + + def lancement (self): + + """Lancement + +Sorties : + :erreur: code d'erreur + :message: message d'erreur + """ + + nom_fonction = __name__ + "/lancement" + blabla = "\nDans {} :".format(nom_fonction) + + erreur = 0 + message = "" + + if self._verbose_max: + print (blabla) + + for nom_cas in self.l_cas: + self.nro_cas = nom_cas + erreur_t, message_t = self._traitement_cas () + if erreur_t: + erreur += 1 + message += "\nErreur n° {} pour le cas {} :\n".format(erreur_t,nom_cas) + message += message_t + + if ( erreur and self._verbose_max ): + print (blabla, message) + + if self.repout: + shutil.rmtree(self.repout) + + return erreur, message + +#=========================== Fin de la méthode ================================== + +#========================== Fin de la classe ==================================== + +#================================================================================== +# Lancement +#================================================================================== + +if __name__ == "__main__" : + +# 1. Options + + L_OPTIONS = list() + #L_OPTIONS.append("-h") + #L_OPTIONS.append("-v") + #L_OPTIONS.append("-vmax") + L_OPTIONS.append("01") + L_OPTIONS.append("02") + L_OPTIONS.append("03") + L_OPTIONS.append("07") + L_OPTIONS.append("10") + L_OPTIONS.append("11") + L_OPTIONS.append("04") + L_OPTIONS.append("05") + L_OPTIONS.append("06") + L_OPTIONS.append("08") + L_OPTIONS.append("13") + +# 2. Lancement de la classe + + #print ("L_OPTIONS :", L_OPTIONS) + MGADAPT_TEST = MGAdaptTest(L_OPTIONS) + if MGADAPT_TEST.affiche_aide_globale: + sys.stdout.write(MGADAPT_TEST.__doc__+"\n") + else: + ERREUR, MESSAGE_ERREUR = MGADAPT_TEST.lancement() + if ERREUR: + sys.stdout.write(MGADAPT_TEST.__doc__+"\n") + MESSAGE_ERREUR += "\n {} erreur(s)\n".format(ERREUR) + sys.stderr.write(MESSAGE_ERREUR) + #raise Exception(MESSAGE_ERREUR) + assert(False) + + del MGADAPT_TEST + + #sys.exit(0) diff --git a/doc/salome/examples/a3DmeshOnModified2Dmesh.py b/doc/examples/a3DmeshOnModified2Dmesh.py similarity index 100% rename from doc/salome/examples/a3DmeshOnModified2Dmesh.py rename to doc/examples/a3DmeshOnModified2Dmesh.py diff --git a/doc/examples/cartesian_algo.py b/doc/examples/cartesian_algo.py new file mode 100644 index 000000000..584d66715 --- /dev/null +++ b/doc/examples/cartesian_algo.py @@ -0,0 +1,108 @@ +# Usage of Body Fitting algorithm + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a sphere +sphere = geom_builder.MakeSphereR( 50 ) + +# cut the sphere by a box +box = geom_builder.MakeBoxDXDYDZ( 100, 100, 100 ) +partition = geom_builder.MakePartition([ sphere ], [ box ], theName="partition") + +# create a mesh and assign a "Body Fitting" algo +mesh = smesh_builder.Mesh( partition ) +cartAlgo = mesh.BodyFitted() + +# define a cartesian grid using Coordinates +coords = list(range(-100,100,10)) +cartHyp = cartAlgo.SetGrid( coords,coords,coords, 1000000) + +# compute the mesh +mesh.Compute() +print("nb hexahedra",mesh.NbHexas()) +print("nb tetrahedra",mesh.NbTetras()) +print("nb polyhedra",mesh.NbPolyhedrons()) +print() + +# define the grid by setting constant spacing +cartHyp = cartAlgo.SetGrid( "10","10","10", 1000000) + +mesh.Compute() +print("nb hexahedra",mesh.NbHexas()) +print("nb tetrahedra",mesh.NbTetras()) +print("nb polyhedra",mesh.NbPolyhedrons()) +print("nb faces",mesh.NbFaces()) +print() + +# activate creation of faces +cartHyp.SetToCreateFaces( True ) + +mesh.Compute() +print("nb hexahedra",mesh.NbHexas()) +print("nb tetrahedra",mesh.NbTetras()) +print("nb polyhedra",mesh.NbPolyhedrons()) +print("nb faces",mesh.NbFaces()) +print() + +# enable consideration of shared faces +cartHyp.SetToConsiderInternalFaces( True ) +mesh.Compute() +print("nb hexahedra",mesh.NbHexas()) +print("nb tetrahedra",mesh.NbTetras()) +print("nb polyhedra",mesh.NbPolyhedrons()) +print("nb faces",mesh.NbFaces()) +print() + +# define the grid by setting different spacing in 2 sub-ranges of geometry +spaceFuns = ["5","10+10*t"] +cartAlgo.SetGrid( [spaceFuns, [0.5]], [spaceFuns, [0.5]], [spaceFuns, [0.25]], 10 ) + +mesh.Compute() +print("nb hexahedra",mesh.NbHexas()) +print("nb tetrahedra",mesh.NbTetras()) +print("nb polyhedra",mesh.NbPolyhedrons()) +print() + +# Example of customization of dirtections of the grid axes + +# make a box with non-orthogonal edges +xDir = geom_builder.MakeVectorDXDYDZ( 1.0, 0.1, 0.0, "xDir" ) +yDir = geom_builder.MakeVectorDXDYDZ(-0.1, 1.0, 0.0, "yDir" ) +zDir = geom_builder.MakeVectorDXDYDZ( 0.2, 0.3, 1.0, "zDir" ) +face = geom_builder.MakePrismVecH( xDir, yDir, 1.0 ) +box = geom_builder.MakePrismVecH( face, zDir, 1.0, theName="box" ) + +spc = "0.1" # spacing + +# default axes +mesh = smesh_builder.Mesh( box, "custom axes") +algo = mesh.BodyFitted() +algo.SetGrid( spc, spc, spc, 10000 ) +mesh.Compute() +print("Default axes") +print(" nb hex:",mesh.NbHexas()) + +# set axes using edges of the box +algo.SetAxesDirs( xDir, [-0.1,1,0], zDir ) +mesh.Compute() +print("Manual axes") +print(" nb hex:",mesh.NbHexas()) + +# set optimal orthogonal axes +algo.SetOptimalAxesDirs( isOrthogonal=True ) +mesh.Compute() +print("Optimal orthogonal axes") +print(" nb hex:",mesh.NbHexas()) + +# set optimal non-orthogonal axes +algo.SetOptimalAxesDirs( isOrthogonal=False ) +mesh.Compute() +print("Optimal non-orthogonal axes") +print(" nb hex:",mesh.NbHexas()) diff --git a/doc/examples/creating_meshes_ex01.py b/doc/examples/creating_meshes_ex01.py new file mode 100644 index 000000000..e5cb0e934 --- /dev/null +++ b/doc/examples/creating_meshes_ex01.py @@ -0,0 +1,34 @@ +# Construction of a Mesh + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBox(0., 0., 0., 100., 200., 300.) +idbox = geom_builder.addToStudy(box, "box") + +# create a mesh +tetra = smesh_builder.Mesh(box, "MeshBox") + +algo1D = tetra.Segment() +algo1D.NumberOfSegments(7) + +algo2D = tetra.Triangle() +algo2D.MaxElementArea(800.) + +algo3D = tetra.Tetrahedron() +algo3D.MaxElementVolume(900.) + +# compute the mesh +ret = tetra.Compute() +if ret == 0: + print("problem when computing the mesh") +else: + print("mesh computed") + pass diff --git a/doc/examples/creating_meshes_ex02.py b/doc/examples/creating_meshes_ex02.py new file mode 100644 index 000000000..676708c68 --- /dev/null +++ b/doc/examples/creating_meshes_ex02.py @@ -0,0 +1,62 @@ +# Construction of a Sub-mesh + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBoxDXDYDZ(10., 10., 10.) +geom_builder.addToStudy(box, "Box") + +# select one edge of the box for definition of a local hypothesis +p5 = geom_builder.MakeVertex(5., 0., 0.) +EdgeX = geom_builder.GetEdgeNearPoint(box, p5) +geom_builder.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") + +# create a hexahedral mesh on the box +mesh = smesh_builder.Mesh(box, "Box : hexahedral 3D mesh") + +# create a Regular_1D algorithm for discretization of edges +algo1D = mesh.Segment() + +# define "NumberOfSegments" hypothesis to cut +# all the edges in a fixed number of segments +algo1D.NumberOfSegments(4) + +# create a quadrangle 2D algorithm for the faces +mesh.Quadrangle() + +# construct a sub-mesh on the edge with a local Regular_1D algorithm +algo_local = mesh.Segment(EdgeX) + +# define "Arithmetic1D" hypothesis to cut EdgeX in several segments with length arithmetically +# increasing from 1.0 to 4.0 +algo_local.Arithmetic1D(1, 4) + +# define "Propagation" hypothesis that propagates algo_local and "Arithmetic1D" hypothesis +# from EdgeX to all parallel edges +algo_local.Propagation() + +# assign a hexahedral algorithm +mesh.Hexahedron() + +# any sub-shape can be meshed individually -- +# compute mesh on two surfaces using different methods + +# get surfaces +surfaces = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) + +# method 1: no sub-mesh is created +mesh.Compute( surfaces[0] ) + +# method 2: a sub-mesh is created +submesh = mesh.GetSubMesh( surfaces[2], "submesh 2" ) +submesh.Compute() + +# compute the whole mesh +mesh.Compute() diff --git a/doc/examples/creating_meshes_ex03.py b/doc/examples/creating_meshes_ex03.py new file mode 100644 index 000000000..5ad4e10a0 --- /dev/null +++ b/doc/examples/creating_meshes_ex03.py @@ -0,0 +1,58 @@ +# Change priority of sub-meshes in Mesh + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +Box_1 = geom_builder.MakeBoxDXDYDZ(200, 200, 200) +[Face_1,Face_2,Face_3,Face_4,Face_5,Face_6] = geom_builder.SubShapeAllSorted(Box_1, geom_builder.ShapeType["FACE"]) + +# create Mesh object on Box shape +Mesh_1 = smesh_builder.Mesh(Box_1) + +# assign mesh algorithms and hypotheses +Regular_1D = Mesh_1.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(20) +MEFISTO_2D = Mesh_1.Triangle() +Max_Element_Area_1 = MEFISTO_2D.MaxElementArea(1200) +Tetrahedron = Mesh_1.Tetrahedron() +Max_Element_Volume_1 = Tetrahedron.MaxElementVolume(40000) + +# create sub-mesh and assign algorithms on Face_1 +Regular_1D_1 = Mesh_1.Segment(geom=Face_1) +Nb_Segments_2 = Regular_1D_1.NumberOfSegments(4) +MEFISTO_2D_1 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_1) +SubMesh_1 = MEFISTO_2D_1.GetSubMesh() + +# create sub-mesh and assign algorithms on Face_2 +Regular_1D_2 = Mesh_1.Segment(geom=Face_2) +Nb_Segments_3 = Regular_1D_2.NumberOfSegments(8) +MEFISTO_2D_2 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_2) +SubMesh_2 = MEFISTO_2D_2.GetSubMesh() + +# create sub-mesh and assign algorithms on Face_3 +Regular_1D_3 = Mesh_1.Segment(geom=Face_3) +Nb_Segments_4 = Regular_1D_3.NumberOfSegments(12) +MEFISTO_2D_3 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_3) +SubMesh_3 = MEFISTO_2D_3.GetSubMesh() + +# check existing sub-mesh priority order +[ [ SubMesh_1, SubMesh_3, SubMesh_2 ] ] = Mesh_1.GetMeshOrder() +isDone = Mesh_1.Compute() +print("Nb elements at initial order of sub-meshes:", Mesh_1.NbElements()) + +# set new sub-mesh order +isDone = Mesh_1.SetMeshOrder( [ [ SubMesh_1, SubMesh_2, SubMesh_3 ] ]) +# compute mesh +isDone = Mesh_1.Compute() +print("Nb elements at new order of sub-meshes:", Mesh_1.NbElements()) + +# compute with other sub-mesh order +isDone = Mesh_1.SetMeshOrder( [ [ SubMesh_2, SubMesh_1, SubMesh_3 ] ]) +isDone = Mesh_1.Compute() +print("Nb elements at another order of sub-meshes:", Mesh_1.NbElements()) diff --git a/doc/examples/creating_meshes_ex04.py b/doc/examples/creating_meshes_ex04.py new file mode 100644 index 000000000..3298e971c --- /dev/null +++ b/doc/examples/creating_meshes_ex04.py @@ -0,0 +1,59 @@ +# Editing of a mesh + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +def PrintMeshInfo(theMesh): + aMesh = theMesh.GetMesh() + print("Information about mesh:") + print("Number of nodes : ", aMesh.NbNodes()) + print("Number of edges : ", aMesh.NbEdges()) + print("Number of faces : ", aMesh.NbFaces()) + print("Number of volumes : ", aMesh.NbVolumes()) + pass + +# create a box +box = geom_builder.MakeBox(0., 0., 0., 20., 20., 20.) +geom_builder.addToStudy(box, "box") + +# select one edge of the box for definition of a local hypothesis +subShapeList = geom_builder.SubShapeAll(box, geom_builder.ShapeType["EDGE"]) +edge = subShapeList[0] +name = geom_builder.SubShapeName(edge, box) +geom_builder.addToStudyInFather(box, edge, name) + +# create a mesh +tria = smesh_builder.Mesh(box, "Mesh 2D") +algo1D = tria.Segment() +hyp1 = algo1D.NumberOfSegments(3) +algo2D = tria.Triangle() +hyp2 = algo2D.MaxElementArea(10.) + +# create a sub-mesh +algo_local = tria.Segment(edge) +hyp3 = algo_local.Arithmetic1D(1, 6) +hyp4 = algo_local.Propagation() + +# compute the mesh +tria.Compute() +PrintMeshInfo(tria) + +# remove a local hypothesis +tria.RemoveHypothesis(hyp4, edge) + +# compute the mesh +tria.Compute() +PrintMeshInfo(tria) + +# change the value of the 2D hypothesis +hyp2.SetMaxElementArea(2.) + +# compute the mesh +tria.Compute() +PrintMeshInfo(tria) diff --git a/doc/examples/creating_meshes_ex05.py b/doc/examples/creating_meshes_ex05.py new file mode 100644 index 000000000..5c2ab863b --- /dev/null +++ b/doc/examples/creating_meshes_ex05.py @@ -0,0 +1,58 @@ +# Export of a Mesh + +import os +import tempfile +import MEDLoader + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBox(0., 0., 0., 100., 200., 300.) +idbox = geom_builder.addToStudy(box, "box") + +# create a mesh +tetra = smesh_builder.Mesh(box, "MeshBox") +tetra.Segment().NumberOfSegments(7) +tetra.Triangle() +tetra.Tetrahedron() + +# compute the mesh +tetra.Compute() + +# export the mesh in a MED file +medFile = tempfile.NamedTemporaryFile(suffix=".med").name +tetra.ExportMED( medFile, 0 ) + +# export a group in a MED file +face = geom_builder.SubShapeAll( box, geom_builder.ShapeType["FACE"])[0] # a box side +group = tetra.GroupOnGeom( face, "face group" ) # group of 2D elements on the +tetra.ExportMED( medFile, meshPart=group ) + +# ======================== +# autoDimension parameter +# ======================== + +face = geom_builder.MakeFaceHW( 10, 10, 1, "rectangle" ) +mesh2D = smesh_builder.Mesh( face, "mesh2D" ) +mesh2D.AutomaticHexahedralization(0) + +# exported mesh is in 2D space because it is a planar mesh lying +# on XOY plane, and autoDimension=True by default +mesh2D.ExportMED( medFile ) +medMesh = MEDLoader.ReadUMeshFromFile(medFile,mesh2D.GetName(),0) +print("autoDimension==True, exported mesh is in %sD"%medMesh.getSpaceDimension()) + +# exported mesh is in 3D space, same as in Mesh module, +# thanks to autoDimension=False +mesh2D.ExportMED( medFile, autoDimension=False ) +medMesh = MEDLoader.ReadUMeshFromFile(medFile,mesh2D.GetName(),0) +print("autoDimension==False, exported mesh is in %sD"%medMesh.getSpaceDimension()) + +os.remove( medFile ) diff --git a/doc/examples/creating_meshes_ex06.py b/doc/examples/creating_meshes_ex06.py new file mode 100644 index 000000000..a460eeb8b --- /dev/null +++ b/doc/examples/creating_meshes_ex06.py @@ -0,0 +1,120 @@ +# Creating a hexahedral mesh on a cylinder. +# +# This example uses Partition to divide the cylinder into blocks, which is +# a general approach. But for the case of cylinder there is a dedicated +# command creating a blocked cylinder: geom_builder.MakeDividedCylinder() + +import math + +import salome +salome.salome_init_without_session() + +import GEOM +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Parameters +# ---------- + +radius = 50 +height = 200 + +# Build a cylinder +# ---------------- + +base = geom_builder.MakeVertex(0, 0, 0) +direction = geom_builder.MakeVectorDXDYDZ(0, 0, 1) + +cylinder = geom_builder.MakeCylinder(base, direction, radius, height) + +geom_builder.addToStudy(cylinder, "cylinder") + +# Build blocks +# ------------ + +size = radius/2.0 + +box_rot = geom_builder.MakeBox(-size, -size, 0, +size, +size, height) +box_axis = geom_builder.MakeLine(base, direction) +box = geom_builder.MakeRotation(box_rot, box_axis, math.pi/4) + +hole = geom_builder.MakeCut(cylinder, box) + +plane_trim = 2000 + +plane_a = geom_builder.MakePlane(base, geom_builder.MakeVectorDXDYDZ(1, 0, 0), plane_trim) +plane_b = geom_builder.MakePlane(base, geom_builder.MakeVectorDXDYDZ(0, 1, 0), plane_trim) + +blocks_part = geom_builder.MakePartition([hole], [plane_a, plane_b], [], [], geom_builder.ShapeType["SOLID"]) +blocks_list = [box] + geom_builder.SubShapeAll(blocks_part, geom_builder.ShapeType["SOLID"]) +blocks_all = geom_builder.MakeCompound(blocks_list) +blocks = geom_builder.MakeGlueFaces(blocks_all, 0.0001) + +geom_builder.addToStudy(blocks, "cylinder:blocks") + +# Build geometric groups +# ---------------------- + +group_a = geom_builder.CreateGroup(blocks, geom_builder.ShapeType["FACE"]) +geom_builder.addToStudyInFather(blocks, group_a, "baseA") +items = geom_builder.GetShapesOnPlaneWithLocationIDs(blocks, geom_builder.ShapeType["FACE"], direction, base, GEOM.ST_ON) +geom_builder.UnionIDs(group_a, items) + +base_b = geom_builder.MakeVertex(0, 0, height) +group_b = geom_builder.CreateGroup(blocks, geom_builder.ShapeType["FACE"]) +geom_builder.addToStudyInFather(blocks, group_b, "baseB") +items = geom_builder.GetShapesOnPlaneWithLocationIDs(blocks, geom_builder.ShapeType["FACE"], direction, base_b, GEOM.ST_ON) +geom_builder.UnionIDs(group_b, items) + +group_1 = geom_builder.CreateGroup(blocks, geom_builder.ShapeType["SOLID"]) +geom_builder.addToStudyInFather(blocks, group_1, "limit") +group_1_all = geom_builder.SubShapeAllIDs(blocks, geom_builder.ShapeType["SOLID"]) +geom_builder.UnionIDs(group_1, group_1_all) +group_1_box = geom_builder.GetBlockNearPoint(blocks, base) +geom_builder.DifferenceList(group_1, [group_1_box]) + +# Mesh the blocks with hexahedral +# ------------------------------- + +smesh_builder.UpdateStudy() + +hexa = smesh_builder.Mesh(blocks) + +hexa_1d = hexa.Segment() +hexa_1d.NumberOfSegments(1) + +vertex = geom_builder.MakeVertex(+radius, +radius, 0) +edge = geom_builder.GetEdgeNearPoint(blocks, vertex) +algo = hexa.Segment(edge) +algo.NumberOfSegments(5) +algo.Propagation() + +vertex = geom_builder.MakeVertex(-radius, +radius, 0) +edge = geom_builder.GetEdgeNearPoint(blocks, vertex) +algo = hexa.Segment(edge) +algo.NumberOfSegments(8) +algo.Propagation() + +vertex = geom_builder.MakeVertex((radius+size)/2, 0, 0) +edge = geom_builder.GetEdgeNearPoint(blocks, vertex) +algo = hexa.Segment(edge) +algo.NumberOfSegments(10) +algo.Propagation() + +vertex = geom_builder.MakeVertex(+radius, 0, height/2) +edge = geom_builder.GetEdgeNearPoint(blocks, vertex) +algo = hexa.Segment(edge) +algo.NumberOfSegments(20) +algo.Propagation() + +hexa.Quadrangle() +hexa.Hexahedron() + +hexa.Compute() + +hexa.Group(group_a) +hexa.Group(group_b) +hexa.Group(group_1) diff --git a/doc/examples/creating_meshes_ex07.py b/doc/examples/creating_meshes_ex07.py new file mode 100644 index 000000000..4a181c237 --- /dev/null +++ b/doc/examples/creating_meshes_ex07.py @@ -0,0 +1,86 @@ +# Building a compound of meshes + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +## create a bottom box +Box_inf = geom_builder.MakeBox(0., 0., 0., 200., 200., 50.) + +# get a top face +Psup1=geom_builder.MakeVertex(100., 100., 50.) +Fsup1=geom_builder.GetFaceNearPoint(Box_inf, Psup1) +# get a bottom face +Pinf1=geom_builder.MakeVertex(100., 100., 0.) +Finf1=geom_builder.GetFaceNearPoint(Box_inf, Pinf1) + +## create a top box +Box_sup = geom_builder.MakeBox(100., 100., 50., 200., 200., 100.) + +# get a top face +Psup2=geom_builder.MakeVertex(150., 150., 100.) +Fsup2=geom_builder.GetFaceNearPoint(Box_sup, Psup2) +# get a bottom face +Pinf2=geom_builder.MakeVertex(150., 150., 50.) +Finf2=geom_builder.GetFaceNearPoint(Box_sup, Pinf2) + +## Publish in the study +geom_builder.addToStudy(Box_inf, "Box_inf") +geom_builder.addToStudyInFather(Box_inf, Fsup1, "Fsup") +geom_builder.addToStudyInFather(Box_inf, Finf1, "Finf") + +geom_builder.addToStudy(Box_sup, "Box_sup") +geom_builder.addToStudyInFather(Box_sup, Fsup2, "Fsup") +geom_builder.addToStudyInFather(Box_sup, Finf2, "Finf") + +smesh_builder.UpdateStudy() + +## create a bottom mesh +Mesh_inf = smesh_builder.Mesh(Box_inf, "Mesh_inf") +algo1D_1=Mesh_inf.Segment() +algo1D_1.NumberOfSegments(10) +algo2D_1=Mesh_inf.Quadrangle() +algo3D_1=Mesh_inf.Hexahedron() +Mesh_inf.Compute() + +# create a group on the top face +Gsup1=Mesh_inf.Group(Fsup1, "Sup") +# create a group on the bottom face +Ginf1=Mesh_inf.Group(Finf1, "Inf") + +## create a top mesh +Mesh_sup = smesh_builder.Mesh(Box_sup, "Mesh_sup") +algo1D_2=Mesh_sup.Segment() +algo1D_2.NumberOfSegments(5) +algo2D_2=Mesh_sup.Quadrangle() +algo3D_2=Mesh_sup.Hexahedron() +Mesh_sup.Compute() + +# create a group on the top face +Gsup2=Mesh_sup.Group(Fsup2, "Sup") +# create a group on the bottom face +Ginf2=Mesh_sup.Group(Finf2, "Inf") + +## create compounds +# create a compound of two meshes with renaming namesake groups and +# merging elements with the given tolerance +Compound1 = smesh_builder.Concatenate([Mesh_inf, Mesh_sup], 0, 1, 1e-05, + name='Compound with RenamedGrps and MergeElems') +# create a compound of two meshes with uniting namesake groups and +# creating groups of all elements +Compound2 = smesh_builder.Concatenate([Mesh_inf, Mesh_sup], 1, 0, 1e-05, True, + name='Compound with UniteGrps and GrpsOfAllElems') + +# copy Gsup1 into a separate mesh and translate it +groupMesh = Mesh_inf.TranslateObjectMakeMesh( Gsup1, [300,0,0] ) + +# add Ginf2 to groupMesh +smesh_builder.Concatenate([Ginf2], False, meshToAppendTo = groupMesh ) + +if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() diff --git a/doc/examples/creating_meshes_ex08.py b/doc/examples/creating_meshes_ex08.py new file mode 100644 index 000000000..71fdff73b --- /dev/null +++ b/doc/examples/creating_meshes_ex08.py @@ -0,0 +1,59 @@ +# Mesh Copying + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# make geometry of a box +box = geom_builder.MakeBoxDXDYDZ(100,100,100) +face = geom_builder.SubShapeAllSorted(box, geom_builder.ShapeType["FACE"])[0] + +# generate a prismatic 3D mesh +mesh = smesh_builder.Mesh(box, "box") +localAlgo = mesh.Triangle(face) +mesh.Segment().NumberOfSegments( 3 ) +mesh.Quadrangle() +mesh.Prism() +mesh.Compute() + +# objects to copy +fGroup = mesh.GroupOnGeom( face, "2D on face") +nGroup = mesh.GroupOnGeom( face, "nodes on face", SMESH.NODE) +subMesh = localAlgo.GetSubMesh() + +# make a new mesh by copying different parts of the mesh + +# 1. copy the whole mesh +newMesh = smesh_builder.CopyMesh( mesh, "whole mesh copy") + +# 2. copy a group of 2D elements along with groups +newMesh = smesh_builder.CopyMesh( fGroup, "face group copy with groups",toCopyGroups=True) + +# 3. copy a group of nodes +newMesh = smesh_builder.CopyMesh( nGroup, "node group copy") + +# 4. copy some faces +faceIds = fGroup.GetIDs()[-10:] +newMesh = smesh_builder.CopyMesh( mesh.GetIDSource( faceIds, SMESH.FACE ), "some faces copy") + +# 5. copy some nodes +nodeIds = nGroup.GetIDs()[-10:] +newMesh = smesh_builder.CopyMesh( mesh.GetIDSource( nodeIds, SMESH.NODE), "some nodes copy") + +# 6. copy a sub-mesh +newMesh = smesh_builder.CopyMesh( subMesh, "sub-mesh copy" ) + + +# make a new mesh with same hypotheses on a modified geometry + +smallBox = geom_builder.MakeScaleAlongAxes( box, None, 1, 0.5, 0.5 ) +cutBox = geom_builder.MakeCut( box, smallBox, theName="box - smallBox" ) + +ok, newMesh, groups, submehses, hyps, invIDs = smesh_builder.CopyMeshWithGeom( mesh, cutBox, "cutBox" ) +newMesh.Compute() diff --git a/doc/salome/examples/MGAdapt_med_files/test_01.med b/doc/examples/data/test_01.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_01.med rename to doc/examples/data/test_01.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_02.med b/doc/examples/data/test_02.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_02.med rename to doc/examples/data/test_02.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_02_bg.med b/doc/examples/data/test_02_bg.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_02_bg.med rename to doc/examples/data/test_02_bg.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_04.med b/doc/examples/data/test_04.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_04.med rename to doc/examples/data/test_04.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_06.med b/doc/examples/data/test_06.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_06.med rename to doc/examples/data/test_06.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_07.med b/doc/examples/data/test_07.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_07.med rename to doc/examples/data/test_07.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_08.med b/doc/examples/data/test_08.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_08.med rename to doc/examples/data/test_08.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_08_bg.med b/doc/examples/data/test_08_bg.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_08_bg.med rename to doc/examples/data/test_08_bg.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_10.med b/doc/examples/data/test_10.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_10.med rename to doc/examples/data/test_10.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_11.med b/doc/examples/data/test_11.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_11.med rename to doc/examples/data/test_11.med diff --git a/doc/salome/examples/MGAdapt_med_files/test_13.med b/doc/examples/data/test_13.med similarity index 100% rename from doc/salome/examples/MGAdapt_med_files/test_13.med rename to doc/examples/data/test_13.med diff --git a/doc/salome/examples/test_homard_adapt.med b/doc/examples/data/test_homard_adapt.med similarity index 100% rename from doc/salome/examples/test_homard_adapt.med rename to doc/examples/data/test_homard_adapt.med diff --git a/doc/salome/examples/tutorial_4.00.med b/doc/examples/data/tutorial_4.00.med similarity index 100% rename from doc/salome/examples/tutorial_4.00.med rename to doc/examples/data/tutorial_4.00.med diff --git a/doc/salome/examples/tutorial_4.xao b/doc/examples/data/tutorial_4.xao similarity index 100% rename from doc/salome/examples/tutorial_4.xao rename to doc/examples/data/tutorial_4.xao diff --git a/doc/salome/examples/tutorial_5.00.med b/doc/examples/data/tutorial_5.00.med similarity index 100% rename from doc/salome/examples/tutorial_5.00.med rename to doc/examples/data/tutorial_5.00.med diff --git a/doc/salome/examples/tutorial_5.fr.med b/doc/examples/data/tutorial_5.fr.med similarity index 100% rename from doc/salome/examples/tutorial_5.fr.med rename to doc/examples/data/tutorial_5.fr.med diff --git a/doc/examples/defining_hypotheses_adaptive1d.py b/doc/examples/defining_hypotheses_adaptive1d.py new file mode 100644 index 000000000..d28342a19 --- /dev/null +++ b/doc/examples/defining_hypotheses_adaptive1d.py @@ -0,0 +1,34 @@ +# Usage of Adaptive 1D hypothesis + +import math + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +box = geom_builder.MakeBoxDXDYDZ( 100, 100, 100 ) +tool = geom_builder.MakeTranslation( box, 50, 0, 10 ) +axis = geom_builder.MakeVector( geom_builder.MakeVertex( 100, 0, 100 ),geom_builder.MakeVertex( 100, 10, 100 ),) +tool = geom_builder.Rotate( tool, axis, math.pi * 25 / 180. ) +shape = geom_builder.MakeCut( box, tool ) +cyl = geom_builder.MakeCylinder( geom_builder.MakeVertex( -10,5, 95 ), geom_builder.MakeVectorDXDYDZ(1,0,0), 2, 90) +shape = geom_builder.MakeCut( shape, cyl ) +tool = geom_builder.MakeBoxTwoPnt( geom_builder.MakeVertex( -10, 2, 15 ), geom_builder.MakeVertex( 90, 5, 16 )) +shape = geom_builder.MakeCut( shape, tool, theName="shape" ) + +# Parameters of Adaptive hypothesis. minSize and maxSize are such that they do not limit +# size of segments because size of geometrical features lies within [2.-100.] range, hence +# size of segments is defined by deflection parameter and size of geometrical features only. +minSize = 0.1 +maxSize = 200 +deflection = 0.05 + +mesh = smesh_builder.Mesh( shape ) +mesh.Segment().Adaptive( minSize, maxSize, deflection ) +mesh.Triangle().MaxElementArea( 300 ) +mesh.Compute() diff --git a/doc/examples/defining_hypotheses_ex01.py b/doc/examples/defining_hypotheses_ex01.py new file mode 100644 index 000000000..734c7ea02 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex01.py @@ -0,0 +1,43 @@ +# Arithmetic Progression and Geometric Progression + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBoxDXDYDZ(10., 10., 10.) +geom_builder.addToStudy(box, "Box") + +# create a hexahedral mesh on the box +hexa = smesh_builder.Mesh(box, "Box : hexahedrical mesh") + +# create a Regular 1D algorithm for edges +algo1D = hexa.Segment() + +# optionally reverse node distribution on certain edges +allEdges = geom_builder.SubShapeAllSorted( box, geom_builder.ShapeType["EDGE"]) +reversedEdges = [ allEdges[0], allEdges[4] ] + +# define "Arithmetic1D" hypothesis to cut all edges in several segments with increasing arithmetic length +algo1D.Arithmetic1D(1, 4, reversedEdges) + +# define "Geometric Progression" hypothesis on one edge to cut this edge in segments with length increasing by 20% starting from 1 +gpAlgo = hexa.Segment( allEdges[1] ) +gpAlgo.GeometricProgression( 1, 1.2 ) + +# propagate distribution of nodes computed using "Geometric Progression" to parallel edges +gpAlgo.PropagationOfDistribution() + +# create a quadrangle 2D algorithm for faces +hexa.Quadrangle() + +# create a hexahedron 3D algorithm for solids +hexa.Hexahedron() + +# compute the mesh +hexa.Compute() diff --git a/doc/examples/defining_hypotheses_ex02.py b/doc/examples/defining_hypotheses_ex02.py new file mode 100644 index 000000000..29e15745d --- /dev/null +++ b/doc/examples/defining_hypotheses_ex02.py @@ -0,0 +1,46 @@ +# Deflection and Number of Segments + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a face from arc and straight segment +px = geom_builder.MakeVertex(100., 0. , 0. ) +py = geom_builder.MakeVertex(0. , 100., 0. ) +pz = geom_builder.MakeVertex(0. , 0. , 100.) + +exy = geom_builder.MakeEdge(px, py) +arc = geom_builder.MakeArc(py, pz, px) + +wire = geom_builder.MakeWire([exy, arc]) + +isPlanarFace = 1 +face1 = geom_builder.MakeFace(wire, isPlanarFace) +geom_builder.addToStudy(face1,"Face1") + +# get edges from the face +e_straight,e_arc = geom_builder.SubShapeAll(face1, geom_builder.ShapeType["EDGE"]) +geom_builder.addToStudyInFather(face1, e_arc, "Arc Edge") + +# create hexahedral mesh +hexa = smesh_builder.Mesh(face1, "Face : triangle mesh") + +# define "NumberOfSegments" hypothesis to cut a straight edge in a fixed number of segments +algo1D = hexa.Segment() +algo1D.NumberOfSegments(6) + +# define "MaxElementArea" hypothesis +algo2D = hexa.Triangle() +algo2D.MaxElementArea(70.0) + +# define a local "Deflection1D" hypothesis on the arc +algo_local = hexa.Segment(e_arc) +algo_local.Deflection1D(1.0) + +# compute the mesh +hexa.Compute() diff --git a/doc/examples/defining_hypotheses_ex03.py b/doc/examples/defining_hypotheses_ex03.py new file mode 100644 index 000000000..21be409db --- /dev/null +++ b/doc/examples/defining_hypotheses_ex03.py @@ -0,0 +1,43 @@ +# Start and End Length + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBoxDXDYDZ(10., 10., 10.) +geom_builder.addToStudy(box, "Box") + +# get one edge of the box to put local hypothesis on +p5 = geom_builder.MakeVertex(5., 0., 0.) +EdgeX = geom_builder.GetEdgeNearPoint(box, p5) +geom_builder.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") + +# create a hexahedral mesh on the box +hexa = smesh_builder.Mesh(box, "Box : hexahedrical mesh") + +# set algorithms +algo1D = hexa.Segment() +hexa.Quadrangle() +hexa.Hexahedron() + +# define "NumberOfSegments" hypothesis to cut an edge in a fixed number of segments +algo1D.NumberOfSegments(4) + +# create a local hypothesis +algo_local = hexa.Segment(EdgeX) + +# define "StartEndLength" hypothesis to cut an edge in several segments with increasing geometric length +algo_local.StartEndLength(1, 6) + +# define "Propagation" hypothesis that propagates all other hypothesis +# on all edges on the opposite side in case of quadrangular faces +algo_local.Propagation() + +# compute the mesh +hexa.Compute() diff --git a/doc/examples/defining_hypotheses_ex04.py b/doc/examples/defining_hypotheses_ex04.py new file mode 100644 index 000000000..043ff1e44 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex04.py @@ -0,0 +1,43 @@ +# Local Length + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBoxDXDYDZ(10., 10., 10.) +geom_builder.addToStudy(box, "Box") + +# get one edge of the box to put local hypothesis on +p5 = geom_builder.MakeVertex(5., 0., 0.) +EdgeX = geom_builder.GetEdgeNearPoint(box, p5) +geom_builder.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") + +# create a hexahedral mesh on the box +hexa = smesh_builder.Mesh(box, "Box : hexahedrical mesh") + +# set algorithms +algo1D = hexa.Segment() +hexa.Quadrangle() +hexa.Hexahedron() + +# define "NumberOfSegments" hypothesis to cut all edges in a fixed number of segments +algo1D.NumberOfSegments(4) + +# create a sub-mesh +algo_local = hexa.Segment(EdgeX) + +# define "LocalLength" hypothesis to cut an edge in several segments with the same length +algo_local.LocalLength(2.) + +# define "Propagation" hypothesis that propagates all other hypothesis +# on all edges on the opposite side in case of quadrangular faces +algo_local.Propagation() + +# compute the mesh +hexa.Compute() diff --git a/doc/examples/defining_hypotheses_ex05.py b/doc/examples/defining_hypotheses_ex05.py new file mode 100644 index 000000000..4b2d1a75b --- /dev/null +++ b/doc/examples/defining_hypotheses_ex05.py @@ -0,0 +1,43 @@ +# Maximum Element Area + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a face +px = geom_builder.MakeVertex(100., 0. , 0. ) +py = geom_builder.MakeVertex(0. , 100., 0. ) +pz = geom_builder.MakeVertex(0. , 0. , 100.) + +vxy = geom_builder.MakeVector(px, py) +arc = geom_builder.MakeArc(py, pz, px) +wire = geom_builder.MakeWire([vxy, arc]) + +isPlanarFace = 1 +face = geom_builder.MakeFace(wire, isPlanarFace) + +# add the face in the study +id_face = geom_builder.addToStudy(face, "Face to be meshed") + +# create a mesh +tria_mesh = smesh_builder.Mesh(face, "Face : triangulation") + +# define 1D meshing: +algo = tria_mesh.Segment() +algo.NumberOfSegments(20) + +# define 2D meshing: + +# assign triangulation algorithm +algo = tria_mesh.Triangle() + +# assign "Max Element Area" hypothesis +algo.MaxElementArea(100) + +# compute the mesh +tria_mesh.Compute() diff --git a/doc/examples/defining_hypotheses_ex06.py b/doc/examples/defining_hypotheses_ex06.py new file mode 100644 index 000000000..aa0cb45bf --- /dev/null +++ b/doc/examples/defining_hypotheses_ex06.py @@ -0,0 +1,36 @@ +# Maximum Element Volume + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder +from salome.geom import geomBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a cylinder +cyl = geom_builder.MakeCylinderRH(30., 50.) +geom_builder.addToStudy(cyl, "cyl") + +# create a mesh on the cylinder +tetra = smesh_builder.Mesh(cyl, "Cylinder : tetrahedrical mesh") + +# assign algorithms +algo1D = tetra.Segment() +algo2D = tetra.Triangle() +algo3D = tetra.Tetrahedron() + +# assign 1D and 2D hypotheses +algo1D.NumberOfSegments(7) +algo2D.MaxElementArea(150.) + +# assign Max Element Volume hypothesis +algo3D.MaxElementVolume(200.) + +# compute the mesh +ret = tetra.Compute() +if ret == 0: + print("problem when computing the mesh") +else: + print("Computation succeeded") diff --git a/doc/examples/defining_hypotheses_ex07.py b/doc/examples/defining_hypotheses_ex07.py new file mode 100644 index 000000000..7295778f0 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex07.py @@ -0,0 +1,36 @@ +# Length from Edges + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create sketchers +sketcher1 = geom_builder.MakeSketcher("Sketcher:F 0 0:TT 70 0:TT 70 70:TT 0 70:WW") +sketcher2 = geom_builder.MakeSketcher("Sketcher:F 20 20:TT 50 20:TT 50 50:TT 20 50:WW") + +# create a face from two wires +isPlanarFace = 1 +face1 = geom_builder.MakeFaces([sketcher1, sketcher2], isPlanarFace) +geom_builder.addToStudy(face1, "Face1") + +# create a mesh +tria = smesh_builder.Mesh(face1, "Face : triangle 2D mesh") + +# Define 1D meshing +algo1D = tria.Segment() +algo1D.LocalLength(3.) + +# create and assign the algorithm for 2D meshing with triangles +algo2D = tria.Triangle() + +# create and assign "LengthFromEdges" hypothesis to build triangles with +# linear size close to the length of the segments generated on the face wires (3.) +algo2D.LengthFromEdges() + +# compute the mesh +tria.Compute() diff --git a/doc/examples/defining_hypotheses_ex08.py b/doc/examples/defining_hypotheses_ex08.py new file mode 100644 index 000000000..43d77f1c2 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex08.py @@ -0,0 +1,63 @@ +# Propagation + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +base = geom_builder.MakeSketcher("Sketcher:F 0 0:TT 10 0:TT 20 10:TT 0 10:WF", theName="F") +box = geom_builder.MakePrismDXDYDZ( base, 0,0,10 ) +geom_builder.addToStudy(box, "Box") + +# get one edge of the box to put local hypothesis on +p5 = geom_builder.MakeVertex(5., 0., 0.) +EdgeX = geom_builder.GetEdgeNearPoint(box, p5) +geom_builder.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") + +# create a hexahedral mesh on the box +hexa = smesh_builder.Mesh(box, "Propagation of hypothesis") + +# set global algorithms and hypotheses +algo1D = hexa.Segment() +hexa.Quadrangle() +hexa.Hexahedron() +algo1D.NumberOfSegments(4) + +# create a sub-mesh with local 1D hypothesis and "Propagation of 1D Hypothesis" +algo_local = hexa.Segment(EdgeX) + +# define "Arithmetic1D" hypothesis to cut an edge in several segments with increasing length +algo_local.Arithmetic1D(1, 4) + +# define "Propagation" hypothesis that propagates "Arithmetic1D" hypothesis +# from 'EdgeX' on opposite sides of all quadilateral faces +algo_local.Propagation() + +# compute the mesh which contains prisms +hexa.Compute() + +# create another mesh on the box +mesh = smesh_builder.Mesh(box, "Propagation of distribution of nodes") + +# set global algorithms and hypotheses +algo1D = mesh.Segment() +mesh.Quadrangle() +mesh.Hexahedron() +algo1D.NumberOfSegments(4) + +# create a sub-mesh with local 1D hypothesis and "Propagation of Node Distribution" +algo_local = mesh.Segment(EdgeX) +algo_local.Arithmetic1D(1, 4) + +# define "Propagation Of Distribution" hypothesis that propagates +# distribution of nodes generated by "Arithmetic1D" hypothesis +# from 'EdgeX' on opposite sides of all quadilateral faces +algo_local.PropagationOfDistribution() + +# compute the mesh which contains hexahedra only +mesh.Compute() diff --git a/doc/examples/defining_hypotheses_ex09.py b/doc/examples/defining_hypotheses_ex09.py new file mode 100644 index 000000000..c9cc52f61 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex09.py @@ -0,0 +1,51 @@ +# Defining Meshing Algorithms + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBoxDXDYDZ(10., 10., 10.) +geom_builder.addToStudy(box, "Box") + +# Create a hexahedral mesh on the box +hexa = smesh_builder.Mesh(box, "Box : hexahedrical mesh") + +# create a Regular 1D algorithm for edges +algo1D = hexa.Segment() + +# create a quadrangle 2D algorithm for faces +algo2D = hexa.Quadrangle() + +# create a hexahedron 3D algorithm for solids +algo3D = hexa.Hexahedron() + +# define hypotheses +algo1D.Arithmetic1D(1, 4) + +# compute the mesh +hexa.Compute() + +# 2. Create a tetrahedral mesh on the box +tetra = smesh_builder.Mesh(box, "Box : tetrahedrical mesh") + +# create a Regular 1D algorithm for edges +algo1D = tetra.Segment() + +# create a Mefisto 2D algorithm for faces +algo2D = tetra.Triangle() + +# create a 3D algorithm for solids +algo3D = tetra.Tetrahedron() + +# define hypotheses +algo1D.Arithmetic1D(1, 4) +algo2D.LengthFromEdges() + +# compute the mesh +tetra.Compute() diff --git a/doc/examples/defining_hypotheses_ex10.py b/doc/examples/defining_hypotheses_ex10.py new file mode 100644 index 000000000..0a1b3d85c --- /dev/null +++ b/doc/examples/defining_hypotheses_ex10.py @@ -0,0 +1,81 @@ +# Projection Algorithms + +# Project prisms from one meshed box to another mesh on the same box + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Prepare geometry + +# Create a parallelepiped +box = geom_builder.MakeBoxDXDYDZ(200, 100, 70) +geom_builder.addToStudy( box, "box" ) + +# Get geom faces to mesh with triangles in the 1ts and 2nd meshes +faces = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) +# 2 adjacent faces of the box +f1 = faces[2] +f2 = faces[0] +# face opposite to f2 +f2opp = geom_builder.GetOppositeFace( box, f2 ) + +# Get vertices used to specify how to associate sides of faces at projection +[v1F1, v2F1] = geom_builder.SubShapeAll(f1, geom_builder.ShapeType["VERTEX"])[:2] +[v1F2, v2F2] = geom_builder.SubShapeAll(f2, geom_builder.ShapeType["VERTEX"])[:2] +geom_builder.addToStudyInFather( box, v1F1, "v1F1" ) +geom_builder.addToStudyInFather( box, v2F1, "v2F1" ) +geom_builder.addToStudyInFather( box, v1F2, "v1F2" ) +geom_builder.addToStudyInFather( box, v2F2, "v2F2" ) + +# Make group of 3 edges of f1 and f2 +edgesF1 = geom_builder.CreateGroup(f1, geom_builder.ShapeType["EDGE"]) +geom_builder.UnionList( edgesF1, geom_builder.SubShapeAll(f1, geom_builder.ShapeType["EDGE"])[:3]) +edgesF2 = geom_builder.CreateGroup(f2, geom_builder.ShapeType["EDGE"]) +geom_builder.UnionList( edgesF2, geom_builder.SubShapeAll(f2, geom_builder.ShapeType["EDGE"])[:3]) +geom_builder.addToStudyInFather( box, edgesF1, "edgesF1" ) +geom_builder.addToStudyInFather( box, edgesF2, "edgesF2" ) + +# Make the source mesh with prisms +src_mesh = smesh_builder.Mesh(box, "Source mesh") +src_mesh.Segment().NumberOfSegments(9,10) +src_mesh.Quadrangle() +src_mesh.Hexahedron() +src_mesh.Triangle(f1) # triangular sub-mesh +src_mesh.Compute() + +# Mesh the box using projection algorithms + +# Define the same global 1D and 2D hypotheses +tgt_mesh = smesh_builder.Mesh(box, "Target mesh") +tgt_mesh.Segment().NumberOfSegments(9,10,UseExisting=True) +tgt_mesh.Quadrangle() + +# Define Projection 1D algorithm to project 1d mesh elements from group edgesF2 to edgesF1 +# It is actually not needed, just a demonstration +proj1D = tgt_mesh.Projection1D( edgesF1 ) +# each vertex must be at the end of a connected group of edges (or a sole edge) +proj1D.SourceEdge( edgesF2, src_mesh, v2F1, v2F2 ) + +# Define 2D hypotheses to project triangles from f1 face of the source mesh to +# f2 face in the target mesh. Vertices specify how to associate sides of faces +proj2D = tgt_mesh.Projection2D( f2 ) +proj2D.SourceFace( f1, src_mesh, v1F1, v1F2, v2F1, v2F2 ) + +# 2D hypotheses to project triangles from f2 of target mesh to the face opposite to f2. +# Association of face sides is default +proj2D = tgt_mesh.Projection2D( f2opp ) +proj2D.SourceFace( f2 ) + +# 3D hypotheses to project prisms from the source to the target mesh +proj3D = tgt_mesh.Projection3D() +proj3D.SourceShape3D( box, src_mesh, v1F1, v1F2, v2F1, v2F2 ) +tgt_mesh.Compute() + +# Move the source mesh to visually compare the two meshes +src_mesh.TranslateObject( src_mesh, smesh_builder.MakeDirStruct( 210, 0, 0 ), Copy=False) diff --git a/doc/examples/defining_hypotheses_ex11.py b/doc/examples/defining_hypotheses_ex11.py new file mode 100644 index 000000000..d2ffdcc6d --- /dev/null +++ b/doc/examples/defining_hypotheses_ex11.py @@ -0,0 +1,37 @@ +# Projection 1D2D +# Project triangles from one meshed face to another mesh on the same box + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Prepare geometry + +# Create a box +box = geom_builder.MakeBoxDXDYDZ(100, 100, 100) + +# Get geom faces to mesh with triangles in the 1ts and 2nd meshes +faces = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) +# 2 adjacent faces of the box +Face_1 = faces[2] +Face_2 = faces[0] + +geom_builder.addToStudy( box, 'box' ) +geom_builder.addToStudyInFather( box, Face_1, 'Face_1' ) +geom_builder.addToStudyInFather( box, Face_2, 'Face_2' ) + +# Make the source mesh triangulated by MEFISTO +src_mesh = smesh_builder.Mesh(Face_1, "Source mesh") +src_mesh.Segment().NumberOfSegments(15) +src_mesh.Triangle() +src_mesh.Compute() + +# Mesh the target mesh using the algorithm Projection1D2D +tgt_mesh = smesh_builder.Mesh(Face_2, "Target mesh") +tgt_mesh.Projection1D2D().SourceFace(Face_1,src_mesh) +tgt_mesh.Compute() diff --git a/doc/examples/defining_hypotheses_ex12.py b/doc/examples/defining_hypotheses_ex12.py new file mode 100644 index 000000000..d7f9ff5b6 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex12.py @@ -0,0 +1,40 @@ +# 1D Mesh with Fixed Points example + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Create face and explode it on edges +face = geom_builder.MakeFaceHW(100, 100, 1) +edges = geom_builder.SubShapeAllSorted(face, geom_builder.ShapeType["EDGE"]) +geom_builder.addToStudy( face, "Face" ) + +# get the first edge from exploded result +edge1 = geom_builder.GetSubShapeID(face, edges[0]) + +# Define Mesh on previously created face +Mesh_1 = smesh_builder.Mesh(face) + +# Create Fixed Point 1D hypothesis and define parameters. +# Note: values greater than 1.0 and less than 0.0 are not taken into account; +# duplicated values are removed. Also, if not specified explicitly, values 0.0 and 1.0 +# add added automatically. +# The number of segments should correspond to the number of points (NbSeg = NbPnt-1); +# extra values of segments splitting parameter are not taken into account, +# while missing values are considered to be equal to 1. +Fixed_points_1D_1 = smesh_builder.CreateHypothesis('FixedPoints1D') +Fixed_points_1D_1.SetPoints( [ 1.1, 0.9, 0.5, 0.0, 0.5, -0.3 ] ) +Fixed_points_1D_1.SetNbSegments( [ 3, 1, 2 ] ) +Fixed_points_1D_1.SetReversedEdges( [edge1] ) + +# Add hypothesis to mesh and define 2D parameters +Mesh_1.AddHypothesis(Fixed_points_1D_1) +Regular_1D = Mesh_1.Segment() +Quadrangle_2D = Mesh_1.Quadrangle() +# Compute mesh +Mesh_1.Compute() diff --git a/doc/examples/defining_hypotheses_ex13.py b/doc/examples/defining_hypotheses_ex13.py new file mode 100644 index 000000000..f1b359e50 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex13.py @@ -0,0 +1,40 @@ +# Radial Quadrangle 1D-2D example + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Create face from the wire and add to study +Face = geom_builder.MakeSketcher("Sketcher:F 0 0:TT 20 0:R 90:C 20 90:WF", [0, 0, 0, 1, 0, 0, 0, 0, 1]) +geom_builder.addToStudy(Face,"Face") +circle, radius1, radius2 = geom_builder.SubShapeAllSorted(Face, geom_builder.ShapeType["EDGE"]) +geom_builder.addToStudyInFather(Face, radius1,"radius1") +geom_builder.addToStudyInFather(Face, radius2,"radius2") +geom_builder.addToStudyInFather(Face, circle,"circle") + +# Define geometry for mesh, and Radial Quadrange algorithm +mesh = smesh_builder.Mesh(Face) +radial_Quad_algo = mesh.Quadrangle(algo=smeshBuilder.RADIAL_QUAD) + +# The Radial Quadrange algorithm can work without any hypothesis +# In this case it uses "Default Nb of Segments" preferences parameter to discretize edges +# So by default there will be 15 segments in both radial and circular directions +mesh.Compute() + +# The Radial Quadrange uses global or local 1d hypotheses if it does +# not have its own hypotheses. +# Define global hypotheses to discretize radial edges and a local one for circular edge +# So that there will be 5 radial layers and 10 circular segments +global_Nb_Segments = mesh.Segment().NumberOfSegments(5) +local_Nb_Segments = mesh.Segment(circle).NumberOfSegments(10) +mesh.Compute() + +# Define own parameters of Radial Quadrange algorithm +# The number of radial layers will be 4 +radial_Quad_algo.NumberOfLayers( 4 ) +mesh.Compute() diff --git a/doc/examples/defining_hypotheses_ex14.py b/doc/examples/defining_hypotheses_ex14.py new file mode 100644 index 000000000..accc5879b --- /dev/null +++ b/doc/examples/defining_hypotheses_ex14.py @@ -0,0 +1,31 @@ +# Quadrangle Parameters example 1 (meshing a face with 3 edges) + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Get 1/4 part from the disk face. +Box_1 = geom_builder.MakeBoxDXDYDZ(100, 100, 100) +Disk_1 = geom_builder.MakeDiskR(100, 1) +Common_1 = geom_builder.MakeCommon(Disk_1, Box_1) +triaVertex = geom_builder.GetVertexNearPoint( Common_1, geom_builder.MakeVertex(0,0,0) ) +geom_builder.addToStudy( Common_1, "Common_1" ) +geom_builder.addToStudyInFather( Common_1, triaVertex, "triaVertex" ) + +# Set the Geometry for meshing +Mesh_1 = smesh_builder.Mesh(Common_1) + +# Define 1D hypothesis +Regular_1D = Mesh_1.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(10) + +# Create Quadrangle parameters and define the Base Vertex. +Quadrangle_2D = Mesh_1.Quadrangle().TriangleVertex( triaVertex ) + +# Compute the mesh +Mesh_1.Compute() diff --git a/doc/examples/defining_hypotheses_ex15.py b/doc/examples/defining_hypotheses_ex15.py new file mode 100644 index 000000000..d1c711844 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex15.py @@ -0,0 +1,43 @@ +# Quadrangle Parameters example 2 (using different types) + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Make quadrangle face and explode it on edges. +Vertex_1 = geom_builder.MakeVertex(0, 0, 0) +Vertex_2 = geom_builder.MakeVertex(40, 0, 0) +Vertex_3 = geom_builder.MakeVertex(40, 30, 0) +Vertex_4 = geom_builder.MakeVertex(0, 30, 0) +Quadrangle_Face_1 = geom_builder.MakeQuad4Vertices(Vertex_1, Vertex_4, Vertex_3, Vertex_2) +[Edge_1,Edge_2,Edge_3,Edge_4] = geom_builder.SubShapeAllSorted(Quadrangle_Face_1, geom_builder.ShapeType["EDGE"]) +geom_builder.addToStudy( Quadrangle_Face_1, "Quadrangle Face_1" ) +geom_builder.addToStudyInFather( Quadrangle_Face_1, Edge_2, "Edge_2" ) + +# Set the Geometry for meshing +Mesh_1 = smesh_builder.Mesh(Quadrangle_Face_1) + +# Create Quadrangle parameters and +# define the Type as Quadrangle Preference +Quad_algo = Mesh_1.Quadrangle() +Quadrangle_Parameters_1 = Quad_algo.QuadrangleParameters( smeshBuilder.QUAD_QUADRANGLE_PREF ) + +# Define other hypotheses and algorithms +Regular_1D = Mesh_1.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(4) + +# Define submesh on one edge to provide different number of segments +Regular_1D_1 = Mesh_1.Segment(geom=Edge_2) +Nb_Segments_2 = Regular_1D_1.NumberOfSegments(10) + +# Compute mesh (with Quadrangle Preference type) +isDone = Mesh_1.Compute() + +# Change type to Reduced and compute again +Quadrangle_Parameters_1.SetQuadType( smeshBuilder.QUAD_REDUCED ) +isDone = Mesh_1.Compute() diff --git a/doc/examples/defining_hypotheses_ex16.py b/doc/examples/defining_hypotheses_ex16.py new file mode 100644 index 000000000..850bc4865 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex16.py @@ -0,0 +1,50 @@ +# "Import 2D Elements from Another Mesh" example + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Make a patritioned box + +box = geom_builder.MakeBoxDXDYDZ(100,100,100) + +N = geom_builder.MakeVectorDXDYDZ( 1,0,0 ) +O = geom_builder.MakeVertex( 50,0,0 ) +plane = geom_builder.MakePlane( O, N, 200 ) # plane YOZ + +shape2boxes = geom_builder.MakeHalfPartition( box, plane ) +boxes = geom_builder.SubShapeAllSorted(shape2boxes, geom_builder.ShapeType["SOLID"]) + +geom_builder.addToStudy( boxes[0], "boxes[0]") +geom_builder.addToStudy( boxes[1], "boxes[1]") +midFace0 = geom_builder.SubShapeAllSorted(boxes[0], geom_builder.ShapeType["FACE"])[5] +geom_builder.addToStudyInFather( boxes[0], midFace0, "middle Face") +midFace1 = geom_builder.SubShapeAllSorted(boxes[1], geom_builder.ShapeType["FACE"])[0] +geom_builder.addToStudyInFather( boxes[1], midFace1, "middle Face") + +# Mesh one of boxes with quadrangles. It is a source mesh + +srcMesh = smesh_builder.Mesh(boxes[0], "source mesh") # box coloser to CS origin +nSeg1 = srcMesh.Segment().NumberOfSegments(4) +srcMesh.Quadrangle() +srcMesh.Compute() +srcFaceGroup = srcMesh.GroupOnGeom( midFace0, "src faces", SMESH.FACE ) + +# Import faces from midFace0 to the target mesh + +tgtMesh = smesh_builder.Mesh(boxes[1], "target mesh") +importAlgo = tgtMesh.UseExisting2DElements(midFace1) +import2hyp = importAlgo.SourceFaces( [srcFaceGroup] ) +tgtMesh.Segment().NumberOfSegments(3) +tgtMesh.Quadrangle() +tgtMesh.Compute() + +# Import the whole source mesh with groups +import2hyp.SetCopySourceMesh(True,True) +tgtMesh.Compute() diff --git a/doc/examples/defining_hypotheses_ex17.py b/doc/examples/defining_hypotheses_ex17.py new file mode 100644 index 000000000..917ddd487 --- /dev/null +++ b/doc/examples/defining_hypotheses_ex17.py @@ -0,0 +1,77 @@ +# Viscous layers construction + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +X = geom_builder.MakeVectorDXDYDZ( 1,0,0 ) +O = geom_builder.MakeVertex( 100,50,50 ) +plane = geom_builder.MakePlane( O, X, 200 ) # plane YZ + +box = geom_builder.MakeBoxDXDYDZ(200,100,100) + +shape = geom_builder.MakeHalfPartition( box, plane ) + +faces = geom_builder.SubShapeAllSorted(shape, geom_builder.ShapeType["FACE"]) +face1 = faces[1] +ignoreFaces = [ faces[0], faces[-1]] + +geom_builder.addToStudy( shape, "shape" ) +geom_builder.addToStudyInFather( shape, face1, "face1") + +# 3D Viscous layers + +mesh = smesh_builder.Mesh(shape, "CFD") + +mesh.Segment().NumberOfSegments( 4 ) + +mesh.Triangle() +mesh.Quadrangle(face1) +algo3D = mesh.Tetrahedron() + +thickness = 20 +numberOfLayers = 10 +stretchFactor = 1.5 +groupName = "Boundary layers" +layersHyp = algo3D.ViscousLayers(thickness,numberOfLayers,stretchFactor, + ignoreFaces, # optional + groupName = groupName) # optional + +mesh.Compute() + +# retrieve boundary prisms created by mesh.Compute() +boundaryGroup = mesh.GetGroupByName( layersHyp.GetGroupName() )[0] +print( "Nb boundary prisms", boundaryGroup.Size() ) + +mesh.MakeGroup("Tetras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_TETRA) +mesh.MakeGroup("Pyras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_PYRAMID) +mesh.MakeGroup("Prims",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_PENTA) + +# 2D Viscous layers + +# 3 edges of the 4 edges of face1 +edgeIds = geom_builder.SubShapeAllIDs( face1, geom_builder.ShapeType["EDGE"])[:-1] + +mesh = smesh_builder.Mesh(face1,"VicsousLayers2D") +mesh.Segment().NumberOfSegments( 5 ) + +# viscous layers will be created on 1 edge, as we set 3 edges to ignore +vlHyp = mesh.Triangle().ViscousLayers2D( 2, 3, 1.5, + edgeIds, isEdgesToIgnore=True, # optional + groupName=groupName) # optional +mesh.Compute() + +# retrieve boundary elements created by mesh.Compute() +quadrangles = mesh.GetGroupByName( vlHyp.GetGroupName() )[0] +print( "Nb boundary quadrangles", quadrangles.Size() ) + +# viscous layers will be created on 3 edges, as we pass isEdgesToIgnore=False +vlHyp.SetEdges( edgeIds, False ) + +mesh.Compute() diff --git a/doc/examples/defining_hypotheses_len_near_vertex.py b/doc/examples/defining_hypotheses_len_near_vertex.py new file mode 100644 index 000000000..f2f024ffd --- /dev/null +++ b/doc/examples/defining_hypotheses_len_near_vertex.py @@ -0,0 +1,31 @@ +# Usage of Segments around Vertex algorithm + +# for meshing a box with quadrangles with refinement near vertices + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBoxDXDYDZ( 10, 10, 10 ) + +# make a mesh +mesh = smesh_builder.Mesh( box ) + +# define quadrangle meshing +algo1d = mesh.Segment() +algo1d.LocalLength( 1. ) +mesh.Quadrangle() + +# add Hexahedron algo to assure that there are no triangles +mesh.Hexahedron() + +# define refinement near vertices +algo1d.LengthNearVertex( 0.2 ) + +mesh.Compute() diff --git a/doc/examples/filters_belong2group.py b/doc/examples/filters_belong2group.py new file mode 100644 index 000000000..e8d039558 --- /dev/null +++ b/doc/examples/filters_belong2group.py @@ -0,0 +1,18 @@ +# Belong to Mesh Group criterion + +# create mesh +from mechanic import * + +# create a group of all faces (quadrangles) generated on sub_face3 +quads_on_face3 = mesh.MakeGroup("quads_on_face3", SMESH.FACE, SMESH.FT_BelongToGeom,'=',sub_face3) +print("There are %s quadrangles generated on '%s' and included in the group '%s'" % ( quads_on_face3.Size(), sub_face3.GetName(), quads_on_face3.GetName() )) + +# create a group of all the rest quadrangles, generated on other faces by combining 2 criteria: +# - negated FT_BelongToMeshGroup to select elements not included in quads_on_face3 +# - FT_ElemGeomType to select quadrangles +not_on_face3 = smesh_builder.GetCriterion( SMESH.FACE, SMESH.FT_BelongToMeshGroup,'=',quads_on_face3, SMESH.FT_LogicalNOT ) +quadrangles = smesh_builder.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=',SMESH.Geom_QUADRANGLE ) + +rest_quads = mesh.MakeGroupByCriteria("rest_quads", [ not_on_face3, quadrangles ]) +print("'%s' group includes all the rest %s quadrangles" % ( rest_quads.GetName(), rest_quads.Size() )) + diff --git a/doc/examples/filters_ex01.py b/doc/examples/filters_ex01.py new file mode 100644 index 000000000..5f1604f8e --- /dev/null +++ b/doc/examples/filters_ex01.py @@ -0,0 +1,44 @@ +# Aspect ratio +# This script demonstrates various usages of filters + +# create mesh +from mechanic import * + +# get faces with aspect ratio > 2.5 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, 2.5) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with aspect ratio > 2.5:", len(ids)) + +# get faces with aspect ratio > 1.5 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, '>', 1.5, mesh=mesh) +ids = filter.GetIDs() +print("Number of faces with aspect ratio > 1.5:", len(ids)) + +# copy the faces with aspect ratio > 1.5 to another mesh; +# this demonstrates that a filter can be used where usually a group or sub-mesh is acceptable +filter.SetMesh( mesh.GetMesh() ) # - actually non necessary as mesh is set at filter creation +mesh2 = smesh_builder.CopyMesh( filter, "AR > 1.5" ) +print("Number of copied faces with aspect ratio > 1.5:", mesh2.NbFaces()) + +# create a group (Group on Filter) of faces with Aspect Ratio < 1.5 +group = mesh.MakeGroup("AR < 1.5", SMESH.FACE, SMESH.FT_AspectRatio, '<', 1.5) +print("Number of faces with aspect ratio < 1.5:", group.Size()) + +# combine several criteria to Create a Group of only Triangular faces with Aspect Ratio < 1.5; +# note that contents of a GroupOnFilter is dynamically updated as the mesh changes +crit = [ smesh_builder.GetCriterion( SMESH.FACE, SMESH.FT_AspectRatio, '<', 1.5, BinaryOp=SMESH.FT_LogicalAND ), + smesh_builder.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=', SMESH.Geom_TRIANGLE ) ] +triaGroup = mesh.MakeGroupByCriteria( "Tria AR < 1.5", crit ) +print("Number of triangles with aspect ratio < 1.5:", triaGroup.Size()) + +# get range of values of Aspect Ratio of all faces in the mesh +aspects = mesh.GetMinMax( SMESH.FT_AspectRatio ) +print("MESH: Min aspect = %s, Max aspect = %s" % ( aspects[0], aspects[1] )) + +# get max value of Aspect Ratio of faces in triaGroup +grAspects = mesh.GetMinMax( SMESH.FT_AspectRatio, triaGroup ) +print("GROUP: Max aspect = %s" % grAspects[1]) + +# get Aspect Ratio of an element +aspect = mesh.FunctorValue( SMESH.FT_AspectRatio, ids[0] ) +print("Aspect ratio of the face %s = %s" % ( ids[0], aspect )) diff --git a/doc/examples/filters_ex02.py b/doc/examples/filters_ex02.py new file mode 100644 index 000000000..1e00b70f5 --- /dev/null +++ b/doc/examples/filters_ex02.py @@ -0,0 +1,9 @@ +# Aspect ratio 3D + +# create mesh with volumes +from mechanic import * + +# get volumes with aspect ratio < 2.0 +filter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_AspectRatio3D, SMESH.FT_LessThan, 2.0) +ids = mesh.GetIdsFromFilter(filter) +print("Number of volumes with aspect ratio < 2.0:", len(ids)) diff --git a/doc/examples/filters_ex03.py b/doc/examples/filters_ex03.py new file mode 100644 index 000000000..c10c1eb8f --- /dev/null +++ b/doc/examples/filters_ex03.py @@ -0,0 +1,9 @@ +# Warping angle + +# create mesh +from mechanic import * + +# get faces with warping angle = 2.0e-13 with tolerance 5.0e-14 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Warping, "=", 2.0e-13, Tolerance=5.0e-14) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with warping angle = 2.0e-13 (tolerance 5.0e-14):", len(ids)) diff --git a/doc/examples/filters_ex04.py b/doc/examples/filters_ex04.py new file mode 100644 index 000000000..96d9e2e5e --- /dev/null +++ b/doc/examples/filters_ex04.py @@ -0,0 +1,9 @@ +# Minimum angle + +# create mesh +from mechanic import * + +# get faces with minimum angle > 75 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_MinimumAngle,">", 75) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with minimum angle > 75:", len(ids)) diff --git a/doc/examples/filters_ex05.py b/doc/examples/filters_ex05.py new file mode 100644 index 000000000..f3ddf6a3b --- /dev/null +++ b/doc/examples/filters_ex05.py @@ -0,0 +1,9 @@ +# Taper + +# create mesh +from mechanic import * + +# get faces with taper < 1.e-15 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Taper, SMESH.FT_LessThan, 1.e-15) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with taper < 1.e-15:", len(ids)) diff --git a/doc/examples/filters_ex06.py b/doc/examples/filters_ex06.py new file mode 100644 index 000000000..a62dbf600 --- /dev/null +++ b/doc/examples/filters_ex06.py @@ -0,0 +1,9 @@ +# Skew + +# create mesh +from mechanic import * + +# get faces with skew > 50 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Skew, SMESH.FT_MoreThan, 50) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with skew > 50:", len(ids)) diff --git a/doc/examples/filters_ex07.py b/doc/examples/filters_ex07.py new file mode 100644 index 000000000..1684de1b6 --- /dev/null +++ b/doc/examples/filters_ex07.py @@ -0,0 +1,11 @@ +# Area + +# create mesh +from mechanic import * + +# get faces with area > 60 and < 90 +criterion1 = smesh_builder.GetCriterion(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 60) +criterion2 = smesh_builder.GetCriterion(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 90) +filter = smesh_builder.GetFilterFromCriteria([criterion1,criterion2], SMESH.FT_LogicalAND) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with area in range (60,90):", len(ids)) diff --git a/doc/examples/filters_ex08.py b/doc/examples/filters_ex08.py new file mode 100644 index 000000000..a56e45bbe --- /dev/null +++ b/doc/examples/filters_ex08.py @@ -0,0 +1,9 @@ +# Volume + +# create mesh with volumes +from mechanic import * + +# get volumes faces with volume > 100 +filter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_Volume3D, SMESH.FT_MoreThan, 100) +ids = mesh.GetIdsFromFilter(filter) +print("Number of volumes with volume > 100:", len(ids)) diff --git a/doc/examples/filters_ex09.py b/doc/examples/filters_ex09.py new file mode 100644 index 000000000..d78f685ba --- /dev/null +++ b/doc/examples/filters_ex09.py @@ -0,0 +1,23 @@ +# Free borders + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create mesh +face = geom_builder.MakeFaceHW(100, 100, 1, theName="quadrangle") +mesh = smesh_builder.Mesh(face) +mesh.Segment().NumberOfSegments(10) +mesh.Triangle().MaxElementArea(25) +mesh.Compute() + +# get all free borders +filter = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_FreeBorders) +ids = mesh.GetIdsFromFilter(filter) +print("Number of edges on free borders:", len(ids)) diff --git a/doc/examples/filters_ex10.py b/doc/examples/filters_ex10.py new file mode 100644 index 000000000..8f27a7c18 --- /dev/null +++ b/doc/examples/filters_ex10.py @@ -0,0 +1,24 @@ +# Free edges + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create mesh +face = geom_builder.MakeFaceHW(100, 100, 1) +geom_builder.addToStudy( face, "quadrangle" ) +mesh = smesh_builder.Mesh(face) +mesh.Segment().NumberOfSegments(10) +mesh.Triangle().MaxElementArea(25) +mesh.Compute() + +# get all faces with free edges +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_FreeEdges) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with free edges:", len(ids)) diff --git a/doc/examples/filters_ex11.py b/doc/examples/filters_ex11.py new file mode 100644 index 000000000..3c4751bd3 --- /dev/null +++ b/doc/examples/filters_ex11.py @@ -0,0 +1,12 @@ +# Free nodes + +# create mesh +from mechanic import * + +# add node +mesh.AddNode(0,0,0) + +# get all free nodes +filter = smesh_builder.GetFilter(SMESH.NODE, SMESH.FT_FreeNodes) +ids = mesh.GetIdsFromFilter(filter) +print("Number of free nodes:", len(ids)) diff --git a/doc/examples/filters_ex12.py b/doc/examples/filters_ex12.py new file mode 100644 index 000000000..9dc021307 --- /dev/null +++ b/doc/examples/filters_ex12.py @@ -0,0 +1,9 @@ +# Free faces + +# create mesh +from mechanic import * + +# get all free faces +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_FreeFaces) +ids = mesh.GetIdsFromFilter(filter) +print("Number of free faces:", len(ids)) diff --git a/doc/examples/filters_ex13.py b/doc/examples/filters_ex13.py new file mode 100644 index 000000000..89e7acdca --- /dev/null +++ b/doc/examples/filters_ex13.py @@ -0,0 +1,12 @@ +# Bare border faces + +# create mesh +from mechanic import * + +# remove some faces to have faces with bare borders +mesh.RemoveElements( mesh.GetElementsByType(SMESH.FACE)[0:5] ) + +# get all faces with bare borders +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_BareBorderFace) +ids = mesh.GetIdsFromFilter(filter) +print("Faces with bare borders:", ids) diff --git a/doc/examples/filters_ex14.py b/doc/examples/filters_ex14.py new file mode 100644 index 000000000..a5e02736b --- /dev/null +++ b/doc/examples/filters_ex14.py @@ -0,0 +1,10 @@ +# Coplanar faces + +# create mesh +from mechanic import * + +faceID = mesh.GetElementsByType(SMESH.FACE)[0] +# get all faces co-planar to the first face with tolerance 5 degrees +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_CoplanarFaces,faceID,Tolerance=5.0) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces coplanar with the first one:", len(ids)) diff --git a/doc/examples/filters_ex15.py b/doc/examples/filters_ex15.py new file mode 100644 index 000000000..ff022e690 --- /dev/null +++ b/doc/examples/filters_ex15.py @@ -0,0 +1,9 @@ +# Over-constrained faces + +# create mesh +from mechanic import * + +# get all over-constrained faces +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_OverConstrainedFace) +ids = mesh.GetIdsFromFilter(filter) +print("Over-constrained faces:", ids) diff --git a/doc/examples/filters_ex16.py b/doc/examples/filters_ex16.py new file mode 100644 index 000000000..9b9f5523e --- /dev/null +++ b/doc/examples/filters_ex16.py @@ -0,0 +1,30 @@ +# Double edges, Double faces, Double volumes + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# make a mesh on a box +box = geom_builder.MakeBoxDXDYDZ(100,100,100) +mesh = smesh_builder.Mesh( box, "Box" ) +mesh.Segment().NumberOfSegments(10) +mesh.Quadrangle() +mesh.Hexahedron() +mesh.Compute() +# copy all elements with translation and Merge nodes +mesh.TranslateObject( mesh, smesh_builder.MakeDirStruct( 10,0,0), Copy=True ) +mesh.MergeNodes( mesh.FindCoincidentNodes(1e-7) ) +# create filters to find equal elements +equalEdgesFilter = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_EqualEdges) +equalFacesFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_EqualFaces) +equalVolumesFilter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_EqualVolumes) +# get equal elements +print("Number of equal edges:", len( mesh.GetIdsFromFilter( equalEdgesFilter ))) +print("Number of equal faces:", len( mesh.GetIdsFromFilter( equalFacesFilter ))) +print("Number of equal volumes:", len( mesh.GetIdsFromFilter( equalVolumesFilter ))) diff --git a/doc/examples/filters_ex17.py b/doc/examples/filters_ex17.py new file mode 100644 index 000000000..43a5af866 --- /dev/null +++ b/doc/examples/filters_ex17.py @@ -0,0 +1,25 @@ +# Double nodes + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# make a mesh on a box +box = geom_builder.MakeBoxDXDYDZ(100,100,100) +mesh = smesh_builder.Mesh( box, "Box" ) +mesh.Segment().NumberOfSegments(10) +mesh.Quadrangle() +mesh.Hexahedron() +mesh.Compute() +# copy all elements with translation +mesh.TranslateObject( mesh, [10,0,0], Copy=True ) +# create a filter to find nodes equal within tolerance of 1e-5 +filter = smesh_builder.GetFilter(SMESH.NODE, SMESH.FT_EqualNodes, Tolerance=1e-5) +# get equal nodes +print("Number of equal nodes:", len( mesh.GetIdsFromFilter( filter ))) diff --git a/doc/examples/filters_ex18.py b/doc/examples/filters_ex18.py new file mode 100644 index 000000000..f5c0e7d3b --- /dev/null +++ b/doc/examples/filters_ex18.py @@ -0,0 +1,27 @@ +# Borders at multi-connection + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# make a mesh on a box +box = geom_builder.MakeBoxDXDYDZ(100,100,100) +mesh = smesh_builder.Mesh( box, "Box" ) +mesh.Segment().NumberOfSegments(10) +mesh.Quadrangle() +mesh.Hexahedron() +mesh.Compute() +# copy all elements with translation and merge nodes +mesh.TranslateObject( mesh, [10,0,0], Copy=True ) +mesh.MergeNodes( mesh.FindCoincidentNodes( 1e-5 )) + +# get mesh edges with number of connected elements (faces and volumes) == 3 +filter = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_MultiConnection, 3) +ids = mesh.GetIdsFromFilter(filter) +print("Number of border edges with 3 faces connected:", len(ids)) diff --git a/doc/examples/filters_ex19.py b/doc/examples/filters_ex19.py new file mode 100644 index 000000000..b55a08a89 --- /dev/null +++ b/doc/examples/filters_ex19.py @@ -0,0 +1,9 @@ +# Borders at multi-connection 2D + +# create mesh +from mechanic import * + +# get faces which consist of edges belonging to 2 mesh elements +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_MultiConnection2D, 2) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces consisting of edges belonging to 2 faces:", len(ids)) diff --git a/doc/examples/filters_ex20.py b/doc/examples/filters_ex20.py new file mode 100644 index 000000000..d0a22f6a8 --- /dev/null +++ b/doc/examples/filters_ex20.py @@ -0,0 +1,9 @@ +# Length + +# create mesh +from mechanic import * + +# get edges with length > 14 +filter = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_Length, SMESH.FT_MoreThan, 14) +ids = mesh.GetIdsFromFilter(filter) +print("Number of edges with length > 14:", len(ids)) diff --git a/doc/examples/filters_ex21.py b/doc/examples/filters_ex21.py new file mode 100644 index 000000000..229a0ca44 --- /dev/null +++ b/doc/examples/filters_ex21.py @@ -0,0 +1,9 @@ +# Length 2D + +# create mesh +from mechanic import * + +# get all faces that have edges with length > 14 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_MaxElementLength2D, SMESH.FT_MoreThan, 14) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with maximum edge length > 14:", len(ids)) diff --git a/doc/examples/filters_ex22.py b/doc/examples/filters_ex22.py new file mode 100644 index 000000000..96f8bda65 --- /dev/null +++ b/doc/examples/filters_ex22.py @@ -0,0 +1,9 @@ +# Element Diameter 2D + +# create mesh +from mechanic import * + +# get all faces that have elements with length > 10 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_MaxElementLength2D, SMESH.FT_MoreThan, 10) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces with maximum element length > 10:", len(ids)) diff --git a/doc/examples/filters_ex23.py b/doc/examples/filters_ex23.py new file mode 100644 index 000000000..8a34c163c --- /dev/null +++ b/doc/examples/filters_ex23.py @@ -0,0 +1,9 @@ +# Element Diameter 3D + +# create mesh with volumes +from mechanic import * + +# get all volumes that have elements with length > 10 +filter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_MaxElementLength3D, SMESH.FT_MoreThan, 10) +ids = mesh.GetIdsFromFilter(filter) +print("Number of volumes with maximum element length > 10:", len(ids)) diff --git a/doc/examples/filters_ex24.py b/doc/examples/filters_ex24.py new file mode 100644 index 000000000..2d8075cec --- /dev/null +++ b/doc/examples/filters_ex24.py @@ -0,0 +1,11 @@ +# Bare border volumes + +# create mesh +from mechanic import * + +# remove some volumes to have volumes with bare borders +mesh.RemoveElements(mesh.GetElementsByType(SMESH.VOLUME)[0:5]) +# get all volumes with bare borders +filter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_BareBorderVolume) +ids = mesh.GetIdsFromFilter(filter) +print("Volumes with bare borders:", ids) diff --git a/doc/examples/filters_ex25.py b/doc/examples/filters_ex25.py new file mode 100644 index 000000000..2cae3e14f --- /dev/null +++ b/doc/examples/filters_ex25.py @@ -0,0 +1,9 @@ +# Over-constrained volumes + +# create mesh +from mechanic import * + +# get all over-constrained volumes +filter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_OverConstrainedVolume) +ids = mesh.GetIdsFromFilter(filter) +print("Over-constrained volumes:", ids) diff --git a/doc/examples/filters_ex26.py b/doc/examples/filters_ex26.py new file mode 100644 index 000000000..71bfc4b15 --- /dev/null +++ b/doc/examples/filters_ex26.py @@ -0,0 +1,9 @@ +# Belong to Geom + +# create mesh +from mechanic import * + +# get all faces which nodes lie on the face sub_face3 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_BelongToGeom, sub_face3) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces which nodes lie on sub_face3:", len(ids)) diff --git a/doc/examples/filters_ex27.py b/doc/examples/filters_ex27.py new file mode 100644 index 000000000..8ac06e38d --- /dev/null +++ b/doc/examples/filters_ex27.py @@ -0,0 +1,9 @@ +# Lying on Geom + +# create mesh +from mechanic import * + +# get all faces at least one node of each lies on the face sub_face3 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_LyingOnGeom, sub_face3) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces at least one node of each lies on sub_face3:", len(ids)) diff --git a/doc/examples/filters_ex28.py b/doc/examples/filters_ex28.py new file mode 100644 index 000000000..19e698391 --- /dev/null +++ b/doc/examples/filters_ex28.py @@ -0,0 +1,13 @@ +# Belong to Plane + +# create mesh +from mechanic import * + +# create plane +plane_1 = geom_builder.MakePlane(p3,seg1,2000) +geom_builder.addToStudy(plane_1, "plane_1") + +# get all nodes which lie on the plane \a plane_1 +filter = smesh_builder.GetFilter(SMESH.NODE, SMESH.FT_BelongToPlane, plane_1) +ids = mesh.GetIdsFromFilter(filter) +print("Number of nodes which lie on the plane plane_1:", len(ids)) diff --git a/doc/examples/filters_ex29.py b/doc/examples/filters_ex29.py new file mode 100644 index 000000000..5b2b9db2d --- /dev/null +++ b/doc/examples/filters_ex29.py @@ -0,0 +1,9 @@ +# Belong to Cylinder + +# create mesh +from mechanic import * + +# get all faces which lie on the cylindrical face \a sub_face1 +filter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_BelongToCylinder, sub_face1) +ids = mesh.GetIdsFromFilter(filter) +print("Number of faces which lie on the cylindrical surface sub_face1:", len(ids)) diff --git a/doc/examples/filters_ex30.py b/doc/examples/filters_ex30.py new file mode 100644 index 000000000..b34bdadb0 --- /dev/null +++ b/doc/examples/filters_ex30.py @@ -0,0 +1,14 @@ +# Belong to Surface + +# create mesh +from mechanic import * + +# create b-spline +spline_1 = geom_builder.MakeInterpol([p4,p6,p3,p1]) +surface_1 = geom_builder.MakePrismVecH( spline_1, vz, 70.0 ) +geom_builder.addToStudy(surface_1, "surface_1") + +# get all nodes which lie on the surface \a surface_1 +filter = smesh_builder.GetFilter(SMESH.NODE, SMESH.FT_BelongToGenSurface, surface_1) +ids = mesh.GetIdsFromFilter(filter) +print("Number of nodes which lie on the surface surface_1:", len(ids)) diff --git a/doc/examples/filters_ex31.py b/doc/examples/filters_ex31.py new file mode 100644 index 000000000..5bbad4ec8 --- /dev/null +++ b/doc/examples/filters_ex31.py @@ -0,0 +1,13 @@ +# Range of IDs + +# create mesh +from mechanic import * + +# get nodes with identifiers [5-10] and [15-30] +criterion1 = smesh_builder.GetCriterion(SMESH.NODE, SMESH.FT_RangeOfIds, Threshold="5-10",\ + BinaryOp=SMESH.FT_LogicalOR) +criterion2 = smesh_builder.GetCriterion(SMESH.NODE, SMESH.FT_RangeOfIds, Threshold="15-30") +filter = smesh_builder.CreateFilterManager().CreateFilter() +filter.SetCriteria([criterion1,criterion2]) +ids = mesh.GetIdsFromFilter(filter) +print("Number of nodes in ranges [5-10] and [15-30]:", len(ids)) diff --git a/doc/examples/filters_ex32.py b/doc/examples/filters_ex32.py new file mode 100644 index 000000000..f0e07815c --- /dev/null +++ b/doc/examples/filters_ex32.py @@ -0,0 +1,9 @@ +# Badly oriented volume + +# create mesh with volumes +from mechanic import * + +# get all badly oriented volumes +filter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_BadOrientedVolume) +ids = mesh.GetIdsFromFilter(filter) +print("Number of badly oriented volumes:", len(ids)) diff --git a/doc/examples/filters_ex33.py b/doc/examples/filters_ex33.py new file mode 100644 index 000000000..8d90a6533 --- /dev/null +++ b/doc/examples/filters_ex33.py @@ -0,0 +1,20 @@ +# Linear / quadratic + +# create mesh +from mechanic import * + +# get linear and quadratic edges +filter_linear = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_LinearOrQuadratic) +filter_quadratic = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_LinearOrQuadratic, SMESH.FT_LogicalNOT) +ids_linear = mesh.GetIdsFromFilter(filter_linear) +ids_quadratic = mesh.GetIdsFromFilter(filter_quadratic) +print("Number of linear edges:", len(ids_linear), "; number of quadratic edges:", len(ids_quadratic)) + +# convert mesh to quadratic +print("Convert to quadratic...") +mesh.ConvertToQuadratic() + +# get linear and quadratic edges +ids_linear = mesh.GetIdsFromFilter(filter_linear) +ids_quadratic = mesh.GetIdsFromFilter(filter_quadratic) +print("Number of linear edges:", len(ids_linear), "; number of quadratic edges:", len(ids_quadratic)) diff --git a/doc/examples/filters_ex34.py b/doc/examples/filters_ex34.py new file mode 100644 index 000000000..5fcb89ae8 --- /dev/null +++ b/doc/examples/filters_ex34.py @@ -0,0 +1,15 @@ +# Group color + +# create mesh +from mechanic import * + +# create group of edges +all_edges = mesh.GetElementsByType(SMESH.EDGE) +grp = mesh.MakeGroupByIds("edges group", SMESH.EDGE, all_edges[:len(all_edges) // 4]) +import SALOMEDS +c = SALOMEDS.Color(0.1, 0.5, 1.0) +grp.SetColor(c) +# get number of the edges not belonging to the group with the given color +filter = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_GroupColor, c, SMESH.FT_LogicalNOT) +ids = mesh.GetIdsFromFilter(filter) +print ("Number of edges not belonging to the group with color (0.1, 0.5, 1.0):", len(ids)) diff --git a/doc/examples/filters_ex35.py b/doc/examples/filters_ex35.py new file mode 100644 index 000000000..a44fce582 --- /dev/null +++ b/doc/examples/filters_ex35.py @@ -0,0 +1,18 @@ +# Geometry type + +# create mesh with volumes +from mechanic import * + +# get all triangles, quadrangles, tetrahedrons, pyramids +filter_tri = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_ElemGeomType, SMESH.Geom_TRIANGLE) +filter_qua = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_ElemGeomType, SMESH.Geom_QUADRANGLE) +filter_tet = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_ElemGeomType, SMESH.Geom_TETRA) +filter_pyr = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_ElemGeomType, SMESH.Geom_PYRAMID) +ids_tri = mesh.GetIdsFromFilter(filter_tri) +ids_qua = mesh.GetIdsFromFilter(filter_qua) +ids_tet = mesh.GetIdsFromFilter(filter_tet) +ids_pyr = mesh.GetIdsFromFilter(filter_pyr) +print("Number of triangles:", len(ids_tri)) +print("Number of quadrangles:", len(ids_qua)) +print("Number of tetrahedrons:", len(ids_tet)) +print("Number of pyramids:", len(ids_pyr)) diff --git a/doc/examples/filters_ex36.py b/doc/examples/filters_ex36.py new file mode 100644 index 000000000..ebf39f325 --- /dev/null +++ b/doc/examples/filters_ex36.py @@ -0,0 +1,17 @@ +# Combine several criteria into a filter + +# create mesh +from mechanic import * + +# get all the quadrangle faces ... +criterion1 = smesh_builder.GetCriterion(SMESH.FACE, SMESH.FT_ElemGeomType, SMESH.Geom_QUADRANGLE, SMESH.FT_LogicalAND) +# ... but those from sub_face3 +criterion2 = smesh_builder.GetCriterion(SMESH.FACE, SMESH.FT_BelongToGeom, sub_face3, SMESH.FT_LogicalNOT) + +quadFilter = smesh_builder.GetFilterFromCriteria([criterion1,criterion2]) + +# get faces satisfying the criteria +ids = mesh.GetIdsFromFilter(quadFilter) + +# create a group of faces satisfying the criteria +myGroup = mesh.GroupOnFilter(SMESH.FACE,"Quads_on_cylindrical_faces",quadFilter) diff --git a/doc/examples/filters_ex37.py b/doc/examples/filters_ex37.py new file mode 100644 index 000000000..821e2418b --- /dev/null +++ b/doc/examples/filters_ex37.py @@ -0,0 +1,15 @@ +# Entity type + +# create a mesh +from mechanic import * + +# make the mesh quadratic +mesh.ConvertToQuadratic() +# make some elements bi-quadratic +for face in shape_faces[: len(shape_faces) // 2]: + mesh.ConvertToQuadratic( theSubMesh=mesh.Group( face ), theToBiQuad=True ) + +# get triangles with 7 nodes +filter_tri = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_EntityType,'=', SMESH.Entity_BiQuad_Triangle ) +ids_tri = mesh.GetIdsFromFilter(filter_tri) +print("Number of bi-quadratic triangles:", len(ids_tri)) diff --git a/doc/examples/filters_ex38.py b/doc/examples/filters_ex38.py new file mode 100644 index 000000000..1aee7325e --- /dev/null +++ b/doc/examples/filters_ex38.py @@ -0,0 +1,15 @@ +# Ball diameter + +# create a mesh +from mechanic import * + +# create several balls with increasing diameter +for i in range(1,10): + diameter = float( i ) + mesh.AddBall( i, diameter ) + pass + +# get balls with diameter > 5. +diam_filter = smesh_builder.GetFilter(SMESH.BALL, SMESH.FT_BallDiameter,'>', 5. ) +ids = mesh.GetIdsFromFilter( diam_filter ) +print("Number of balls with diameter > 5:", len(ids)) diff --git a/doc/examples/filters_ex39.py b/doc/examples/filters_ex39.py new file mode 100644 index 000000000..b66a8d0b7 --- /dev/null +++ b/doc/examples/filters_ex39.py @@ -0,0 +1,55 @@ +# "Elements of a domain" filter and "Renumber" hypothesis + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create two boxes to have two domains in the mesh + +box1 = geom_builder.MakeBoxDXDYDZ( 100,100,100 ) +box2 = geom_builder.MakeTranslation( box1, 200, 0, 0 ) +boxes = geom_builder.MakeCompound( [box1, box2] ) +box1, box2 = geom_builder.SubShapeAll( boxes, geom_builder.ShapeType["SHAPE"], "box") + +vertex = geom_builder.SubShape( box1, geom_builder.ShapeType["VERTEX"], [1] ) + +# create a mesh + +mesh = smesh_builder.Mesh( boxes ) +mesh.Segment(box1).NumberOfSegments( 5 ) # to have different nb of elements on the boxes +mesh.Segment(box2).NumberOfSegments( 10 ) +mesh.Quadrangle() +ijkAlgo = mesh.Hexahedron() + +# Use Renumber hypothesis to get hexahedra and nodes numbered like in a structured mesh. +# k axis of box1 will be ( 100,100,0 ) - ( 100,100,100 ) +# k axis of box2 will be ( 0,0,0 ) - (0,0,100), by default +v000 = geom_builder.MakeVertex( 100,100,0, theName='v000' ) # can use box sub-vertex or standalone one +v001 = geom_builder.GetVertexNearPoint( box1, geom_builder.MakeVertex(100,100,100), theName='v001') +ijkAlgo.Renumber([ smeshBuilder.BlockCS( box1, v000, v001 ) ]) + +mesh.Compute() + +# Create filters with FT_ConnectedElements criterion by pointing a domain in different ways: + +# using point coordinates in box_1 +nodeFilter = smesh_builder.GetFilter( SMESH.NODE, SMESH.FT_ConnectedElements, "=", "1.,2,10", mesh=mesh ) +print("Nb. nodes in box_1:", len( nodeFilter.GetIDs())) + +# using point coordinates in box_2 +edgeFilter = smesh_builder.GetFilter( SMESH.EDGE, SMESH.FT_ConnectedElements, "=", [202,1,1 ], mesh=mesh ) +print("Nb. segments in box_2:", len( edgeFilter.GetIDs())) + +# using a geom vertex of box_1 +faceFilter = smesh_builder.GetFilter( SMESH.FACE, SMESH.FT_ConnectedElements, "=", vertex, mesh=mesh ) +print("Nb. faces in box_1:", len( edgeFilter.GetIDs())) + +# using node ID in box_2 +voluFilter = smesh_builder.GetFilter( SMESH.VOLUME, SMESH.FT_ConnectedElements, "=", 10, mesh=mesh ) +print("Nb. volumes in box_2:", len( voluFilter.GetIDs())) diff --git a/doc/examples/filters_node_nb_conn.py b/doc/examples/filters_node_nb_conn.py new file mode 100644 index 000000000..052ff9dc8 --- /dev/null +++ b/doc/examples/filters_node_nb_conn.py @@ -0,0 +1,9 @@ +# Number of connectivities of a node + +# create a mesh +from mechanic import * + +# get nodes connected to more than 6 tetrahedra +conn_nb_filter = smesh_builder.GetFilter(SMESH.NODE, SMESH.FT_NodeConnectivityNumber,'>', 6 ) +ids = mesh.GetIdsFromFilter( conn_nb_filter ) +print("Number of nodes connected to more than 6 tetrahedra:", len(ids)) diff --git a/doc/examples/generate_flat_elements.py b/doc/examples/generate_flat_elements.py new file mode 100644 index 000000000..b17c55f91 --- /dev/null +++ b/doc/examples/generate_flat_elements.py @@ -0,0 +1,64 @@ +# Double nodes on groups boundaries + +# This example represents an iron cable (a thin cylinder) in a concrete block (a big cylinder). +# The big cylinder is defined by two geometric volumes. + +import salome +salome.salome_init_without_session() + +import GEOM +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# geometry + +O = geom_builder.MakeVertex(0, 0, 0) +OX = geom_builder.MakeVectorDXDYDZ(1, 0, 0) +OY = geom_builder.MakeVectorDXDYDZ(0, 1, 0) +OZ = geom_builder.MakeVectorDXDYDZ(0, 0, 1) +Vertex_1 = geom_builder.MakeVertex(50, 0, 0) +Cylinder_1 = geom_builder.MakeCylinder(O, OX, 10, 500) +Cylinder_2 = geom_builder.MakeCylinder(Vertex_1, OX, 100, 400) +Vertex_2 = geom_builder.MakeVertex(-200, -200, -200) +Vertex_3 = geom_builder.MakeVertex(250, 200, 200) +Box_1 = geom_builder.MakeBoxTwoPnt(Vertex_2, Vertex_3) +Fuse_1 = geom_builder.MakeFuse(Cylinder_1, Cylinder_2) +Partition_1 = geom_builder.MakePartition([Fuse_1], [Cylinder_1, Box_1], [], [], geom_builder.ShapeType["SOLID"], 0, [], 0) +[Solid_1,Solid_2] = geom_builder.GetShapesOnShape(Cylinder_1, Partition_1, geom_builder.ShapeType["SOLID"], GEOM.ST_IN) +[Solid_3,Solid_4] = geom_builder.GetShapesOnShape(Cylinder_2, Partition_1, geom_builder.ShapeType["SOLID"], GEOM.ST_IN) +Vertex_4 = geom_builder.MakeVertex(450, 0, 0) +Vertex_5 = geom_builder.MakeVertex(500, 0, 0) +Vertex_6 = geom_builder.MakeVertex(550, 0, 0) +vec1 = geom_builder.MakeVector(Vertex_4, Vertex_5) +vec2 = geom_builder.MakeVector(Vertex_5, Vertex_6) +[Face_1] = geom_builder.GetShapesOnPlane(Partition_1, geom_builder.ShapeType["FACE"], vec1, GEOM.ST_ON) +[Face_2] = geom_builder.GetShapesOnPlane(Partition_1, geom_builder.ShapeType["FACE"], vec2, GEOM.ST_ON) + +# meshing (we have linear tetrahedrons here, but other elements are OK) + +Mesh_1 = smesh_builder.Mesh(Partition_1) +Regular_1D = Mesh_1.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(15) +MEFISTO_2D = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO) +Length_From_Edges_2D = MEFISTO_2D.LengthFromEdges() +ALGO3D = Mesh_1.Tetrahedron() +isDone = Mesh_1.Compute() + +# relevant groups of volumes and faces + +Solid_1_1 = Mesh_1.GroupOnGeom(Solid_1,'Solid_1',SMESH.VOLUME) +Solid_2_1 = Mesh_1.GroupOnGeom(Solid_2,'Solid_2',SMESH.VOLUME) +Solid_3_1 = Mesh_1.GroupOnGeom(Solid_3,'Solid_3',SMESH.VOLUME) +Solid_4_1 = Mesh_1.GroupOnGeom(Solid_4,'Solid_4',SMESH.VOLUME) +Face_1_1 = Mesh_1.GroupOnGeom(Face_1,'Face_1',SMESH.FACE) +Face_2_1 = Mesh_1.GroupOnGeom(Face_2,'Face_2',SMESH.FACE) + +# Building of flat elements + +Mesh_1.DoubleNodesOnGroupBoundaries([Solid_1_1, Solid_2_1, Solid_3_1, Solid_4_1], 1) + +Mesh_1.CreateFlatElementsOnFacesGroups([Face_1_1, Face_2_1]) diff --git a/doc/examples/grouping_elements_ex01.py b/doc/examples/grouping_elements_ex01.py new file mode 100644 index 000000000..e76dbdedf --- /dev/null +++ b/doc/examples/grouping_elements_ex01.py @@ -0,0 +1,70 @@ +# Create a Standalone Group + +from mechanic import * + +# Get ids of all faces with area > 100 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 100.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# create a group consisting of faces with area > 100 +aGroup1 = mesh.MakeGroupByIds("Area > 100", SMESH.FACE, anIds) + +# create a group that contains all nodes from the mesh +aGroup2 = mesh.CreateEmptyGroup(SMESH.NODE, "all nodes") +aGroup2.AddFrom(mesh.mesh) + + +# ==================================== +# Various methods of the Group object +# ==================================== + +aGroup = mesh.CreateEmptyGroup(SMESH.NODE, "aGroup") + +# set/get group name +aGroup.SetName( "new name" ) +print("name", aGroup.GetName()) + +# get group type (type of entities in the group, SMESH.NODE in our case) +print("type", aGroup.GetType()) + +# get number of entities (nodes in our case) in the group +print("size", aGroup.Size()) + +# check of emptiness +print("is empty", aGroup.IsEmpty()) + +# check of presence of an entity in the group +aGroup.Add([1,2]) # Add() method is specific to the standalone group +print("contains node 2", aGroup.Contains(2)) + +# get an entity by index +print("1st node", aGroup.GetID(1)) + +# get all entities +print("all", aGroup.GetIDs()) + +# get number of nodes (actual for groups of elements) +print("nb nodes", aGroup.GetNumberOfNodes()) + +# get underlying nodes (actual for groups of elements) +print("nodes", aGroup.GetNodeIDs()) + +# set/get color +import SALOMEDS +aGroup.SetColor( SALOMEDS.Color(1.,1.,0.)); +print("color", aGroup.GetColor()) + +# ---------------------------------------------------------------------------- +# methods specific to the standalone group and not present in GroupOnGeometry +# and GroupOnFilter +# ---------------------------------------------------------------------------- + +# clear the group's contents +aGroup.Clear() + +# add contents of other object (group, sub-mesh, filter) +aGroup.AddFrom( aGroup2 ) + +# removes entities +aGroup.Remove( [2,3,4] ) diff --git a/doc/examples/grouping_elements_ex02.py b/doc/examples/grouping_elements_ex02.py new file mode 100644 index 000000000..e3ddd4e22 --- /dev/null +++ b/doc/examples/grouping_elements_ex02.py @@ -0,0 +1,42 @@ +# Create a Group on Geometry + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBox(0., 0., 0., 100., 100., 100.) +geom_builder.addToStudy(box, "box") + +# add the first face of the box to the study +subShapeList = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) +face = subShapeList[0] +geom_builder.addToStudyInFather(box, face, "face 1") + +# create group of edges on the face +aGeomGroupE = geom_builder.CreateGroup(face, geom_builder.ShapeType["EDGE"]) +geom_builder.AddObject(aGeomGroupE, 3) +geom_builder.AddObject(aGeomGroupE, 6) +geom_builder.AddObject(aGeomGroupE, 8) +geom_builder.AddObject(aGeomGroupE, 10) +geom_builder.addToStudyInFather(face, aGeomGroupE, "Group of Edges") + +# create quadrangle 2D mesh on the box +quadra = smesh_builder.Mesh(box, "Box : quadrangle 2D mesh") +algo1D = quadra.Segment() +quadra.Quadrangle() +algo1D.NumberOfSegments(7) + +# compute the mesh +quadra.Compute() + +# create SMESH group on the face with name "SMESHGroup1" +aSmeshGroup1 = quadra.GroupOnGeom(face, "SMESHGroup1") + +# create SMESH group on with default name +aSmeshGroup2 = quadra.GroupOnGeom(aGeomGroupE) diff --git a/doc/examples/grouping_elements_ex03.py b/doc/examples/grouping_elements_ex03.py new file mode 100644 index 000000000..2de59d734 --- /dev/null +++ b/doc/examples/grouping_elements_ex03.py @@ -0,0 +1,44 @@ +# Create a Group on Filter + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +box = geom_builder.MakeBoxDXDYDZ(10,10,10) + +# make a mesh with quadrangles of different area in range [1,16] +mesh = smesh_builder.Mesh(box,"Quad mesh") +hyp1D = mesh.Segment().StartEndLength( 1, 4 ) +mesh.Quadrangle() +mesh.Compute() + +# create a group on filter selecting faces of medium size +critaria = [ \ + smesh_builder.GetCriterion(SMESH.FACE, SMESH.FT_Area, ">", 1.1, BinaryOp=SMESH.FT_LogicalAND ), + smesh_builder.GetCriterion(SMESH.FACE, SMESH.FT_Area, "<", 15.0 ) + ] +filt = smesh_builder.GetFilterFromCriteria( critaria ) +filtGroup = mesh.GroupOnFilter( SMESH.FACE, "group on filter", filt ) +print("Group on filter contains %s elements" % filtGroup.Size()) + +# group on filter is updated if the mesh is modified +hyp1D.SetStartLength( 2.5 ) +hyp1D.SetEndLength( 2.5 ) +mesh.Compute() +print("After mesh change, group on filter contains %s elements" % filtGroup.Size()) + +# set a new filter defining the group +filt2 = smesh_builder.GetFilter( SMESH.FACE, SMESH.FT_RangeOfIds, "1-50" ) +filtGroup.SetFilter( filt2 ) +print("With a new filter, group on filter contains %s elements" % filtGroup.Size()) + +# group is updated at modification of the filter +filt2.SetCriteria( [ smesh_builder.GetCriterion( SMESH.FACE, SMESH.FT_RangeOfIds, "1-70" )]) +filtIDs3 = filtGroup.GetIDs() +print("After filter modification, group on filter contains %s elements" % filtGroup.Size()) diff --git a/doc/examples/grouping_elements_ex04.py b/doc/examples/grouping_elements_ex04.py new file mode 100644 index 000000000..d3b88c13b --- /dev/null +++ b/doc/examples/grouping_elements_ex04.py @@ -0,0 +1,38 @@ +# Edit a Group + +from mechanic import * + +# Get ids of all faces with area > 35 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 35.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area > 35, Nb = ", len(anIds)) + +# create a group by adding elements with area > 35 +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 35") +aGroup.Add(anIds) + +# Get ids of all faces with area > 40 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 40.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area > 40, Nb = ", len(anIds)) + +# create a group of elements with area [35; 40] by removing elements with area > 40 from group aGroup +aGroup.Remove(anIds) +aGroup.SetName("35 < Area < 40") + +# print the result +aGroupElemIDs = aGroup.GetListOfID() + +print("Criterion: 35 < Area < 40, Nb = ", len(aGroupElemIDs)) + +j = 1 +for i in range(len(aGroupElemIDs)): + if j > 20: j = 1; print("") + print(aGroupElemIDs[i], end=' ') + j = j + 1 + pass +print("") diff --git a/doc/examples/grouping_elements_ex05.py b/doc/examples/grouping_elements_ex05.py new file mode 100644 index 000000000..a1ef0a55d --- /dev/null +++ b/doc/examples/grouping_elements_ex05.py @@ -0,0 +1,49 @@ +# Union of groups + +from mechanic import * +import SALOMEDS + +# Criterion : AREA > 20 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 20.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area > 20, Nb = ", len( anIds )) + +# create a group by adding elements with area > 20 +aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 20") +aGroup1.Add(anIds) + +# Criterion : AREA = 20 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_EqualTo, 20.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area = 20, Nb = ", len( anIds )) + +# create a group by adding elements with area = 20 +aGroup2 = mesh.CreateEmptyGroup( SMESH.FACE, "Area = 20" ) + +aGroup2.Add(anIds) + +# create union group : area >= 20 +aGroup3 = mesh.UnionListOfGroups([aGroup1, aGroup2], "Area >= 20") +aGroup3.SetColor( SALOMEDS.Color(1.,1.,0.)); +print("Criterion: Area >= 20, Nb = ", len(aGroup3.GetListOfID())) +# Please note that also there is UnionGroups() method which works with two groups only + +# Criterion : AREA < 20 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 20.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area < 20, Nb = ", len(anIds)) + +# create a group by adding elements with area < 20 +aGroup4 = mesh.CreateEmptyGroup(SMESH.FACE, "Area < 20") +aGroup4.Add(anIds) +aGroup4.SetColor( SALOMEDS.Color(1.,0.,0.)); + +# create union group : area >= 20 and area < 20 +aGroup5 = mesh.UnionListOfGroups([aGroup3, aGroup4], "Any Area") +print("Criterion: Any Area, Nb = ", len(aGroup5.GetListOfID())) diff --git a/doc/examples/grouping_elements_ex06.py b/doc/examples/grouping_elements_ex06.py new file mode 100644 index 000000000..e6bbd495c --- /dev/null +++ b/doc/examples/grouping_elements_ex06.py @@ -0,0 +1,31 @@ +# Intersection of groups + +from mechanic import * + +# Criterion : AREA > 20 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 20.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area > 20, Nb = ", len(anIds)) + +# create a group by adding elements with area > 20 +aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 20") +aGroup1.Add(anIds) + +# Criterion : AREA < 60 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 60.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area < 60, Nb = ", len(anIds)) + +# create a group by adding elements with area < 60 +aGroup2 = mesh.CreateEmptyGroup(SMESH.FACE, "Area < 60") +aGroup2.Add(anIds) + +# create an intersection of groups : 20 < area < 60 +aGroup3 = mesh.IntersectListOfGroups([aGroup1, aGroup2], "20 < Area < 60") +print("Criterion: 20 < Area < 60, Nb = ", len(aGroup3.GetListOfID())) +# Please note that also there is IntersectGroups() method which works with two groups only + diff --git a/doc/examples/grouping_elements_ex07.py b/doc/examples/grouping_elements_ex07.py new file mode 100644 index 000000000..98108fdc3 --- /dev/null +++ b/doc/examples/grouping_elements_ex07.py @@ -0,0 +1,28 @@ +# Cut of groups + +from mechanic import * + +# Criterion : AREA > 20 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 20.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area > 20, Nb = ", len(anIds)) + +# create a group by adding elements with area > 20 +aGroupMain = mesh.MakeGroupByIds("Area > 20", SMESH.FACE, anIds) + +# Criterion : AREA < 60 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 60.) + +anIds = mesh.GetIdsFromFilter(aFilter) + +print("Criterion: Area < 60, Nb = ", len(anIds)) + +# create a group by adding elements with area < 60 +aGroupTool = mesh.MakeGroupByIds("Area < 60", SMESH.FACE, anIds) + +# create a cut of groups : area >= 60 +aGroupRes = mesh.CutGroups(aGroupMain, aGroupTool, "Area >= 60") +print("Criterion: Area >= 60, Nb = ", len(aGroupRes.GetListOfID())) +# Please note that also there is CutListOfGroups() method which works with lists of groups of any lengths diff --git a/doc/examples/grouping_elements_ex08.py b/doc/examples/grouping_elements_ex08.py new file mode 100644 index 000000000..244e8c73c --- /dev/null +++ b/doc/examples/grouping_elements_ex08.py @@ -0,0 +1,27 @@ +# Creating groups of entities basing on nodes of other groups + +from mechanic import * +import SALOMEDS + +# Criterion : AREA > 100 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 100.) + +# create a group by adding elements with area > 100 +aSrcGroup1 = mesh.GroupOnFilter(SMESH.FACE, "Area > 100", aFilter) +aSrcGroup1.SetColor( SALOMEDS.Color(1.,1.,0.)) +print("Criterion: Area > 100, Nb = ", aSrcGroup1.Size()) + +# Criterion : AREA < 30 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 30.) + +# create a group by adding elements with area < 30 +aSrcGroup2 = mesh.GroupOnFilter(SMESH.FACE, "Area < 30", aFilter) +aSrcGroup2.SetColor( SALOMEDS.Color(1.,0.,0.)) +print("Criterion: Area < 30, Nb = ", aSrcGroup2.Size()) + + +# Create group of edges using source groups of faces +aGrp = mesh.CreateDimGroup( [aSrcGroup1, aSrcGroup2], SMESH.EDGE, "Edges" ) + +# Create group of nodes using source groups of faces +aGrp = mesh.CreateDimGroup( [aSrcGroup1, aSrcGroup2], SMESH.NODE, "Nodes" ) diff --git a/doc/examples/grouping_elements_ex09.py b/doc/examples/grouping_elements_ex09.py new file mode 100644 index 000000000..e46dedabc --- /dev/null +++ b/doc/examples/grouping_elements_ex09.py @@ -0,0 +1,18 @@ +# Creating groups of faces separated by sharp edges + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a mesh on a box +box = geom_builder.MakeBoxDXDYDZ( 10,10,10, theName="Box" ) +mesh = smesh_builder.Mesh(box,"Mesh") +mesh.AutomaticHexahedralization() + +# create groups of faces of each side of the box +groups = mesh.FaceGroupsSeparatedByEdges( 89 ) diff --git a/doc/examples/measurements_ex01.py b/doc/examples/measurements_ex01.py new file mode 100644 index 000000000..a0c9991a8 --- /dev/null +++ b/doc/examples/measurements_ex01.py @@ -0,0 +1,70 @@ +# Minimum Distance + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create and mesh two boxes + +p1 = geom_builder.MakeVertex(10.0, 10.0, 10.0) +p2 = geom_builder.MakeVertex(20.0, 20.0, 20.0) +p3 = geom_builder.MakeVertex(30.0, 40.0, 50.0) +p4 = geom_builder.MakeVertex(70.0, 100.0, 200.0) + +box1 = geom_builder.MakeBoxTwoPnt(p1, p2) +box2 = geom_builder.MakeBoxTwoPnt(p3, p4) + +mesh1 = smesh_builder.Mesh(box1, 'box1') +mesh1.Segment().NumberOfSegments(2) +mesh1.Triangle().MaxElementArea(10) + +mesh2 = smesh_builder.Mesh(box2, 'box2') +mesh2.Segment().NumberOfSegments(5) +mesh2.Triangle().MaxElementArea(20) + +mesh1.Compute() +mesh2.Compute() + +# compute min distance from grp1 to the origin (not available yet) +smesh_builder.MinDistance(mesh1) + +# compute min distance from node 10 of mesh1 to the origin +smesh_builder.MinDistance(mesh1, id1=10) +# ... or +mesh1.MinDistance(10) + +# compute min distance between nodes 10 and 20 of mesh1 +smesh_builder.MinDistance(mesh1, id1=10, id2=20) +# ... or +mesh1.MinDistance(10, 20) + +# compute min distance from element 100 of mesh1 to the origin (not available yet) +smesh_builder.MinDistance(mesh1, id1=100, isElem1=True) +# ... or +mesh1.MinDistance(100, isElem1=True) + +# compute min distance between elements 100 and 200 of mesh1 (not available yet) +smesh_builder.MinDistance(mesh1, id1=100, id2=200, isElem1=True, isElem2=True) +# ... or +mesh1.MinDistance(100, 200, True, True) + +# compute min distance from element 100 to node 20 of mesh1 (not available yet) +smesh_builder.MinDistance(mesh1, id1=100, id2=20, isElem1=True) +# ... or +mesh1.MinDistance(100, 20, True) + +# compute min distance from mesh1 to mesh2 (not available yet) +smesh_builder.MinDistance(mesh1, mesh2) + +# compute min distance from node 10 of mesh1 to node 20 of mesh2 +smesh_builder.MinDistance(mesh1, mesh2, 10, 20) + +# compute min distance from node 10 of mesh1 to element 200 of mesh2 (not available yet) +smesh_builder.MinDistance(mesh1, mesh2, 10, 200, isElem2=True) + +# etc... diff --git a/doc/examples/measurements_ex02.py b/doc/examples/measurements_ex02.py new file mode 100644 index 000000000..33bffbaea --- /dev/null +++ b/doc/examples/measurements_ex02.py @@ -0,0 +1,45 @@ +# Bounding Box + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create and mesh two boxes + +p1 = geom_builder.MakeVertex(10.0, 10.0, 10.0) +p2 = geom_builder.MakeVertex(20.0, 20.0, 20.0) +p3 = geom_builder.MakeVertex(30.0, 40.0, 50.0) +p4 = geom_builder.MakeVertex(70.0, 100.0, 200.0) + +box1 = geom_builder.MakeBoxTwoPnt(p1, p2) +box2 = geom_builder.MakeBoxTwoPnt(p3, p4) + +mesh1 = smesh_builder.Mesh(box1, 'box1') +mesh1.Segment().NumberOfSegments(2) +mesh1.Triangle().MaxElementArea(10) + +mesh2 = smesh_builder.Mesh(box2, 'box2') +mesh2.Segment().NumberOfSegments(5) +mesh2.Triangle().MaxElementArea(20) + +mesh1.Compute() +mesh2.Compute() + +# compute bounding box for mesh1 +mesh1.BoundingBox() + +# compute bounding box for list of nodes of mesh2 +mesh2.BoundingBox([363, 364, 370, 371, 372, 373, 379, 380, 381]) + +# compute bounding box for list of elements of mesh2 +mesh2.BoundingBox([363, 364, 370, 371, 372, 373, 379, 380, 381], isElem=True) + +# compute common bounding box of mesh1 and mesh2 +smesh_builder.BoundingBox([mesh1, mesh2]) + +# etc... diff --git a/doc/examples/measurements_ex03.py b/doc/examples/measurements_ex03.py new file mode 100644 index 000000000..44d2f6e71 --- /dev/null +++ b/doc/examples/measurements_ex03.py @@ -0,0 +1,77 @@ +# Basic Properties + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBoxDXDYDZ(100,100,100) +face = geom_builder.SubShapeAllSorted(box, geom_builder.ShapeType['FACE'])[0] + +# mesh a box +mesh = smesh_builder.Mesh(box) +submesh_1d = mesh.Segment().NumberOfSegments(5) +submesh_2d = mesh.Quadrangle() +submesh_3d = mesh.Hexahedron() +submesh_2d_face = mesh.Triangle(face) +mesh.Compute() + +# create a group + +group_2d = mesh.Group(face) + +# compute basic properties + +print("Get basic properties: approach 1 (via measurements tool) ----") + +measure = smesh_builder.CreateMeasurements() + +print("* for mesh:") +print(" length:", measure.Length(mesh.mesh)) +print(" area:", measure.Area(mesh.mesh)) +print(" volume:", measure.Volume(mesh.mesh)) + +print("* for group (2d):") +print(" length:", measure.Length(group_2d)) +print(" area:", measure.Area(group_2d)) +print(" volume:", measure.Volume(group_2d)) + +print("* for submesh (2d):") +print(" length:", measure.Length(submesh_2d_face.GetSubMesh())) +print(" area:", measure.Area(submesh_2d_face.GetSubMesh())) +print(" volume:", measure.Volume(submesh_2d_face.GetSubMesh())) + +measure.UnRegister() + +print("Get basic properties: approach 2 (via smeshBuilder) ----") + +print("* for mesh:") +print(" length:", smesh_builder.GetLength(mesh)) +print(" area:", smesh_builder.GetArea(mesh)) +print(" volume:", smesh_builder.GetVolume(mesh)) + +print("* for group (2d):") +print(" length:", smesh_builder.GetLength(group_2d)) +print(" area:", smesh_builder.GetArea(group_2d)) +print(" volume:", smesh_builder.GetVolume(group_2d)) + +print("* for submesh (2d):") +print(" length:", smesh_builder.GetLength(submesh_2d_face)) +print(" area:", smesh_builder.GetArea(submesh_2d_face)) +print(" volume:", smesh_builder.GetVolume(submesh_2d_face)) + +print("Get basic properties: approach 3 (via smeshBuilder.Mesh) ----") + +print("* for mesh:") +print(" length:", mesh.GetLength()) +print(" area:", mesh.GetArea()) +print(" volume:", mesh.GetVolume()) + +print("* for group (2d): unsupported") + +print("* for submesh (2d): unsupported") diff --git a/doc/examples/measurements_ex04.py b/doc/examples/measurements_ex04.py new file mode 100644 index 000000000..ab66d2cc0 --- /dev/null +++ b/doc/examples/measurements_ex04.py @@ -0,0 +1,26 @@ +# Angle measurement + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# use smeshBuilder.GetAngle() to compute angle between 3 arbitrary points + +p0 = [1,0,0] +p1 = [0,0,0] +p2 = [0,1,0] + +a1 = smesh_builder.GetAngle(p0, p1, p2) +print("Right angle measure", a1 ) + +# use Mesh.GetAngle() to compute angle between 3 nodes of a mesh + +mesh = smesh_builder.Mesh() +n0 = mesh.AddNode( *p0 ) +n1 = mesh.AddNode( *p1 ) +n2 = mesh.AddNode( *p2 ) + +a2 = mesh.GetAngle( n0,n1,n2 ) diff --git a/doc/examples/mechanic.py b/doc/examples/mechanic.py new file mode 100644 index 000000000..902ce7184 --- /dev/null +++ b/doc/examples/mechanic.py @@ -0,0 +1,86 @@ +# Inspired by SMESH_mechanic.py. +# Creates geometry and a mesh to be used in other examples +# -------------------------------------------------------- + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Geometry +# -------- + +# create planar face on a wire combined from a segment and three arcs + +p1 = geom_builder.MakeVertex(100.0, 0.0, 0.0) +p2 = geom_builder.MakeVertex(50.0, 50.0, 0.0) +p3 = geom_builder.MakeVertex(100.0, 100.0, 0.0) +arc1 = geom_builder.MakeArc(p1, p2, p3) + +p4 = geom_builder.MakeVertex(170.0, 100.0, 0.0) +seg1 = geom_builder.MakeVector(p3, p4) + +p5 = geom_builder.MakeVertex(200.0, 70.0, 0.0) +p6 = geom_builder.MakeVertex(170.0, 40.0, 0.0) +arc2 = geom_builder.MakeArc(p4, p5, p6) + +p7 = geom_builder.MakeVertex(120.0, 30.0, 0.0) +arc3 = geom_builder.MakeArc(p6, p7, p1) + +wire1 = geom_builder.MakeWire([arc1, seg1, arc2, arc3]) +face1 = geom_builder.MakeFace(wire1, True) + +# create main shape by extruding just created planar face + +pO = geom_builder.MakeVertex(0.0, 0.0, 0.0) +pz = geom_builder.MakeVertex(0.0, 0.0, 100.0) +vz = geom_builder.MakeVector(pO, pz) +prism1 = geom_builder.MakePrismVecH(face1, vz, 100.0) + +# create two cylinders + +pc1 = geom_builder.MakeVertex(90.0, 50.0, -40.0) +pc2 = geom_builder.MakeVertex(170.0, 70.0, -40.0) + +cyl1 = geom_builder.MakeCylinder(pc1, vz, 20.0, 180.0) +cyl2 = geom_builder.MakeCylinder(pc2, vz, 20.0, 180.0) + +# create final shape by cutting one cylinder and fusing with another + +shape = geom_builder.MakeBoolean(prism1, cyl1, 2) +mechanic = geom_builder.MakeBoolean(shape, cyl2, 3) + +# get all faces from shape and keep sub of them into variables for future processing + +shape_faces = geom_builder.SubShapeAllSorted(mechanic, geom_builder.ShapeType["FACE"]) + +sub_face1 = shape_faces[0] +sub_face2 = shape_faces[4] +sub_face3 = shape_faces[5] +sub_face4 = shape_faces[10] + +# Mesh +# ---- + +# create tria+tetra mesh from mechanic shape + +mesh = smesh_builder.Mesh(mechanic, "mechanic") +mesh.Segment().NumberOfSegments(10) +mesh.Triangle().MaxElementArea(25) +mesh.Tetrahedron() + +# create quad sub-meshes on faces sub_face1 - sub_face4 + +mesh.Quadrangle(sub_face1) +mesh.Quadrangle(sub_face2) +mesh.Quadrangle(sub_face3) +mesh.Quadrangle(sub_face4) + +# finally compute whole mesh + +mesh.Compute() diff --git a/doc/examples/mesh_3d.py b/doc/examples/mesh_3d.py new file mode 100644 index 000000000..69bd3f0e1 --- /dev/null +++ b/doc/examples/mesh_3d.py @@ -0,0 +1,104 @@ +# 3d mesh generation and mesh exploration + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +### +# Geometry: an assembly of a box, a cylinder and a truncated cone +# to be meshed with tetrahedra +### + +# Define values +name = "ex21_lamp" +cote = 60 +section = 20 +size = 200 +radius_1 = 80 +radius_2 = 40 +height = 100 + +# Build a box +box = geom_builder.MakeBox(-cote, -cote, -cote, +cote, +cote, +cote) + +# Build a cylinder +pt1 = geom_builder.MakeVertex(0, 0, cote/3) +di1 = geom_builder.MakeVectorDXDYDZ(0, 0, 1) +cyl = geom_builder.MakeCylinder(pt1, di1, section, size) + +# Build a truncated cone +pt2 = geom_builder.MakeVertex(0, 0, size) +cone = geom_builder.MakeCone(pt2, di1, radius_1, radius_2, height) + +# Fuse +box_cyl = geom_builder.MakeFuse(box, cyl) +piece = geom_builder.MakeFuse(box_cyl, cone) + +# Add to the study +geom_builder.addToStudy(piece, name) + +# Create a group of faces +faces_group = geom_builder.CreateGroup(piece, geom_builder.ShapeType["FACE"]) +group_name = name + "_grp" +geom_builder.addToStudy(faces_group, group_name) +faces_group.SetName(group_name) + +# Add faces to the group +faces = geom_builder.SubShapeAllIDs(piece, geom_builder.ShapeType["FACE"]) +geom_builder.UnionIDs(faces_group, faces) + +### +# Create a mesh +### + +# Define a mesh on a geometry +tetra = smesh_builder.Mesh(piece, name) + +# Define 1D algorithm and hypothesis +algo1d = tetra.Segment() +algo1d.LocalLength(10) + +# Define 2D algorithm and hypothesis +algo2d = tetra.Triangle() +algo2d.LengthFromEdges() + +# Define 3D algorithm and hypothesis +algo3d = tetra.Tetrahedron() +algo3d.MaxElementVolume(100) + +# Compute the mesh +tetra.Compute() + +# Create a mesh group of all triangles generated on geom faces present in faces_group +group = tetra.Group(faces_group) + +### +# Explore the mesh +### + +# Retrieve coordinates of nodes +coordStr = "" +for node in tetra.GetNodesId(): + x,y,z = tetra.GetNodeXYZ( node ) + coordStr += "%s (%s, %s, %s) " % ( node, x,y,z ) + pass + +# Retrieve nodal connectivity of triangles +triaStr = "" +for tria in tetra.GetElementsByType( SMESH.FACE ): + nodes = tetra.GetElemNodes( tria ) + triaStr += "%s (%s, %s, %s) " % ( tria, nodes[0], nodes[1], nodes[2] ) + +# Retrieve group contents +groupStr = "" +for group in tetra.GetGroups(): + ids = group.GetIDs() + name = group.GetName() + eType = group.GetType() + groupStr += "'%s' %s: %s \n" % ( name, eType, ids ) diff --git a/doc/examples/modifying_meshes_cut_triangles.py b/doc/examples/modifying_meshes_cut_triangles.py new file mode 100644 index 000000000..f45cc190c --- /dev/null +++ b/doc/examples/modifying_meshes_cut_triangles.py @@ -0,0 +1,38 @@ +# Cutting Triangles + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# create 3 triangles and 1 segment all sharing edge 1-2 +mesh = smesh_builder.Mesh() +n1 = mesh.AddNode( 0, 0, 0) +n2 = mesh.AddNode( 0, 0, -10) +n3 = mesh.AddNode( 10, 0, 0) +n4 = mesh.AddNode( 0, 10, 0) +n5 = mesh.AddNode( 0, -10, 0) +mesh.AddFace([ n1, n2, n3]) +mesh.AddFace([ n1, n2, n4]) +mesh.AddFace([ n1, n2, n5]) +mesh.AddEdge([ n1, n2] ) + +# =========================================================================== +# cut all the triangles and the segment by setting a new node on the segment +# =========================================================================== + +mesh.AddNodeOnSegment( n1, n2, 0.6 ) +assert mesh.NbNodes() == 6 # one new node created +assert mesh.NbTriangles() == 6 # each of the 3 triangles is split into two +assert mesh.NbEdges() == 2 # a segment is split into two + +# =============================================================== +# cut a triangle into three by adding a new node on the triangle +# =============================================================== + +triangleID = 1 +mesh.AddNodeOnFace( triangleID, 2, 0, -6 ) +assert mesh.NbNodes() == 7 # one new node created +assert mesh.NbTriangles() == 8 # the triangles is split into three diff --git a/doc/examples/modifying_meshes_ex01.py b/doc/examples/modifying_meshes_ex01.py new file mode 100644 index 000000000..ceeb3c02d --- /dev/null +++ b/doc/examples/modifying_meshes_ex01.py @@ -0,0 +1,15 @@ +# Add Node + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder +smesh_builder = smeshBuilder.New() + +mesh = smesh_builder.Mesh() + +# add node +new_id = mesh.AddNode(50, 10, 0) +print("") +if new_id == 0: print("KO node addition.") +else: print("New Node has been added with ID ", new_id) diff --git a/doc/examples/modifying_meshes_ex02.py b/doc/examples/modifying_meshes_ex02.py new file mode 100644 index 000000000..1f1aeca3d --- /dev/null +++ b/doc/examples/modifying_meshes_ex02.py @@ -0,0 +1,19 @@ +# Add 0D Element + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder +smesh_builder = smeshBuilder.New() + +mesh = smesh_builder.Mesh() + +# add node +node_id = mesh.AddNode(50, 10, 0) + +# add 0D Element +new_id = mesh.Add0DElement(node_id) + +print("") +if new_id == 0: print("KO node addition.") +else: print("New 0D Element has been added with ID ", new_id) diff --git a/doc/examples/modifying_meshes_ex03.py b/doc/examples/modifying_meshes_ex03.py new file mode 100644 index 000000000..d5a524904 --- /dev/null +++ b/doc/examples/modifying_meshes_ex03.py @@ -0,0 +1,50 @@ +# Add 0D Element on Element Nodes + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a geometry +box = geom_builder.MakeBoxDXDYDZ( 10, 10, 10 ) +face = geom_builder.SubShapeAll( box, geom_builder.ShapeType["FACE"])[0] + +# make 3D mesh +mesh = smesh_builder.Mesh( box ) +mesh.AutomaticHexahedralization(0) + +# create 0D elements on all nodes of the mesh +res = mesh.Add0DElementsToAllNodes( mesh ) + +# find 0D elements on all nodes of the mesh, all found nodes are added to a new group +groupName = "0Dmesh" +res = mesh.Add0DElementsToAllNodes( mesh, groupName ) +mesh.RemoveGroupWithContents( res ) # remove all found 0D elements + +# create 0D elements on all nodes of a sub-mesh, with group creation +groupName = "0Dsubmesh" +submesh = mesh.GetSubMesh( face, "faceSM") +res = mesh.Add0DElementsToAllNodes( submesh, groupName ) + +# create 0D elements on all nodes of a group +group = mesh.Group( face, "faceGroup" ) +res = mesh.Add0DElementsToAllNodes( group ) + +# remove all 0D elements +mesh.RemoveElements( mesh.GetIdsFromFilter( smesh_builder.GetFilter( SMESH.ELEM0D, + SMESH.FT_ElemGeomType, + "=",SMESH.Geom_POINT ))) + +# create 0D elements on all nodes of some elements +res = mesh.Add0DElementsToAllNodes( mesh.GetElementsId() ) + +mesh.RemoveElements( mesh.GetElementsByType( SMESH.ELEM0D )) + +# create 0D elements on some nodes +nodes = list(range(1,10)) +res = mesh.Add0DElementsToAllNodes( mesh.GetIDSource( nodes, SMESH.NODE )) diff --git a/doc/examples/modifying_meshes_ex04.py b/doc/examples/modifying_meshes_ex04.py new file mode 100644 index 000000000..ffd16eb7f --- /dev/null +++ b/doc/examples/modifying_meshes_ex04.py @@ -0,0 +1,12 @@ +# Add Edge + +from mechanic import * + +# add node +n1 = mesh.AddNode(50, 10, 0) +if n1 == 0: print("KO node addition.") + +# add edge +e1 = mesh.AddEdge([n1, 38]) +if e1 == 0: print("KO edge addition.") +else: print("New Edge has been added with ID ", e1) diff --git a/doc/examples/modifying_meshes_ex05.py b/doc/examples/modifying_meshes_ex05.py new file mode 100644 index 000000000..ba62dfc56 --- /dev/null +++ b/doc/examples/modifying_meshes_ex05.py @@ -0,0 +1,12 @@ +# Add Triangle + +from mechanic import * + +# add node +n1 = mesh.AddNode(50, 10, 0) +if n1 == 0: print("KO node addition.") + +# add triangle +t1 = mesh.AddFace([n1, 38, 39]) +if t1 == 0: print("KO triangle addition.") +else: print("New Triangle has been added with ID ", t1) diff --git a/doc/examples/modifying_meshes_ex06.py b/doc/examples/modifying_meshes_ex06.py new file mode 100644 index 000000000..449f75338 --- /dev/null +++ b/doc/examples/modifying_meshes_ex06.py @@ -0,0 +1,15 @@ +# Add Quadrangle + +from mechanic import * + +# add node +n1 = mesh.AddNode(50, 10, 0) +if n1 == 0: print("KO node addition.") + +n2 = mesh.AddNode(40, 20, 0) +if n2 == 0: print("KO node addition.") + +# add quadrangle +q1 = mesh.AddFace([n2, n1, 38, 39]) +if q1 == 0: print("KO quadrangle addition.") +else: print("New Quadrangle has been added with ID ", q1) diff --git a/doc/examples/modifying_meshes_ex07.py b/doc/examples/modifying_meshes_ex07.py new file mode 100644 index 000000000..898c3a2f9 --- /dev/null +++ b/doc/examples/modifying_meshes_ex07.py @@ -0,0 +1,12 @@ +# Add Tetrahedron + +from mechanic import * + +# add node +n1 = mesh.AddNode(50, 10, 0) +if n1 == 0: print("KO node addition.") + +# add tetrahedron +t1 = mesh.AddVolume([n1, 38, 39, 246]) +if t1 == 0: print("KO tetrahedron addition.") +else: print("New Tetrahedron has been added with ID ", t1) diff --git a/doc/examples/modifying_meshes_ex08.py b/doc/examples/modifying_meshes_ex08.py new file mode 100644 index 000000000..5face16ec --- /dev/null +++ b/doc/examples/modifying_meshes_ex08.py @@ -0,0 +1,16 @@ +# Add Hexahedron + +from mechanic import * + +# add nodes +nId1 = mesh.AddNode(50, 10, 0) +nId2 = mesh.AddNode(47, 12, 0) +nId3 = mesh.AddNode(50, 10, 10) +nId4 = mesh.AddNode(47, 12, 10) + +if nId1 == 0 or nId2 == 0 or nId3 == 0 or nId4 == 0: print("KO node addition.") + +# add hexahedron +vId = mesh.AddVolume([nId2, nId1, 38, 39, nId4, nId3, 245, 246]) +if vId == 0: print("KO Hexahedron addition.") +else: print("New Hexahedron has been added with ID ", vId) diff --git a/doc/examples/modifying_meshes_ex09.py b/doc/examples/modifying_meshes_ex09.py new file mode 100644 index 000000000..b015f1046 --- /dev/null +++ b/doc/examples/modifying_meshes_ex09.py @@ -0,0 +1,34 @@ +# Add Polygon + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# create an empty mesh structure +mesh = smesh_builder.Mesh() + +# a method to build a polygonal mesh element with angles: +def MakePolygon (a_mesh, x0, y0, z0, radius, nb_vert, smesh_builder): + import math + + al = 2.0 * math.pi / nb_vert + node_ids = [] + + # Create nodes for a polygon + for ii in range(nb_vert): + nid = smesh_builder.AddNode(x0 + radius * math.cos(ii*al), + y0 + radius * math.sin(ii*al), + z0) + node_ids.append(nid) + pass + + # Create a polygon + return smesh_builder.AddPolygonalFace(node_ids) + +# Create three polygons +f1 = MakePolygon(mesh, 0, 0, 0, 30, 13, smesh_builder=mesh) +f2 = MakePolygon(mesh, 0, 0, 10, 21, 9, smesh_builder=mesh) +f3 = MakePolygon(mesh, 0, 0, 20, 13, 6, smesh_builder=mesh) diff --git a/doc/examples/modifying_meshes_ex10.py b/doc/examples/modifying_meshes_ex10.py new file mode 100644 index 000000000..d880897fb --- /dev/null +++ b/doc/examples/modifying_meshes_ex10.py @@ -0,0 +1,60 @@ +# Add Polyhedron + +import math + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# create an empty mesh structure +mesh = smesh_builder.Mesh() + +# Create nodes for 12-hedron with pentagonal faces +al = 2 * math.pi / 5.0 +cosal = math.cos(al) +aa = 13 +rr = aa / (2.0 * math.sin(al/2.0)) +dr = 2.0 * rr * cosal +r1 = rr + dr +dh = rr * math.sqrt(2.0 * (1.0 - cosal * (1.0 + 2.0 * cosal))) +hh = 2.0 * dh - dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh + +dd = [] # top +cc = [] # below top +bb = [] # above bottom +aa = [] # bottom + +for i in range(5): + cos_bot = math.cos(i*al) + sin_bot = math.sin(i*al) + + cos_top = math.cos(i*al + al/2.0) + sin_top = math.sin(i*al + al/2.0) + + nd = mesh.AddNode(rr * cos_top, rr * sin_top, hh ) # top + nc = mesh.AddNode(r1 * cos_top, r1 * sin_top, hh - dh) # below top + nb = mesh.AddNode(r1 * cos_bot, r1 * sin_bot, dh) # above bottom + na = mesh.AddNode(rr * cos_bot, rr * sin_bot, 0) # bottom + dd.append(nd) # top + cc.append(nc) # below top + bb.append(nb) # above bottom + aa.append(na) # bottom + pass + +# Create a polyhedral volume (12-hedron with pentagonal faces) +mesh.AddPolyhedralVolume([dd[0], dd[1], dd[2], dd[3], dd[4], # top + dd[0], cc[0], bb[1], cc[1], dd[1], # - + dd[1], cc[1], bb[2], cc[2], dd[2], # - + dd[2], cc[2], bb[3], cc[3], dd[3], # - below top + dd[3], cc[3], bb[4], cc[4], dd[4], # - + dd[4], cc[4], bb[0], cc[0], dd[0], # - + aa[4], bb[4], cc[4], bb[0], aa[0], # . + aa[3], bb[3], cc[3], bb[4], aa[4], # . + aa[2], bb[2], cc[2], bb[3], aa[3], # . above bottom + aa[1], bb[1], cc[1], bb[2], aa[2], # . + aa[0], bb[0], cc[0], bb[1], aa[1], # . + aa[0], aa[1], aa[2], aa[3], aa[4]], # bottom + [5,5,5,5,5,5,5,5,5,5,5,5]) diff --git a/doc/examples/modifying_meshes_ex11.py b/doc/examples/modifying_meshes_ex11.py new file mode 100644 index 000000000..268ec1235 --- /dev/null +++ b/doc/examples/modifying_meshes_ex11.py @@ -0,0 +1,30 @@ +# Removing Nodes + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create and mesh two boxes + +box = geom_builder.MakeBoxDXDYDZ(10.0, 10.0, 10.0) +mesh = smesh_builder.Mesh(box, 'box') +mesh.Segment().NumberOfSegments(10) +mesh.Triangle().MaxElementArea(5) + +mesh.Compute() +print("After Compute(): %s nodes, %s faces" % ( mesh.NbNodes(), mesh.NbFaces())) + +# remove nodes #246 and #255 + +res = mesh.RemoveNodes([246, 255]) +print("After RemoveNodes(): %s nodes, %s faces" % ( mesh.NbNodes(), mesh.NbFaces())) + +# removing node #100 with reconnection + +mesh.RemoveNodeWithReconnection( 100 ) +print("After RemoveNodeWithReconnection(): %s nodes, %s faces" % ( mesh.NbNodes(), mesh.NbFaces())) diff --git a/doc/examples/modifying_meshes_ex12.py b/doc/examples/modifying_meshes_ex12.py new file mode 100644 index 000000000..74c9797e8 --- /dev/null +++ b/doc/examples/modifying_meshes_ex12.py @@ -0,0 +1,8 @@ +# Removing Elements + +from mechanic import * + +# remove three elements: #850, #859 and #814 +res = mesh.RemoveElements([850, 859, 814]) +if res == 1: print("Elements removing is OK!") +else: print("KO Elements removing.") diff --git a/doc/examples/modifying_meshes_ex13.py b/doc/examples/modifying_meshes_ex13.py new file mode 100644 index 000000000..0ef3c30b2 --- /dev/null +++ b/doc/examples/modifying_meshes_ex13.py @@ -0,0 +1,11 @@ +# Removing Orphan Nodes + +from mechanic import * + +# add orphan nodes +mesh.AddNode(0,0,0) +mesh.AddNode(1,1,1) +# remove just created orphan nodes +res = mesh.RemoveOrphanNodes() +if res == 1: print("Removed %d nodes!" % res) +else: print("KO nodes removing.") diff --git a/doc/examples/modifying_meshes_ex15.py b/doc/examples/modifying_meshes_ex15.py new file mode 100644 index 000000000..cd058178a --- /dev/null +++ b/doc/examples/modifying_meshes_ex15.py @@ -0,0 +1,49 @@ +# Moving Nodes + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +box = geom_builder.MakeBoxDXDYDZ(200, 200, 200) + +mesh = smesh_builder.Mesh( box ) +mesh.Segment().AutomaticLength(0.1) +mesh.Quadrangle() +mesh.Compute() + +# find node at (0,0,0) which is located on a geom vertex +node000 = None +for vId in geom_builder.SubShapeAllIDs( box, geom_builder.ShapeType["VERTEX"]): + if node000: break + nodeIds = mesh.GetSubMeshNodesId( vId, True ) + for node in nodeIds: + xyz = mesh.GetNodeXYZ( node ) + if xyz[0] == 0 and xyz[1] == 0 and xyz[2] == 0 : + node000 = node + pass + pass + pass + +if not node000: + raise Exception("node000 not found") + +# find node000 using a dedicated function +n = mesh.FindNodeClosestTo( -1,-1,-1 ) +if not n == node000: + raise Exception("FindNodeClosestTo() returns " + str( n ) + " != " + str( node000 )) + +# move node000 to a new location +x,y,z = -10, -10, -10 +n = mesh.MoveNode( n,x,y,z ) +if not n: + raise Exception("MoveNode() returns " + n) + +# check the coordinates of the node000 +xyz = mesh.GetNodeXYZ( node000 ) +if not ( xyz[0] == x and xyz[1] == y and xyz[2] == z) : + raise Exception("Wrong coordinates: " + str( xyz ) + " != " + str( [x,y,z] )) diff --git a/doc/examples/modifying_meshes_ex16.py b/doc/examples/modifying_meshes_ex16.py new file mode 100644 index 000000000..49c009ea9 --- /dev/null +++ b/doc/examples/modifying_meshes_ex16.py @@ -0,0 +1,47 @@ +# Diagonal Inversion + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# create an empty mesh structure +mesh = smesh_builder.Mesh() + +# create the following mesh: +# .----.----.----. +# | /| /| /| +# | / | / | / | +# | / | / | / | +# |/ |/ |/ | +# .----.----.----. + +bb = [0, 0, 0, 0] +tt = [0, 0, 0, 0] +ff = [0, 0, 0, 0, 0, 0] + +bb[0] = mesh.AddNode( 0., 0., 0.) +bb[1] = mesh.AddNode(10., 0., 0.) +bb[2] = mesh.AddNode(20., 0., 0.) +bb[3] = mesh.AddNode(30., 0., 0.) + +tt[0] = mesh.AddNode( 0., 15., 0.) +tt[1] = mesh.AddNode(10., 15., 0.) +tt[2] = mesh.AddNode(20., 15., 0.) +tt[3] = mesh.AddNode(30., 15., 0.) + +ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]]) +ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]]) +ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]]) +ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]]) +ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]]) +ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]]) + +# inverse the diagonal bb[1] - tt[2] +print("\nDiagonal inversion ... ", end=' ') +res = mesh.InverseDiag(bb[1], tt[2]) +if not res: print("failed!") +else: print("done.") diff --git a/doc/examples/modifying_meshes_ex17.py b/doc/examples/modifying_meshes_ex17.py new file mode 100644 index 000000000..cc827462b --- /dev/null +++ b/doc/examples/modifying_meshes_ex17.py @@ -0,0 +1,46 @@ +# Uniting two Triangles + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# create an empty mesh structure +mesh = smesh_builder.Mesh() + +# create the following mesh: +# .----.----.----. +# | /| /| /| +# | / | / | / | +# | / | / | / | +# |/ |/ |/ | +# .----.----.----. + +bb = [0, 0, 0, 0] +tt = [0, 0, 0, 0] +ff = [0, 0, 0, 0, 0, 0] + +bb[0] = mesh.AddNode( 0., 0., 0.) +bb[1] = mesh.AddNode(10., 0., 0.) +bb[2] = mesh.AddNode(20., 0., 0.) +bb[3] = mesh.AddNode(30., 0., 0.) + +tt[0] = mesh.AddNode( 0., 15., 0.) +tt[1] = mesh.AddNode(10., 15., 0.) +tt[2] = mesh.AddNode(20., 15., 0.) +tt[3] = mesh.AddNode(30., 15., 0.) + +ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]]) +ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]]) +ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]]) +ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]]) +ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]]) +ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]]) + +# delete the diagonal bb[1] - tt[2] +print("\nUnite two triangles ... ", end=' ') +res = mesh.DeleteDiag(bb[1], tt[2]) +if not res: print("failed!") +else: print("done.") diff --git a/doc/examples/modifying_meshes_ex18.py b/doc/examples/modifying_meshes_ex18.py new file mode 100644 index 000000000..40a890bb4 --- /dev/null +++ b/doc/examples/modifying_meshes_ex18.py @@ -0,0 +1,47 @@ +# Uniting a Set of Triangles + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# create an empty mesh structure +mesh = smesh_builder.Mesh() + +# create the following mesh: +# .----.----.----. +# | /| /| /| +# | / | / | / | +# | / | / | / | +# |/ |/ |/ | +# .----.----.----. + +bb = [0, 0, 0, 0] +tt = [0, 0, 0, 0] +ff = [0, 0, 0, 0, 0, 0] + +bb[0] = mesh.AddNode( 0., 0., 0.) +bb[1] = mesh.AddNode(10., 0., 0.) +bb[2] = mesh.AddNode(20., 0., 0.) +bb[3] = mesh.AddNode(30., 0., 0.) + +tt[0] = mesh.AddNode( 0., 15., 0.) +tt[1] = mesh.AddNode(10., 15., 0.) +tt[2] = mesh.AddNode(20., 15., 0.) +tt[3] = mesh.AddNode(30., 15., 0.) + +ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]]) +ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]]) +ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]]) +ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]]) +ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]]) +ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]]) + +# unite a set of triangles +print("\nUnite a set of triangles ... ", end=' ') +res = mesh.TriToQuad([ff[2], ff[3], ff[4], ff[5]], SMESH.FT_MinimumAngle, 60.) +if not res: print("failed!") +else: print("done.") diff --git a/doc/examples/modifying_meshes_ex19.py b/doc/examples/modifying_meshes_ex19.py new file mode 100644 index 000000000..79f4cc9c8 --- /dev/null +++ b/doc/examples/modifying_meshes_ex19.py @@ -0,0 +1,37 @@ +# Orientation + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# create an empty mesh structure +mesh = smesh_builder.Mesh() + +# build five quadrangles: +dx = 10 +dy = 20 + +n1 = mesh.AddNode(0.0 * dx, 0, 0) +n2 = mesh.AddNode(1.0 * dx, 0, 0) +n3 = mesh.AddNode(2.0 * dx, 0, 0) +n4 = mesh.AddNode(3.0 * dx, 0, 0) +n5 = mesh.AddNode(4.0 * dx, 0, 0) +n6 = mesh.AddNode(5.0 * dx, 0, 0) +n7 = mesh.AddNode(0.0 * dx, dy, 0) +n8 = mesh.AddNode(1.0 * dx, dy, 0) +n9 = mesh.AddNode(2.0 * dx, dy, 0) +n10 = mesh.AddNode(3.0 * dx, dy, 0) +n11 = mesh.AddNode(4.0 * dx, dy, 0) +n12 = mesh.AddNode(5.0 * dx, dy, 0) + +f1 = mesh.AddFace([n1, n2, n8 , n7 ]) +f2 = mesh.AddFace([n2, n3, n9 , n8 ]) +f3 = mesh.AddFace([n3, n4, n10, n9 ]) +f4 = mesh.AddFace([n4, n5, n11, n10]) +f5 = mesh.AddFace([n5, n6, n12, n11]) + +# Change the orientation of the second and the fourth faces. +mesh.Reorient([2, 4]) diff --git a/doc/examples/modifying_meshes_ex20.py b/doc/examples/modifying_meshes_ex20.py new file mode 100644 index 000000000..87f387730 --- /dev/null +++ b/doc/examples/modifying_meshes_ex20.py @@ -0,0 +1,6 @@ +# Cutting Quadrangles + +from mechanic import * + +# cut two quadrangles: 405 and 406 +mesh.QuadToTri([405, 406], SMESH.FT_MinimumAngle) diff --git a/doc/examples/modifying_meshes_ex21.py b/doc/examples/modifying_meshes_ex21.py new file mode 100644 index 000000000..4b9edc3a2 --- /dev/null +++ b/doc/examples/modifying_meshes_ex21.py @@ -0,0 +1,17 @@ +# Smoothing + +from mechanic import * + +# select the top face +faces = geom_builder.SubShapeAllSorted(mechanic, geom_builder.ShapeType["FACE"]) + +# create a group of faces to be smoothed +group_smooth = mesh.GroupOnGeom(faces[3], "Group of faces (smooth)", SMESH.FACE) + +# perform smoothing + +# boolean SmoothObject(Object, IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method) +res = mesh.SmoothObject(group_smooth, [], 20, 2., smesh_builder.CENTROIDAL_SMOOTH) +print("\nSmoothing ... ", end=' ') +if not res: print("failed!") +else: print("done.") diff --git a/doc/examples/modifying_meshes_ex22.py b/doc/examples/modifying_meshes_ex22.py new file mode 100644 index 000000000..ca1e30e9f --- /dev/null +++ b/doc/examples/modifying_meshes_ex22.py @@ -0,0 +1,82 @@ +# Extrusion + +# There is a series of Extrusion Along Line methods added at different times; +# a fully functional method is ExtrusionSweepObjects() + +import math + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +# create an empty mesh +mesh = smesh_builder.Mesh() + +# add a node +mesh.AddNode( 0.,0.,0. ) + +# extrude a node into a line of 10 segments along the X axis +ids = mesh.GetNodesId() +stepVector = [1.,0.,0.] +nbSteps = 10 +mesh.ExtrusionSweep( ids, stepVector, nbSteps, IsNodes=True ) + +# create some groups +lastNode = mesh.GetNodesId()[-1] +lastNodeGroup = mesh.MakeGroupByIds( "node %s"% lastNode, SMESH.NODE, [lastNode]) +lineGroup = mesh.MakeGroupByIds( "line", SMESH.EDGE, mesh.GetElementsId() ) + +# rotate the segments around the first node to get a mesh of a disk quarter +axisZ = [0.,0.,0., 0.,0.,1.] +groups = mesh.RotationSweepObject( lineGroup, axisZ, math.pi/2., 10, 1e-3, MakeGroups=True, TotalAngle=True ) + +# extrude all faces into volumes +obj = mesh +stepVector = [0.,0.,-1.] +nbSteps = 5 +groups = mesh.ExtrusionSweepObject2D( obj, stepVector, nbSteps, MakeGroups=True ) + +# remove all segments created by the last command +for g in groups: + if g.GetType() == SMESH.EDGE: + mesh.RemoveGroupWithContents( g ) + +# extrude all segments into faces along Z +obj = mesh +stepVector = [0.,0.,1.] +mesh.ExtrusionSweepObject1D( obj, stepVector, nbSteps ) + +# extrude a group +obj = mesh.GetGroupByName( "line_extruded", SMESH.FACE )[0] +stepVector = [0,-5.,0.] +nbSteps = 1 +mesh.ExtrusionSweepObject( obj, stepVector, nbSteps ) + +# extrude all nodes and triangle faces of the disk quarter, applying a scale factor +diskGroup = mesh.GetGroupByName( "line_rotated", SMESH.FACE )[0] +crit = [ smesh_builder.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=',SMESH.Geom_TRIANGLE ), + smesh_builder.GetCriterion( SMESH.FACE, SMESH.FT_BelongToMeshGroup,'=', diskGroup )] +trianglesFilter = smesh_builder.GetFilterFromCriteria( crit ) + +nodes = [ diskGroup ] +edges = [] +faces = [ trianglesFilter ] +stepVector = [0,0,1] +nbSteps = 10 +mesh.ExtrusionSweepObjects( nodes, edges, faces, stepVector, nbSteps, scaleFactors=[0.5], linearVariation=True ) + +# extrude a cylindrical group of faces by normal +cylGroup = None +for g in mesh.GetGroups( SMESH.FACE ): + if g.GetName().startswith("node "): + cylGroup = g + break + +elements = cylGroup +stepSize = 5. +nbSteps = 2 +mesh.ExtrusionByNormal( elements, stepSize, nbSteps ) diff --git a/doc/examples/modifying_meshes_ex23.py b/doc/examples/modifying_meshes_ex23.py new file mode 100644 index 000000000..673569516 --- /dev/null +++ b/doc/examples/modifying_meshes_ex23.py @@ -0,0 +1,174 @@ +# Extrusion along a Path + +import math + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# 1. Create points +points = [[0, 0], [50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [-130, -20]] + +iv = 1 +vertices = [] +for point in points: + vert = geom_builder.MakeVertex(point[0], point[1], 0) + vertices.append(vert) + iv += 1 + +# 2. Create edges and wires +Edge_straight = geom_builder.MakeEdge(vertices[0], vertices[4]) +Edge_bezierrr = geom_builder.MakeBezier(vertices) +Wire_polyline = geom_builder.MakePolyline(vertices) +Edge_Circle = geom_builder.MakeCircleThreePnt(vertices[0], vertices[1], vertices[2]) + +geom_builder.addToStudy(Edge_straight, "Edge_straight") +geom_builder.addToStudy(Edge_bezierrr, "Edge_bezierrr") +geom_builder.addToStudy(Wire_polyline, "Wire_polyline") +geom_builder.addToStudy(Edge_Circle , "Edge_Circle") + +# 3. Explode wire on edges, as they will be used for mesh extrusion +Wire_polyline_edges = geom_builder.SubShapeAll(Wire_polyline, geom_builder.ShapeType["EDGE"]) +for ii in range(len(Wire_polyline_edges)): + geom_builder.addToStudyInFather(Wire_polyline, Wire_polyline_edges[ii], "Edge_" + repr(ii + 1)) + +# Mesh + +# Mesh the given shape with the given 1d hypothesis +def Mesh1D(shape1d, nbSeg, name): + mesh1d_tool = smesh_builder.Mesh(shape1d, name) + algo = mesh1d_tool.Segment() + hyp = algo.NumberOfSegments(nbSeg) + isDone = mesh1d_tool.Compute() + if not isDone: print('Mesh ', name, ': computation failed') + return mesh1d_tool + +# Create a mesh with six nodes, seven edges and two quadrangle faces +def MakeQuadMesh2(mesh_name): + quad_1 = smesh_builder.Mesh(name = mesh_name) + + # six nodes + n1 = quad_1.AddNode(0, 20, 10) + n2 = quad_1.AddNode(0, 40, 10) + n3 = quad_1.AddNode(0, 40, 30) + n4 = quad_1.AddNode(0, 20, 30) + n5 = quad_1.AddNode(0, 0, 30) + n6 = quad_1.AddNode(0, 0, 10) + + # seven edges + quad_1.AddEdge([n1, n2]) # 1 + quad_1.AddEdge([n2, n3]) # 2 + quad_1.AddEdge([n3, n4]) # 3 + quad_1.AddEdge([n4, n1]) # 4 + quad_1.AddEdge([n4, n5]) # 5 + quad_1.AddEdge([n5, n6]) # 6 + quad_1.AddEdge([n6, n1]) # 7 + + # two quadrangle faces + quad_1.AddFace([n1, n2, n3, n4]) # 8 + quad_1.AddFace([n1, n4, n5, n6]) # 9 + return [quad_1, [1,2,3,4,5,6,7], [8,9]] + +# Path meshes +Edge_straight_mesh = Mesh1D(Edge_straight, 7, "Edge_straight") +Edge_bezierrr_mesh = Mesh1D(Edge_bezierrr, 7, "Edge_bezierrr") +Wire_polyline_mesh = Mesh1D(Wire_polyline, 3, "Wire_polyline") +Edge_Circle_mesh = Mesh1D(Edge_Circle , 8, "Edge_Circle") + +# Initial meshes (to be extruded) +[quad_1, ee_1, ff_1] = MakeQuadMesh2("quad_1") +[quad_2, ee_2, ff_2] = MakeQuadMesh2("quad_2") +[quad_3, ee_3, ff_3] = MakeQuadMesh2("quad_3") +[quad_4, ee_4, ff_4] = MakeQuadMesh2("quad_4") +[quad_5, ee_5, ff_5] = MakeQuadMesh2("quad_5") +[quad_6, ee_6, ff_6] = MakeQuadMesh2("quad_6") +[quad_7, ee_7, ff_7] = MakeQuadMesh2("quad_7") + +# ExtrusionAlongPath +# IDsOfElements, PathMesh, PathShape, NodeStart, +# HasAngles, Angles, HasRefPoint, RefPoint +refPoint = SMESH.PointStruct(0, 0, 0) +a10 = math.radians( 10.0 ) +a45 = math.radians( 45.0 ) + +# 1. Extrusion of two mesh edges along a straight path +error = quad_1.ExtrusionAlongPath([1,2], Edge_straight_mesh, Edge_straight, 1, + 0, [], 0, refPoint) + +# 2. Extrusion of one mesh edge along a curved path +error = quad_2.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1, + 0, [], 0, refPoint) + +# 3. Extrusion of one mesh edge along a curved path with usage of angles +error = quad_3.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1, + 1, [a45, a45, a45, 0, -a45, -a45, -a45], 0, refPoint) + +# 4. Extrusion of one mesh edge along the path, which is a part of a meshed wire +error = quad_4.ExtrusionAlongPath([4], Wire_polyline_mesh, Wire_polyline_edges[0], 1, + 1, [a10, a10, a10], 0, refPoint) + +# 5. Extrusion of two mesh faces along the path, which is a part of a meshed wire +error = quad_5.ExtrusionAlongPath(ff_5 , Wire_polyline_mesh, Wire_polyline_edges[2], 4, + 0, [], 0, refPoint) + +# 6. Extrusion of two mesh faces along a closed path +error = quad_6.ExtrusionAlongPath(ff_6 , Edge_Circle_mesh, Edge_Circle, 1, + 0, [], 0, refPoint) + +# 7. Extrusion of two mesh faces along a closed path with usage of angles +error = quad_7.ExtrusionAlongPath(ff_7, Edge_Circle_mesh, Edge_Circle, 1, + 1, [a45, -a45, a45, -a45, a45, -a45, a45, -a45], 0, refPoint) + + + +# Make the same meshes using a fully functional method ExtrusionAlongPathObjects() having +# the following arguments: +# Nodes, Edges, Faces, PathObject, PathShape=None, +# NodeStart=1, HasAngles=False, Angles=[], LinearVariation=False, +# HasRefPoint=False, RefPoint=[0,0,0], MakeGroups=False, +# ScaleFactors=[], ScalesVariation=False + +quad_1 = MakeQuadMesh2("quad_1")[0] +quad_2 = MakeQuadMesh2("quad_2")[0] +quad_3 = MakeQuadMesh2("quad_3")[0] +quad_4 = MakeQuadMesh2("quad_4")[0] +quad_5 = MakeQuadMesh2("quad_5")[0] +quad_6 = MakeQuadMesh2("quad_6")[0] +quad_7 = MakeQuadMesh2("quad_7")[0] + +# 1. Extrusion of two mesh edges along a straight path +nn, ee, ff = [], [1,2], [] +error = quad_1.ExtrusionAlongPathObjects( nn, ee, ff, Edge_straight_mesh ) + +# 2. Extrusion of one mesh edge along a curved path +nn, ee, ff = [], [2], [] +error = quad_2.ExtrusionAlongPathObjects( nn, ee, ff, Edge_bezierrr_mesh ) + +# 3. Extrusion of one mesh edge along a curved path with usage of angles +error = quad_3.ExtrusionAlongPathObjects( nn, ee, ff, Edge_bezierrr_mesh, + Angles=[a45, a45, a45, 0, -a45, -a45, -a45]) + +# 4. Extrusion of one mesh edge along the path, which is a part of a meshed wire +nn, ee, ff = [], [4], [] +error = quad_4.ExtrusionAlongPathObjects( nn, ee, ff, Wire_polyline_mesh, Wire_polyline_edges[0], + Angles=[a10, a10, a10]) + +# 5. Extrusion of two mesh faces along the path, which is a part of a meshed wire +nn, ee, ff = [], [], quad_5 +error = quad_5.ExtrusionAlongPathObjects( nn, ee, ff, Wire_polyline_mesh, Wire_polyline_edges[2], + NodeStart=4 ) + +# 6. Extrusion of two mesh faces along a closed path +nn, ee, ff = [], [], quad_6 +error = quad_6.ExtrusionAlongPathObjects( nn, ee, ff, Edge_Circle_mesh ) + +# 7. Extrusion of two mesh faces along a closed path with usage of angles +nn, ee, ff = [], [], quad_7 +error = quad_7.ExtrusionAlongPathObjects( nn, ee, ff, Edge_Circle_mesh, Edge_Circle, + Angles=[a45, -a45, a45, -a45, a45, -a45, a45, -a45]) diff --git a/doc/examples/modifying_meshes_ex24.py b/doc/examples/modifying_meshes_ex24.py new file mode 100644 index 000000000..07f698093 --- /dev/null +++ b/doc/examples/modifying_meshes_ex24.py @@ -0,0 +1,17 @@ +# Revolution + +import math + +from mechanic import * + +# create a group of faces to be revolved +FacesRotate = [492, 493, 502, 503] +GroupRotate = mesh.CreateEmptyGroup(SMESH.FACE,"Group of faces (rotate)") +GroupRotate.Add(FacesRotate) + +# define revolution angle and axis +angle45 = 45 * math.pi / 180 +axisXYZ = SMESH.AxisStruct(-38.3128, -73.3658, -23.321, -13.3402, -13.3265, 6.66632) + +# perform revolution of an object +mesh.RotationSweepObject(GroupRotate, axisXYZ, angle45, 4, 1e-5) diff --git a/doc/examples/modifying_meshes_ex25.py b/doc/examples/modifying_meshes_ex25.py new file mode 100644 index 000000000..39250d3a3 --- /dev/null +++ b/doc/examples/modifying_meshes_ex25.py @@ -0,0 +1,137 @@ +# Pattern Mapping + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# define the geometry +Box_1 = geom_builder.MakeBoxDXDYDZ(200., 200., 200.) +geom_builder.addToStudy(Box_1, "Box_1") + +faces = geom_builder.SubShapeAll(Box_1, geom_builder.ShapeType["FACE"]) +Face_1 = faces[0] +Face_2 = faces[1] + +geom_builder.addToStudyInFather(Box_1, Face_1, "Face_1") +geom_builder.addToStudyInFather(Box_1, Face_2, "Face_2") + +# build a quadrangle mesh 3x3 on Face_1 +Mesh_1 = smesh_builder.Mesh(Face_1) +algo1D = Mesh_1.Segment() +algo1D.NumberOfSegments(3) +Mesh_1.Quadrangle() + +isDone = Mesh_1.Compute() +if not isDone: print('Mesh Mesh_1 : computation failed') + +# build a triangle mesh on Face_2 +Mesh_2 = smesh_builder.Mesh(Face_2) + +algo1D = Mesh_2.Segment() +algo1D.NumberOfSegments(1) +algo2D = Mesh_2.Triangle() +algo2D.MaxElementArea(240) + +isDone = Mesh_2.Compute() +if not isDone: print('Mesh Mesh_2 : computation failed') + +# create a 2d pattern +pattern = smesh_builder.GetPattern() + +isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), Face_2, 0) +if (isDone != 1): print('LoadFromFace :', pattern.GetErrorCode()) + +# apply the pattern to a face of the first mesh +facesToSplit = Mesh_1.GetElementsByType(SMESH.FACE) +print("Splitting %d rectangular face(s) to %d triangles..."%(len(facesToSplit), 2*len(facesToSplit))) +pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), facesToSplit, 0, 0) +isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 0, 0) +if (isDone != 1): print('MakeMesh :', pattern.GetErrorCode()) + +# create quadrangle mesh +Mesh_3 = smesh_builder.Mesh(Box_1) +Mesh_3.Segment().NumberOfSegments(1) +Mesh_3.Quadrangle() +Mesh_3.Hexahedron() +isDone = Mesh_3.Compute() +if not isDone: print('Mesh Mesh_3 : computation failed') + +# create a 3d pattern (hexahedrons) +pattern_hexa = smesh_builder.GetPattern() + +smp_hexa = """!!! Nb of points: +15 + 0 0 0 !- 0 + 1 0 0 !- 1 + 0 1 0 !- 2 + 1 1 0 !- 3 + 0 0 1 !- 4 + 1 0 1 !- 5 + 0 1 1 !- 6 + 1 1 1 !- 7 + 0.5 0 0.5 !- 8 + 0.5 0 1 !- 9 + 0.5 0.5 0.5 !- 10 + 0.5 0.5 1 !- 11 + 1 0 0.5 !- 12 + 1 0.5 0.5 !- 13 + 1 0.5 1 !- 14 + !!! Indices of points of 4 elements: + 8 12 5 9 10 13 14 11 + 0 8 9 4 2 10 11 6 + 2 10 11 6 3 13 14 7 + 0 1 12 8 2 3 13 10""" + +pattern_hexa.LoadFromFile(smp_hexa) + +# apply the pattern to a mesh +volsToSplit = Mesh_3.GetElementsByType(SMESH.VOLUME) +print("Splitting %d hexa volume(s) to %d hexas..."%(len(volsToSplit), 4*len(volsToSplit))) +pattern_hexa.ApplyToHexahedrons(Mesh_3.GetMesh(), volsToSplit,0,3) +isDone = pattern_hexa.MakeMesh(Mesh_3.GetMesh(), True, True) +if (isDone != 1): print('MakeMesh :', pattern_hexa.GetErrorCode()) + +# create one more quadrangle mesh +Mesh_4 = smesh_builder.Mesh(Box_1) +Mesh_4.Segment().NumberOfSegments(1) +Mesh_4.Quadrangle() +Mesh_4.Hexahedron() +isDone = Mesh_4.Compute() +if not isDone: print('Mesh Mesh_4 : computation failed') + +# create another 3d pattern (pyramids) +pattern_pyra = smesh_builder.GetPattern() + +smp_pyra = """!!! Nb of points: +9 + 0 0 0 !- 0 + 1 0 0 !- 1 + 0 1 0 !- 2 + 1 1 0 !- 3 + 0 0 1 !- 4 + 1 0 1 !- 5 + 0 1 1 !- 6 + 1 1 1 !- 7 + 0.5 0.5 0.5 !- 8 + !!! Indices of points of 6 elements: + 0 1 5 4 8 + 7 5 1 3 8 + 3 2 6 7 8 + 2 0 4 6 8 + 0 2 3 1 8 + 4 5 7 6 8""" + +pattern_pyra.LoadFromFile(smp_pyra) + +# apply the pattern to a face mesh +volsToSplit = Mesh_4.GetElementsByType(SMESH.VOLUME) +print("Splitting %d hexa volume(s) to %d hexas..."%(len(volsToSplit), 6*len(volsToSplit))) +pattern_pyra.ApplyToHexahedrons(Mesh_4.GetMesh(), volsToSplit,1,0) +isDone = pattern_pyra.MakeMesh(Mesh_4.GetMesh(), True, True) +if (isDone != 1): print('MakeMesh :', pattern_pyra.GetErrorCode()) diff --git a/doc/examples/modifying_meshes_ex26.py b/doc/examples/modifying_meshes_ex26.py new file mode 100644 index 000000000..664291f99 --- /dev/null +++ b/doc/examples/modifying_meshes_ex26.py @@ -0,0 +1,51 @@ +# Convert mesh to/from quadratic + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create sphere of radius 100 + +Sphere = geom_builder.MakeSphereR( 100 ) +geom_builder.addToStudy( Sphere, "Sphere" ) + +# create simple trihedral mesh + +Mesh = smesh_builder.Mesh(Sphere) +Regular_1D = Mesh.Segment() +Nb_Segments = Regular_1D.NumberOfSegments(5) +MEFISTO_2D = Mesh.Triangle() +Tetrahedron = Mesh.Tetrahedron() + +# compute mesh + +isDone = Mesh.Compute() + +# convert to quadratic +# theForce3d = 1; this results in the medium node lying at the +# middle of the line segments connecting start and end node of a mesh +# element + +Mesh.ConvertToQuadratic( theForce3d=1 ) + +# revert back to the non-quadratic mesh + +Mesh.ConvertFromQuadratic() + +# convert to quadratic +# theForce3d = 0; this results in the medium node lying at the +# geometrical edge from which the mesh element is built + +Mesh.ConvertToQuadratic( theForce3d=0 ) + +# to convert not the whole mesh but a sub-mesh, provide it as +# an additional argument to the functions: +# Mesh.ConvertToQuadratic( 0, subMesh ) +# Mesh.ConvertFromQuadratic( subMesh ) +# +# Note that the mesh becomes non-conformal at conversion of sub-mesh. diff --git a/doc/examples/modifying_meshes_split_vol.py b/doc/examples/modifying_meshes_split_vol.py new file mode 100644 index 000000000..f41fafe05 --- /dev/null +++ b/doc/examples/modifying_meshes_split_vol.py @@ -0,0 +1,20 @@ +# Split volumic elements into tetrahedrons + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# mesh a hexahedral mesh +box = geom_builder.MakeBoxDXDYDZ (1, 1, 1 ) +mesh = smesh_builder.Mesh( box ) +mesh.AutomaticHexahedralization(0) +print("Nb volumes mesh: %s" % mesh.NbHexas()) + +# split each hexahedron into 6 tetrahedra +mesh.SplitVolumesIntoTetra( mesh, smesh_builder.Hex_6Tet ) +print("Nb volumes mesh: %s" % mesh.NbTetras()) diff --git a/doc/examples/notebook_smesh.py b/doc/examples/notebook_smesh.py new file mode 100644 index 000000000..8d90ad382 --- /dev/null +++ b/doc/examples/notebook_smesh.py @@ -0,0 +1,45 @@ +# Using SALOME NoteBook + +import salome +salome.salome_init_without_session() +from salome_notebook import notebook + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# set variables +notebook.set("Length", 100) +notebook.set("Width", 200) +notebook.set("Offset", 50) + +notebook.set("NbSegments", 7) +notebook.set("MaxElementArea", 800) +notebook.set("MaxElementVolume", 900) + +# create a box +box = geom_builder.MakeBoxDXDYDZ("Length", "Width", 300) +idbox = geom_builder.addToStudy(box, "Box") + +# create a mesh +tetra = smesh_builder.Mesh(box, "MeshBox") + +algo1D = tetra.Segment() +algo1D.NumberOfSegments("NbSegments") + +algo2D = tetra.Triangle() +algo2D.MaxElementArea("MaxElementArea") + +algo3D = tetra.Tetrahedron() +algo3D.MaxElementVolume("MaxElementVolume") + +# compute the mesh +ret = tetra.Compute() + +# translate the mesh +point = SMESH.PointStruct("Offset", 0., 0.) +vector = SMESH.DirStruct(point) +tetra.TranslateObject(tetra, vector, 0) diff --git a/doc/examples/prism_3d_algo.py b/doc/examples/prism_3d_algo.py new file mode 100644 index 000000000..20ab781e8 --- /dev/null +++ b/doc/examples/prism_3d_algo.py @@ -0,0 +1,75 @@ +# Usage of Extrusion 3D meshing algorithm + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +OX = geom_builder.MakeVectorDXDYDZ(1,0,0) +OY = geom_builder.MakeVectorDXDYDZ(0,1,0) +OZ = geom_builder.MakeVectorDXDYDZ(0,0,1) + +# Y ^ Make geometry of a "pipe" with the following base (cross section). +# | Big central quadrangles will be meshed with triangles, walls +# of the pipe will be meshed with quadrilaterals +# +--+--+--+--+--+--+ +# | | | | | | | +# +--+--+--+--+--+--+ +# | | | | | +# +--+ | +--+ +# | | | | | +# +--+-----+-----+--+ +# | | | | | +# +--+ | +--+ +# | | | | | +# +--+--+--+--+--+--+ +# | | | | | | | --> +# +--+--+--+--+--+--+ X + +quadBig = geom_builder.MakeFaceHW( 20,20, 1 ) +quadBig = geom_builder.MakeTranslation( quadBig, 15,15,0 ) +quadSmall = geom_builder.MakeFaceHW( 10,10, 1 ) +smallQuads1 = geom_builder.MakeMultiTranslation1D( quadSmall, OX, 10, 3 ) +smallQuads2 = geom_builder.MakeMultiTranslation1D( quadSmall, OY, 10, 3 ) +smallQuads2 = geom_builder.SubShapeAllSortedCentres( smallQuads2, geom_builder.ShapeType["FACE"])[1:] + +base = geom_builder.MakeCompound( smallQuads2 + [smallQuads1, quadBig]) +axis = geom_builder.MakeLine( geom_builder.MakeVertex( 25,25,0), OZ ) +base = geom_builder.MultiRotate1DNbTimes( base, axis, 4) +base = geom_builder.MakePartition( [base], theName="base") +path = geom_builder.MakeSketcher("Sketcher:F 0 0:TT 0 100:R 0:C -90 180:T 0 -150",[0,0,0, 0,-1,0, 1,0,0]) + +# Make the pipe, each quadrangle of the base turns into a prism with composite wall faces +pipe = geom_builder.MakePipe( base, path ) +prisms = geom_builder.MakePartition( [pipe], theName="prisms") + +# get base faces of the prism to define sub-mesh on them +smallQuad = geom_builder.GetFaceNearPoint( prisms, geom_builder.MakeVertex( 0,0,0 ), "smallQuad") +bigQuad = geom_builder.GetFaceNearPoint( prisms, geom_builder.MakeVertex( 15,15,0 ), "bigQuad") + +mesh = smesh_builder.Mesh( prisms ) + +# assign Global hypotheses + +# 1D algorithm and hypothesis for division along the pipe +mesh.Segment().NumberOfSegments(15) + +# Extrusion 3D algo +mesh.Prism() + +# assign Local hypotheses + +# 1D and 2D algos and hyps to mesh smallQuad with quadrilaterals +mesh.Segment(smallQuad).LocalLength( 3 ) +mesh.Quadrangle(smallQuad) + +# 1D and 2D algos and hyps to mesh bigQuad with triangles +mesh.Segment(bigQuad).LocalLength( 3 ) +mesh.Triangle(bigQuad) + +# compute the mesh +mesh.Compute() diff --git a/doc/examples/quad_medial_axis_algo.py b/doc/examples/quad_medial_axis_algo.py new file mode 100644 index 000000000..450827bd4 --- /dev/null +++ b/doc/examples/quad_medial_axis_algo.py @@ -0,0 +1,32 @@ +# Usage of Medial Axis Projection algorithm + +# for meshing a ring face with quadrangles + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a ring face +circleEdge1 = geom_builder.MakeCircleR( 3 ) +circleEdge2 = geom_builder.MakeCircleR( 7 ) +ring = geom_builder.MakeFaceWires( [ circleEdge1, circleEdge2 ], True, theName='Ring' ) +circleLen1 = geom_builder.BasicProperties( circleEdge1 )[0] +circleLen2 = geom_builder.BasicProperties( circleEdge2 )[0] + +# make a mesh + +mesh = smesh_builder.Mesh( ring ) + +circNbSeg = 60 +algo1d = mesh.Segment() +algo1d.NumberOfSegments( circNbSeg ) # division of circle edges + +algo2d = mesh.Quadrangle( smeshBuilder.QUAD_MA_PROJ ) +algo2d.StartEndLength( circleLen2 / circNbSeg, circleLen1 / circNbSeg ) # radial division + +mesh.Compute() diff --git a/doc/examples/quality_controls_defl.py b/doc/examples/quality_controls_defl.py new file mode 100644 index 000000000..42c04a315 --- /dev/null +++ b/doc/examples/quality_controls_defl.py @@ -0,0 +1,43 @@ +# Deflection 2D + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# fuse a box and a sphere +Sphere_1 = geom_builder.MakeSphereR(100) +Box_1 = geom_builder.MakeBoxDXDYDZ(200, 200, 200) +Fuse = geom_builder.MakeFuse( Sphere_1, Box_1, theName="box + sphere" ) + +# create a mesh +mesh = smesh_builder.Mesh( Fuse, "Deflection_2D") +algo = mesh.Segment() +algo.LocalLength(35) +algo = mesh.Triangle() +mesh.Compute() + +# get min and max deflection +minMax = mesh.GetMinMax( SMESH.FT_Deflection2D ) +print("min and max deflection: ", minMax) + +# get deflection of a certain face +faceID = mesh.NbEdges() + mesh.NbFaces() +defl = mesh.FunctorValue( SMESH.FT_Deflection2D, faceID ) +print("deflection of face %s = %s" % ( faceID, defl )) + +margin = minMax[1] / 2 + +# get all faces with deflection LESS than the margin +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Deflection2D, '<', margin, mesh=mesh) +anIds = aFilter.GetIDs() +print("%s faces have deflection less than %s" %( len(anIds), margin )) + +# create a group of faces with deflection MORE than the margin +aGroup = mesh.MakeGroup("Deflection > " + repr(margin), SMESH.FACE, SMESH.FT_Deflection2D,'>',margin) +print("%s faces have deflection more than %s: %s ..." %( aGroup.Size(), margin, aGroup.GetIDs()[:10] )) diff --git a/doc/examples/quality_controls_ex01.py b/doc/examples/quality_controls_ex01.py new file mode 100644 index 000000000..dda1aca12 --- /dev/null +++ b/doc/examples/quality_controls_ex01.py @@ -0,0 +1,44 @@ +# Free Borders + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create open shell: a box without one plane +box = geom_builder.MakeBox(0., 0., 0., 20., 20., 15.) +FaceList = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) +FaceList.remove(FaceList[5]) +box = geom_builder.MakeShell(FaceList) +idbox = geom_builder.addToStudy(box, "box") + +# create a mesh +mesh = smesh_builder.Mesh(box, "Mesh_free_borders") +algo = mesh.Segment() +algo.NumberOfSegments(5) +algo = mesh.Triangle() +algo.MaxElementArea(20.) +mesh.Compute() + +# criterion : free borders +aFilter = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_FreeBorders) +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Free borders Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.GetMesh().CreateGroup(SMESH.EDGE, "Free borders") +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex02.py b/doc/examples/quality_controls_ex02.py new file mode 100644 index 000000000..3b48bf305 --- /dev/null +++ b/doc/examples/quality_controls_ex02.py @@ -0,0 +1,46 @@ +# Borders at Multiconnection + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create open shell: a box without one plane +box = geom_builder.MakeBox(0., 0., 0., 20., 20., 15.) +FaceList = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) +FaceList.remove(FaceList[5]) +box = geom_builder.MakeShell(FaceList) +idbox = geom_builder.addToStudy(box, "box") + +# create a mesh +mesh = smesh_builder.Mesh(box, "Mesh_borders_at_multi-connections") +algo = mesh.Segment() +algo.NumberOfSegments(5) +algo = mesh.Triangle() +algo.MaxElementArea(20.) +mesh.Compute() + +# Criterion : Borders at multi-connection +nb_conn = 2 + +aFilter = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_MultiConnection, SMESH.FT_EqualTo, nb_conn) +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Borders at multi-connections Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.GetMesh().CreateGroup(SMESH.EDGE, "Borders at multi-connections") +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex03.py b/doc/examples/quality_controls_ex03.py new file mode 100644 index 000000000..9958d7115 --- /dev/null +++ b/doc/examples/quality_controls_ex03.py @@ -0,0 +1,46 @@ +# Length 1D + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create open shell: a box without one plane +box = geom_builder.MakeBox(0., 0., 0., 20., 20., 15.) +FaceList = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) +FaceList.remove(FaceList[5]) +box = geom_builder.MakeShell(FaceList) +idbox = geom_builder.addToStudy(box, "box") + +# create a mesh +mesh = smesh_builder.Mesh(box, "Mesh_Length_1D") +algo = mesh.Segment() +algo.NumberOfSegments(5) +algo = mesh.Triangle() +algo.MaxElementArea(20.) +mesh.Compute() + +# Criterion : Length > 3. +length_margin = 3. + +aFilter = smesh_builder.GetFilter(SMESH.EDGE, SMESH.FT_Length, SMESH.FT_MoreThan, length_margin) +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Edges length > ", length_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.GetMesh().CreateGroup(SMESH.EDGE, "Edges with length > " + repr(length_margin)) +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex04.py b/doc/examples/quality_controls_ex04.py new file mode 100644 index 000000000..b4c1dd252 --- /dev/null +++ b/doc/examples/quality_controls_ex04.py @@ -0,0 +1,33 @@ +# Free Edges + +from mechanic import * + +aFilterMgr = smesh_builder.CreateFilterManager() + +# Remove some elements to obtain free edges +# Criterion : AREA > 95. +area_margin = 95. + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, area_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +mesh.RemoveElements(anIds) + +# Criterion : Free Edges +aBorders = mesh.GetFreeBorders() + +# create groups +aGroupF = mesh.CreateEmptyGroup(SMESH.FACE, "Faces with free edges") +aGroupN = mesh.CreateEmptyGroup(SMESH.NODE, "Nodes on free edges") + +# fill groups with elements, corresponding to the criterion +print("") +print("Criterion: Free edges Nb = ", len(aBorders)) +for i in range(len(aBorders)): + aBorder = aBorders[i] + print("Face # ", aBorder.myElemId, " : Edge between nodes (", end=' ') + print(aBorder.myPnt1, ", ", aBorder.myPnt2, ")") + + aGroupF.Add([aBorder.myElemId]) + aGroupN.Add([aBorder.myPnt1, aBorder.myPnt2]) diff --git a/doc/examples/quality_controls_ex05.py b/doc/examples/quality_controls_ex05.py new file mode 100644 index 000000000..d9a415deb --- /dev/null +++ b/doc/examples/quality_controls_ex05.py @@ -0,0 +1,51 @@ +# Free Nodes + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create box +box = geom_builder.MakeBox(0., 0., 0., 100., 200., 300.) +idbox = geom_builder.addToStudy(box, "box") + +# create a mesh +mesh = smesh_builder.Mesh(box, "Mesh_free_nodes") +algo = mesh.Segment() +algo.NumberOfSegments(10) +algo = mesh.Triangle(smeshBuilder.MEFISTO) +algo.MaxElementArea(150.) +mesh.Compute() + +# Remove some elements to obtain free nodes +# Criterion : AREA < 80. +area_margin = 80. + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, area_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +mesh.RemoveElements(anIds) + +# criterion : free nodes +aFilter = smesh_builder.GetFilter(SMESH.NODE, SMESH.FT_FreeNodes) +anNodeIds = mesh.GetIdsFromFilter(aFilter) + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.NODE, "Free_nodes") +aGroup.Add(anNodeIds) + +# print the result +print("Criterion: Free nodes Nb = ", len(anNodeIds)) +j = 1 +for i in range(len(anNodeIds)): + if j > 20: j = 1; print("") + print(anNodeIds[i], end=' ') + j = j + 1 + pass +print("") diff --git a/doc/examples/quality_controls_ex06.py b/doc/examples/quality_controls_ex06.py new file mode 100644 index 000000000..f487e6b5f --- /dev/null +++ b/doc/examples/quality_controls_ex06.py @@ -0,0 +1,75 @@ +# Free Faces + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +####### GEOM part ######## + +Box_1 = geom_builder.MakeBoxDXDYDZ(200, 200, 200) +Box_1_vertex_6 = geom_builder.GetSubShape(Box_1, [6]) +Box_1 = geom_builder.GetMainShape(Box_1_vertex_6) +Box_1_vertex_16 = geom_builder.GetSubShape(Box_1, [16]) +Box_1 = geom_builder.GetMainShape(Box_1_vertex_16) +Box_1_vertex_11 = geom_builder.GetSubShape(Box_1, [11]) +Box_1 = geom_builder.GetMainShape(Box_1_vertex_11) +Plane_1 = geom_builder.MakePlaneThreePnt(Box_1_vertex_6, Box_1_vertex_16, Box_1_vertex_11, 2000) +Partition_1 = geom_builder.MakePartition([Box_1], [Plane_1], [], [], geom_builder.ShapeType["SOLID"], 0, [], 0) + +Box_1_vertex_19 = geom_builder.GetSubShape(Box_1, [19]) +Box_1_vertex_21 = geom_builder.GetSubShape(Box_1, [21]) +Plane_2 = geom_builder.MakePlaneThreePnt(Box_1_vertex_16, Box_1_vertex_19, Box_1_vertex_21, 2000) + +geom_builder.addToStudy( Box_1, "Box_1" ) +geom_builder.addToStudyInFather( Box_1, Box_1_vertex_6, "Box_1:vertex_6" ) +geom_builder.addToStudyInFather( Box_1, Box_1_vertex_16, "Box_1:vertex_16" ) +geom_builder.addToStudyInFather( Box_1, Box_1_vertex_11, "Box_1:vertex_11" ) +geom_builder.addToStudy( Plane_1, "Plane_1" ) +geom_builder.addToStudy( Partition_1, "Partition_1" ) +geom_builder.addToStudyInFather( Box_1, Box_1_vertex_19, "Box_1:vertex_19" ) +geom_builder.addToStudyInFather( Box_1, Box_1_vertex_21, "Box_1:vertex_21" ) +geom_builder.addToStudy( Plane_2, "Plane_2" ) + +###### SMESH part ###### + +Mesh_1 = smesh_builder.Mesh(Partition_1) +Regular_1D = Mesh_1.Segment() +Max_Size_1 = Regular_1D.MaxSize(34.641) +MEFISTO_2D = Mesh_1.Triangle() +Tetrahedronn = Mesh_1.Tetrahedron() +isDone = Mesh_1.Compute() + +# create a group of free faces +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_FreeFaces ) +aFaceIds = Mesh_1.GetIdsFromFilter(aFilter) + +aGroup = Mesh_1.CreateEmptyGroup(SMESH.FACE, "Free_faces") +aGroup.Add(aFaceIds) + +# print the result +print("Criterion: Free faces Nb = ", len(aFaceIds)) +j = 1 +for i in range(len(aFaceIds)): + if j > 20: j = 1; print("") + print(aFaceIds[i], end=' ') + j = j + 1 + pass +print("") + +#filter faces from plane 2 +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_BelongToPlane, Plane_2) +aFaceIds = Mesh_1.GetIdsFromFilter(aFilter) +aGroup.Remove(aFaceIds) + +# create a group of shared faces (located on partition boundary inside box) +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_BelongToPlane, Plane_1) +aFaceIds = Mesh_1.GetIdsFromFilter(aFilter) + +aGroup = Mesh_1.CreateEmptyGroup(SMESH.FACE, "Shared_faces") +aGroup.Add(aFaceIds) diff --git a/doc/examples/quality_controls_ex07.py b/doc/examples/quality_controls_ex07.py new file mode 100644 index 000000000..ce88f3773 --- /dev/null +++ b/doc/examples/quality_controls_ex07.py @@ -0,0 +1,26 @@ +# Bare border faces + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +box = geom_builder.MakeBoxDXDYDZ(100, 100, 100) +geom_builder.addToStudy( box, "box" ) + +mesh = smesh_builder.Mesh(box) +mesh.Segment().NumberOfSegments(3) +mesh.Quadrangle() +mesh.Compute() + +# remove 2 faces +allFaces = mesh.GetElementsByType(SMESH.FACE) +mesh.RemoveElements( allFaces[0:2]) + +bareGroup = mesh.MakeGroup("bare faces", SMESH.FACE, SMESH.FT_BareBorderFace) +assert(bareGroup.Size() == 3) diff --git a/doc/examples/quality_controls_ex08.py b/doc/examples/quality_controls_ex08.py new file mode 100644 index 000000000..61c7a2553 --- /dev/null +++ b/doc/examples/quality_controls_ex08.py @@ -0,0 +1,30 @@ +# Bare border volumes + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +box = geom_builder.MakeBoxDXDYDZ(100, 30, 10) +# the smallest face of the box +face = geom_builder.SubShapeAllSorted( box, geom_builder.ShapeType["FACE"])[0] + +geom_builder.addToStudy( box, "box" ) +geom_builder.addToStudyInFather( box, face, "face" ) + +mesh = smesh_builder.Mesh(box) +mesh.AutomaticHexahedralization(); + +# remove half of mesh faces from the smallest face +faceFaces = mesh.GetSubMeshElementsId(face) +faceToRemove = faceFaces[: len(faceFaces) // 2] +mesh.RemoveElements( faceToRemove ) + +# make a group of volumes missing the removed faces +bareGroup = mesh.MakeGroup("bare volumes", SMESH.VOLUME, SMESH.FT_BareBorderVolume) +assert(bareGroup.Size() == len( faceToRemove)) diff --git a/doc/examples/quality_controls_ex09.py b/doc/examples/quality_controls_ex09.py new file mode 100644 index 000000000..c05ba61ca --- /dev/null +++ b/doc/examples/quality_controls_ex09.py @@ -0,0 +1,22 @@ +# Over-constrained faces + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +mesh = smesh_builder.Mesh() +faceFilter = smesh_builder.GetFilter(SMESH.FACE,SMESH.FT_OverConstrainedFace) + +#make an edge +n1 = mesh.AddNode(0,0,0) +n2 = mesh.AddNode(10,0,0) +edge = mesh.AddEdge([n1,n2]) +assert( not mesh.GetIdsFromFilter( faceFilter )) + +# make faces +mesh.ExtrusionSweep([edge], smesh_builder.MakeDirStruct(0,7,0), 5) +assert( 5 == len( mesh.GetIdsFromFilter( faceFilter ))) diff --git a/doc/examples/quality_controls_ex10.py b/doc/examples/quality_controls_ex10.py new file mode 100644 index 000000000..b36923442 --- /dev/null +++ b/doc/examples/quality_controls_ex10.py @@ -0,0 +1,20 @@ +# Over-constrained volumes + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.smesh import smeshBuilder + +smesh_builder = smeshBuilder.New() + +mesh = smesh_builder.Mesh() +volumeFilter = smesh_builder.GetFilter(SMESH.VOLUME,SMESH.FT_OverConstrainedVolume) + +# make volumes by extrusion of one face +n1 = mesh.AddNode(0,0,0) +n2 = mesh.AddNode(10,0,0) +edge = mesh.AddEdge([n1,n2]) +mesh.ExtrusionSweep([edge], smesh_builder.MakeDirStruct(0,7,0), 1) +mesh.ExtrusionSweep( mesh.GetElementsByType(SMESH.FACE), smesh_builder.MakeDirStruct(0,0,5), 7) +assert( 7 == len( mesh.GetIdsFromFilter( volumeFilter ))) diff --git a/doc/examples/quality_controls_ex11.py b/doc/examples/quality_controls_ex11.py new file mode 100644 index 000000000..1b08179f1 --- /dev/null +++ b/doc/examples/quality_controls_ex11.py @@ -0,0 +1,47 @@ +# Length 2D + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create open shell: a box without one plane +box = geom_builder.MakeBox(0., 0., 0., 20., 20., 15.) +FaceList = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) +FaceList.remove(FaceList[5]) +box = geom_builder.MakeShell(FaceList) +idbox = geom_builder.addToStudy(box, "box") + +# create a mesh +mesh = smesh_builder.Mesh(box, "Mesh_Length_2D") +algo = mesh.Segment() +algo.NumberOfSegments(5) +algo = mesh.Triangle() +algo.MaxElementArea(20.) +mesh.Compute() + +# Criterion : Length 2D > 5.7 +length_margin = 5.7 + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Length2D, SMESH.FT_MoreThan, length_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Edges length 2D > ", length_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Faces with length 2D > " + repr(length_margin)) +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex12.py b/doc/examples/quality_controls_ex12.py new file mode 100644 index 000000000..a76fa3543 --- /dev/null +++ b/doc/examples/quality_controls_ex12.py @@ -0,0 +1,47 @@ +# Borders at Multiconnection 2D + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a compound of two glued boxes +box1 = geom_builder.MakeBox(0., 0., 0., 20., 20., 15.) +box2 = geom_builder.MakeTranslation(box1, 0., 20., 0) +comp = geom_builder.MakeCompound([box1, box2]) +box = geom_builder.MakeGlueFaces(comp, 0.000001) +idbox = geom_builder.addToStudy(box, "box") + +# create a mesh +mesh = smesh_builder.Mesh(box, "Box compound : 2D triangle mesh") +algo = mesh.Segment() +algo.NumberOfSegments(5) +algo = mesh.Triangle() +algo.MaxElementArea(20.) +mesh.Compute() + +# Criterion : MULTI-CONNECTION 2D = 3 +nb_conn = 3 + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_MultiConnection2D, SMESH.FT_EqualTo, nb_conn) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Borders at multi-connection 2D = ", nb_conn, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Borders at multi-connection 2D = " + repr(nb_conn)) +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex13.py b/doc/examples/quality_controls_ex13.py new file mode 100644 index 000000000..994025f1d --- /dev/null +++ b/doc/examples/quality_controls_ex13.py @@ -0,0 +1,24 @@ +# Area + +from mechanic import * + +# Criterion : AREA > 100. +area_margin = 100. + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, area_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Area > ", area_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Area > " + repr(area_margin)) +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex14.py b/doc/examples/quality_controls_ex14.py new file mode 100644 index 000000000..23f9f5e78 --- /dev/null +++ b/doc/examples/quality_controls_ex14.py @@ -0,0 +1,24 @@ +# Taper + +from mechanic import * + +# Criterion : Taper > 3e-20 +taper_margin = 3e-20 + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Taper, SMESH.FT_MoreThan, taper_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Taper > ", taper_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Taper > " + repr(taper_margin)) +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex15.py b/doc/examples/quality_controls_ex15.py new file mode 100644 index 000000000..2775b2073 --- /dev/null +++ b/doc/examples/quality_controls_ex15.py @@ -0,0 +1,24 @@ +# Aspect Ratio + +from mechanic import * + +# Criterion : ASPECT RATIO > 1.8 +ar_margin = 1.8 + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, ar_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Aspect Ratio > ", ar_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Aspect Ratio > " + repr(ar_margin)) +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex16.py b/doc/examples/quality_controls_ex16.py new file mode 100644 index 000000000..df4ba5eae --- /dev/null +++ b/doc/examples/quality_controls_ex16.py @@ -0,0 +1,25 @@ +# Minimum Angle + +from mechanic import * + +# Criterion : MINIMUM ANGLE < 35. +min_angle = 35. + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_MinimumAngle, SMESH.FT_LessThan, min_angle) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Minimum Angle < ", min_angle, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Minimum Angle < " + repr(min_angle)) + +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex17.py b/doc/examples/quality_controls_ex17.py new file mode 100644 index 000000000..b8ebd9ae7 --- /dev/null +++ b/doc/examples/quality_controls_ex17.py @@ -0,0 +1,25 @@ +# Warping + +from mechanic import * + +# Criterion : WARP ANGLE > 1e-15 +wa_margin = 1e-15 + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Warping, SMESH.FT_MoreThan, wa_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Warp > ", wa_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Warp > " + repr(wa_margin)) + +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex18.py b/doc/examples/quality_controls_ex18.py new file mode 100644 index 000000000..1ca2cb4b4 --- /dev/null +++ b/doc/examples/quality_controls_ex18.py @@ -0,0 +1,24 @@ +# Skew + +from mechanic import * + +# Criterion : Skew > 38. +skew_margin = 38. + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_Skew, SMESH.FT_MoreThan, skew_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Skew > ", skew_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Skew > " + repr(skew_margin)) +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex19.py b/doc/examples/quality_controls_ex19.py new file mode 100644 index 000000000..daf2f8345 --- /dev/null +++ b/doc/examples/quality_controls_ex19.py @@ -0,0 +1,24 @@ +# Element Diameter 2D + +from mechanic import * + +# Criterion : ELEMENT DIAMETER 2D > 10 +mel_2d_margin = 10 + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_MaxElementLength2D, SMESH.FT_MoreThan, mel_2d_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Element Diameter 2D Ratio > ", mel_2d_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Element Diameter 2D > " + repr(mel_2d_margin)) +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex20.py b/doc/examples/quality_controls_ex20.py new file mode 100644 index 000000000..27679198c --- /dev/null +++ b/doc/examples/quality_controls_ex20.py @@ -0,0 +1,25 @@ +# Aspect Ratio 3D + +from mechanic import * + +# Criterion : ASPECT RATIO 3D > 4.5 +ar_margin = 4.5 + +aFilter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_AspectRatio3D, SMESH.FT_MoreThan, ar_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Aspect Ratio 3D > ", ar_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.VOLUME, "Aspect Ratio 3D > " + repr(ar_margin)) + +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex21.py b/doc/examples/quality_controls_ex21.py new file mode 100644 index 000000000..1fb8bb4dd --- /dev/null +++ b/doc/examples/quality_controls_ex21.py @@ -0,0 +1,26 @@ +# Volume + +from mechanic import * + +# Criterion : VOLUME < 7. +volume_margin = 7. + +aFilter = smesh_builder.GetFilter(SMESH.VOLUME, SMESH.FT_Volume3D, SMESH.FT_LessThan, volume_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("") +print("Criterion: Volume < ", volume_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.VOLUME, "Volume < " + repr(volume_margin)) + +aGroup.Add(anIds) diff --git a/doc/examples/quality_controls_ex22.py b/doc/examples/quality_controls_ex22.py new file mode 100644 index 000000000..c33c3ecf1 --- /dev/null +++ b/doc/examples/quality_controls_ex22.py @@ -0,0 +1,24 @@ +# Element Diameter 3D + +from mechanic import * + +# Criterion : ELEMENT DIAMETER 3D > 10 +mel_3d_margin = 10 + +aFilter = smesh_builder.GetFilter(SMESH.FACE, SMESH.FT_MaxElementLength3D, SMESH.FT_MoreThan, mel_3d_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +# print the result +print("Criterion: Element Diameter 3D Ratio > ", mel_3d_margin, " Nb = ", len(anIds)) +j = 1 +for i in range(len(anIds)): + if j > 20: j = 1; print("") + print(anIds[i], end=' ') + j = j + 1 + pass +print("") + +# create a group +aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Element Diameter 3D > " + repr(mel_3d_margin)) +aGroup.Add(anIds) diff --git a/doc/examples/radial_prism_3d_algo.py b/doc/examples/radial_prism_3d_algo.py new file mode 100644 index 000000000..a2623d846 --- /dev/null +++ b/doc/examples/radial_prism_3d_algo.py @@ -0,0 +1,36 @@ +# Usage of Radial Prism 3D meshing algorithm + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Create geometry: hollow sphere + +sphere_1 = geom_builder.MakeSphereR( 100 ) +sphere_2 = geom_builder.MakeSphereR( 50 ) + +hollow_sphere = geom_builder.MakeCut( sphere_1, sphere_2, theName="hollow sphere") + +faces = geom_builder.ExtractShapes( hollow_sphere, geom_builder.ShapeType["FACE"] ) + +# Create mesh + +mesh = smesh_builder.Mesh( hollow_sphere, "Mesh of hollow sphere" ) + +# assign Global Radial Prism algorithm +prism_algo = mesh.Prism() + +# define projection between the inner and outer spheres +mesh.Triangle( smeshBuilder.NETGEN_1D2D, faces[0] ) # NETGEN on faces[0] +mesh.Projection1D2D( faces[1] ).SourceFace( faces[0] ) # projection faces[0] -> faces[1] + +# define distribution of layers using Number of Segments hypothesis in logarithmic mode +prism_algo.NumberOfSegments( 4, 5. ) + +# compute the mesh +mesh.Compute() diff --git a/doc/examples/split_biquad.py b/doc/examples/split_biquad.py new file mode 100644 index 000000000..90d544e36 --- /dev/null +++ b/doc/examples/split_biquad.py @@ -0,0 +1,37 @@ +# Split bi-quadratic to linear + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# make a shape consisting of two quadranges +OY = geom_builder.MakeVectorDXDYDZ(0, 1, 0) +OY1 = geom_builder.MakeTranslation( OY, 1, 0, 0 ) +OY2 = geom_builder.MakeTranslation( OY, 2, 0, 0 ) +q1 = geom_builder.MakeQuad2Edges( OY, OY1 ) +q2 = geom_builder.MakeQuad2Edges( OY1, OY2 ) + +shape = geom_builder.Partition( [q1,q2], theName='shape' ) +ff = geom_builder.SubShapeAll( shape, geom_builder.ShapeType["FACE"], theName="quad" ) + +# mesh one quadrange with quadrangless and the other with triangles +mesh = smesh_builder.Mesh( shape ) +mesh.Segment().NumberOfSegments(1) +mesh.Quadrangle() +mesh.Triangle( ff[1] ) +mesh.Compute() + +# make group of quadrangles and extrude them into a hexahedron +quadGroup = mesh.Group( ff[0], "quads") +mesh.ExtrusionSweepObject2D( quadGroup, [0,0,1], 1 ) + +# make the mesh bi-quadratic +mesh.ConvertToQuadratic( theToBiQuad=True ) + +# split all elements into linear ones +mesh.SplitBiQuadraticIntoLinear() diff --git a/doc/examples/test_homard_adapt.py b/doc/examples/test_homard_adapt.py new file mode 100644 index 000000000..0e250eee0 --- /dev/null +++ b/doc/examples/test_homard_adapt.py @@ -0,0 +1,95 @@ +import inspect +import os +import os.path as osp +import shutil +import tempfile + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder +import SMESHHOMARD + +smesh = smeshBuilder.New() + +data_dir = osp.abspath(osp.join(osp.dirname(inspect.getfile(lambda: None)), 'data')) +working_dir = tempfile.mkdtemp() + +input_med = osp.join (data_dir, "test_homard_adapt.med") +output_med_1 = osp.join (working_dir, "test_1.00_Uniform_R_01.med") +output_med_2 = osp.join (working_dir, "test_1.00_Uniform_R_02.med") +log_file_1 = osp.join (working_dir, "test_1.00_Uniform_R_01.med.log") +log_file_2 = osp.join (working_dir, "test_1.00_Uniform_R_02.med.log") + +# Case 1: input: med file +# output: med file, log file, published mesh +if osp.isfile(output_med_1): + os.remove(output_med_1) +if osp.isfile(log_file_1): + os.remove(log_file_1) + +smeshhomard = smesh.Adaptation("Uniform") +smeshhomard.CreateCase("MAILL", input_med, working_dir) +smeshhomard.SetConfType(0) +smeshhomard.SetKeepMedOUT(True) +smeshhomard.SetPublishMeshOUT(True) +smeshhomard.SetMeshNameOUT("MAILL_Uniform_R_01") +smeshhomard.SetMeshFileOUT(output_med_1) +smeshhomard.SetKeepWorkingFiles(False) +smeshhomard.SetLogInFile(True) +smeshhomard.SetLogFile(log_file_1) +smeshhomard.SetRemoveLogOnSuccess(False) +smeshhomard.SetVerboseLevel(3) +smeshhomard.Compute() + +if osp.isfile(output_med_1): + os.remove(output_med_1) +else: + print("Test Uniform refinement Case 1: Error: no output med file") + assert(False) + +if osp.isfile(log_file_1): + os.remove(log_file_1) +else: + print("Test Uniform refinement Case 1: Error: no log file") + assert(False) + +# Case 2: input: mesh, boundaries +# output: published mesh +if osp.isfile(output_med_2): + os.remove(output_med_2) +if osp.isfile(log_file_2): + os.remove(log_file_2) + +# prepare input mesh +([MAILL], status) = smesh.CreateMeshesFromMED( input_med ) + +#smeshhomard = smesh.Adaptation("Uniform") +Boun_1 = smeshhomard.CreateBoundaryCylinder("Boun_1", 0.5, 0.5, 0.5, 0, 0, 1, 0.25) +smeshhomard.CreateCaseOnMesh("MAILL", MAILL.GetMesh(), working_dir) +smeshhomard.SetConfType(0) +smeshhomard.AddBoundaryGroup("Boun_1", "BORD_EXT") +smeshhomard.AddBoundaryGroup("Boun_1", "MOITIE1") +smeshhomard.SetKeepMedOUT(False) +smeshhomard.SetPublishMeshOUT(True) +smeshhomard.SetMeshNameOUT("MAILL_Uniform_R_02") +smeshhomard.SetMeshFileOUT(output_med_2) +smeshhomard.SetKeepWorkingFiles(False) +smeshhomard.SetLogInFile(True) +smeshhomard.SetLogFile(log_file_2) +smeshhomard.SetRemoveLogOnSuccess(True) +smeshhomard.SetVerboseLevel(0) +smeshhomard.Compute() + +if osp.isfile(output_med_2): + print("Test Uniform refinement Case 2: Error: output med file has not been removed") + assert(False) + +if osp.isfile(log_file_2): + print("Test Uniform refinement Case 2: Error: log file has not been removed") + assert(False) + +shutil.rmtree(working_dir) + +if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() diff --git a/doc/examples/test_uniform_refinement.py b/doc/examples/test_uniform_refinement.py new file mode 100644 index 000000000..96139e01b --- /dev/null +++ b/doc/examples/test_uniform_refinement.py @@ -0,0 +1,101 @@ +import inspect +import os +import os.path as osp +import shutil +import tempfile + +import salome +salome.salome_init_without_session() + +from salome.smesh import smeshBuilder +import SMESHHOMARD + +smesh = smeshBuilder.New() + +data_dir = osp.abspath(osp.join(osp.dirname(inspect.getfile(lambda: None)), 'data')) +working_dir = tempfile.mkdtemp() + +input_med_1 = osp.join(data_dir, "tutorial_4.00.med") +input_xao_1 = osp.join(data_dir, "tutorial_4.xao") +output_med_1 = osp.join(working_dir, "tutorial_4.00_Uniform_R.med") +log_file_1 = osp.join(working_dir, "tutorial_4.00_Uniform_R.log") + +# Case 1: input: med file +# output: med file, log file, published mesh +if osp.isfile(output_med_1): + os.remove(output_med_1) +if osp.isfile(log_file_1): + os.remove(log_file_1) + +cao_name = "CAO_PIQUAGE" +smeshhomard = smesh.Adaptation("Uniform") +smeshhomard.CreateBoundaryCAO(cao_name, input_xao_1) +smeshhomard.CreateCase("PIQUAGE", input_med_1, working_dir) +smeshhomard.AddBoundary(cao_name) +smeshhomard.SetConfType(0) +smeshhomard.SetKeepMedOUT(True) +smeshhomard.SetPublishMeshOUT(True) +smeshhomard.SetMeshNameOUT("PIQUAGE_Uniform_R_01") +smeshhomard.SetMeshFileOUT(output_med_1) +smeshhomard.SetKeepWorkingFiles(False) +smeshhomard.SetLogInFile(True) +smeshhomard.SetLogFile(log_file_1) +smeshhomard.SetRemoveLogOnSuccess(False) +smeshhomard.SetVerboseLevel(3) +smeshhomard.Compute() + +if osp.isfile(output_med_1): + os.remove(output_med_1) +else: + print("Test Uniform refinement Case 1: Error: no output med file") + assert(False) + +if osp.isfile(log_file_1): + os.remove(log_file_1) +else: + print("Test Uniform refinement Case 1: Error: no log file") + assert(False) + +# Case 2: input: mesh, boundaries +# output: published mesh +input_med_2 = osp.join(data_dir, "tutorial_5.00.med") +input_fr = osp.join(data_dir, "tutorial_5.fr.med") +output_med_2 = osp.join(working_dir, "tutorial_5.00_Uniform_R.med") +log_file_2 = osp.join(working_dir, "tutorial_5.00_Uniform_R.log") + +if osp.isfile(output_med_2): + os.remove(output_med_2) +if osp.isfile(log_file_2): + os.remove(log_file_2) + +# prepare input mesh +([MAILL], status) = smesh.CreateMeshesFromMED( input_med_2 ) + +smeshhomard = smesh.Adaptation("Uniform") +smeshhomard.CreateBoundaryDi("Boun_5_1", "MAIL_EXT", input_fr) +smeshhomard.CreateCaseOnMesh("COEUR_2D", MAILL.GetMesh(), working_dir) +smeshhomard.AddBoundary("Boun_5_1") +smeshhomard.SetConfType(1) +smeshhomard.SetKeepMedOUT(False) +smeshhomard.SetPublishMeshOUT(True) +smeshhomard.SetMeshNameOUT("COEUR_2D_Uniform_R") +smeshhomard.SetMeshFileOUT(output_med_2) +smeshhomard.SetKeepWorkingFiles(False) +smeshhomard.SetLogInFile(True) +smeshhomard.SetLogFile(log_file_2) +smeshhomard.SetRemoveLogOnSuccess(True) +smeshhomard.SetVerboseLevel(0) +smeshhomard.Compute() + +if osp.isfile(output_med_2): + print("Test Uniform refinement Case 2: Error: output med file has not been removed") + assert(False) + +if osp.isfile(log_file_2): + print("Test Uniform refinement Case 2: Error: log file has not been removed") + assert(False) + +shutil.rmtree(working_dir) + +if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() diff --git a/doc/examples/tests.set b/doc/examples/tests.set new file mode 100644 index 000000000..fd85b4a8d --- /dev/null +++ b/doc/examples/tests.set @@ -0,0 +1,199 @@ +# Copyright (C) 2015-2022 CEA/DEN, EDF R&D, OPEN CASCADE +# +# 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, or (at your option) any later version. +# +# 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 +# + +# The following tests cannot be executed with 'make test' because they use +# external meshing plug-ins. +# On the other hand these tests can be executed with 'salome test'. +# --------------------------------------------------------------------------- + +SET(BAD_TESTS + a3DmeshOnModified2Dmesh.py + creating_meshes_ex01.py + creating_meshes_ex03.py + creating_meshes_ex05.py + defining_hypotheses_ex06.py + defining_hypotheses_ex09.py + defining_hypotheses_ex17.py + filters_ex02.py + filters_ex08.py + filters_ex23.py + filters_ex24.py + filters_ex25.py + filters_ex32.py + filters_ex35.py + generate_flat_elements.py + modifying_meshes_ex26.py + mesh_3d.py + notebook_smesh.py + quality_controls_ex06.py + quality_controls_ex20.py + quality_controls_ex21.py + quality_controls_ex22.py + viewing_meshes_ex01.py + radial_prism_3d_algo.py + ) +IF(NOT WIN32) + LIST(APPEND BAD_TESTS + MGAdaptTests_without_session.py + ) + IF(MED_INT_IS_LONG) + LIST(APPEND BAD_TESTS + test_homard_adapt.py + test_uniform_refinement.py + ) + ENDIF(MED_INT_IS_LONG) +ENDIF(NOT WIN32) + +# The following tests can be executed with both 'make test' and 'salome test'. +# ---------------------------------------------------------------------------- + +SET(GOOD_TESTS + cartesian_algo.py + creating_meshes_ex02.py + creating_meshes_ex04.py + creating_meshes_ex06.py + creating_meshes_ex07.py + creating_meshes_ex08.py + defining_hypotheses_ex01.py + defining_hypotheses_ex02.py + defining_hypotheses_ex03.py + defining_hypotheses_ex04.py + defining_hypotheses_ex05.py + defining_hypotheses_ex07.py + defining_hypotheses_ex08.py + defining_hypotheses_ex10.py + defining_hypotheses_ex11.py + defining_hypotheses_ex12.py + defining_hypotheses_ex13.py + defining_hypotheses_ex14.py + defining_hypotheses_ex15.py + defining_hypotheses_ex16.py + defining_hypotheses_adaptive1d.py + filters_ex01.py + filters_ex03.py + filters_ex04.py + filters_ex05.py + filters_ex06.py + filters_ex07.py + filters_ex09.py + filters_ex10.py + filters_ex11.py + filters_ex12.py + filters_ex13.py + filters_ex14.py + filters_ex15.py + filters_ex16.py + filters_ex17.py + filters_ex18.py + filters_ex19.py + filters_ex20.py + filters_ex21.py + filters_ex22.py + filters_ex26.py + filters_ex27.py + filters_ex28.py + filters_ex29.py + filters_ex30.py + filters_ex31.py + filters_ex33.py + filters_ex34.py + filters_ex36.py + filters_ex37.py + filters_ex38.py + filters_ex39.py + filters_node_nb_conn.py + filters_belong2group.py + grouping_elements_ex01.py + grouping_elements_ex02.py + grouping_elements_ex03.py + grouping_elements_ex04.py + grouping_elements_ex05.py + grouping_elements_ex06.py + grouping_elements_ex07.py + grouping_elements_ex08.py + grouping_elements_ex09.py + measurements_ex01.py + measurements_ex02.py + measurements_ex03.py + measurements_ex04.py + modifying_meshes_ex01.py + modifying_meshes_ex02.py + modifying_meshes_ex03.py + modifying_meshes_ex04.py + modifying_meshes_ex05.py + modifying_meshes_ex06.py + modifying_meshes_ex07.py + modifying_meshes_ex08.py + modifying_meshes_ex09.py + modifying_meshes_ex10.py + modifying_meshes_ex11.py + modifying_meshes_ex12.py + modifying_meshes_ex13.py + modifying_meshes_ex15.py + modifying_meshes_ex16.py + modifying_meshes_ex17.py + modifying_meshes_ex18.py + modifying_meshes_ex19.py + modifying_meshes_ex20.py + modifying_meshes_ex21.py + modifying_meshes_ex22.py + modifying_meshes_ex23.py + modifying_meshes_ex24.py + modifying_meshes_ex25.py + modifying_meshes_cut_triangles.py + modifying_meshes_split_vol.py + prism_3d_algo.py + quality_controls_ex01.py + quality_controls_ex02.py + quality_controls_ex03.py + quality_controls_ex04.py + quality_controls_ex05.py + quality_controls_ex07.py + quality_controls_ex08.py + quality_controls_ex09.py + quality_controls_ex10.py + quality_controls_ex11.py + quality_controls_ex12.py + quality_controls_ex13.py + quality_controls_ex14.py + quality_controls_ex15.py + quality_controls_ex16.py + quality_controls_ex17.py + quality_controls_ex18.py + quality_controls_ex19.py + quality_controls_defl.py + transforming_meshes_ex01.py + transforming_meshes_ex02.py + transforming_meshes_ex03.py + transforming_meshes_ex04.py + transforming_meshes_ex05.py + transforming_meshes_ex06.py + transforming_meshes_ex07.py + transforming_meshes_ex08.py + transforming_meshes_ex09.py + transforming_meshes_ex10.py + transforming_meshes_ex11.py + transforming_meshes_ex12.py + transforming_meshes_ex13.py + use_existing_faces.py + viewing_meshes_ex02.py + split_biquad.py + quad_medial_axis_algo.py + defining_hypotheses_len_near_vertex.py +) diff --git a/doc/examples/transforming_meshes_ex01.py b/doc/examples/transforming_meshes_ex01.py new file mode 100644 index 000000000..27dd16124 --- /dev/null +++ b/doc/examples/transforming_meshes_ex01.py @@ -0,0 +1,9 @@ +# Translation + +from mechanic import * + +# define translation vector +vector = [-150., -150., 0.] + +# make a translated copy of all elements of the mesh +mesh.TranslateObject(mesh, vector, Copy=True) diff --git a/doc/examples/transforming_meshes_ex02.py b/doc/examples/transforming_meshes_ex02.py new file mode 100644 index 000000000..d516a795f --- /dev/null +++ b/doc/examples/transforming_meshes_ex02.py @@ -0,0 +1,12 @@ +# Rotation + +import math + +from mechanic import * + +# define rotation axis and angle +axisXYZ = SMESH.AxisStruct(0., 0., 0., 5., 5., 20.) +angle270 = 1.5 * math.pi + +# rotate a mesh +mesh.Rotate([], axisXYZ, angle270, 1) diff --git a/doc/examples/transforming_meshes_ex03.py b/doc/examples/transforming_meshes_ex03.py new file mode 100644 index 000000000..07c8bb86a --- /dev/null +++ b/doc/examples/transforming_meshes_ex03.py @@ -0,0 +1,33 @@ +# Scale + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +Box = geom_builder.MakeBoxDXDYDZ(200, 200, 200) +f = geom_builder.SubShapeAllSorted(Box, geom_builder.ShapeType["FACE"]) + +Mesh1 = smesh_builder.Mesh(f[0]) +Regular_1D = Mesh1.Segment() +Nb_Segments_1 = Regular_1D.NumberOfSegments(3) +Nb_Segments_1.SetDistrType( 0 ) +Quadrangle_2D = Mesh1.Quadrangle() +isDone = Mesh1.Compute() + +#Perform scale operation for the whole mesh and creation of a new mesh +newMesh = Mesh1.ScaleMakeMesh(Mesh1,SMESH.PointStruct(100,100,200),[0.5,0.3,0.7],True,"ScaledMesh") + +#Perform scale operation for the whole mesh and copy elements +Mesh1.Scale(Mesh1,SMESH.PointStruct(200,100,100),[0.5,0.5,0.5],True,True) + +#Perform scale operation for two edges and move elements +Mesh1.Scale([1,2],SMESH.PointStruct(-100,100,100),[0.8,1.0,0.7],False) + +#Perform scale operation for one face and move elements +Mesh1.Scale([21],SMESH.PointStruct(0,200,200),[0.7,0.7,0.7],False) diff --git a/doc/examples/transforming_meshes_ex04.py b/doc/examples/transforming_meshes_ex04.py new file mode 100644 index 000000000..cd421fe7e --- /dev/null +++ b/doc/examples/transforming_meshes_ex04.py @@ -0,0 +1,8 @@ +# Symmetry + +from mechanic import * + +# create a symmetrical copy of the mesh mirrored through a point +axis = SMESH.AxisStruct(0, 0, 0, 0, 0, 0) + +mesh.Mirror([], axis, smesh_builder.POINT, 1) diff --git a/doc/examples/transforming_meshes_ex05.py b/doc/examples/transforming_meshes_ex05.py new file mode 100644 index 000000000..4d3b349e9 --- /dev/null +++ b/doc/examples/transforming_meshes_ex05.py @@ -0,0 +1,21 @@ +# Merging Nodes + +from mechanic import * + +# criterion of coincidence +Tolerance = 4.0 + +# find close nodes of triangle elements only +triangleFilter = smesh_builder.GetFilter( SMESH.FACE, SMESH.FT_ElemGeomType,'=', SMESH.Geom_TRIANGLE ) +GroupsOfNodesOfTriangles = mesh.FindCoincidentNodesOnPart([triangleFilter],Tolerance) + +# prevent nodes located on geom edges from removal during merge: +# create a group including all nodes on edges +allSegs = mesh.MakeGroup( "all segments", SMESH.EDGE, SMESH.FT_ElemGeomType,'=', SMESH.Geom_EDGE ) + +mesh.MergeNodes(GroupsOfNodesOfTriangles, NodesToKeep=allSegs) + +# find close nodes in the whole mesh +GroupsOfNodes = mesh.FindCoincidentNodes(Tolerance) + +mesh.MergeNodes(GroupsOfNodes, NodesToKeep=allSegs) diff --git a/doc/examples/transforming_meshes_ex06.py b/doc/examples/transforming_meshes_ex06.py new file mode 100644 index 000000000..2600cb734 --- /dev/null +++ b/doc/examples/transforming_meshes_ex06.py @@ -0,0 +1,84 @@ +# Merging Elements + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a face to be meshed +px = geom_builder.MakeVertex(100., 0. , 0. ) +py = geom_builder.MakeVertex(0. , 100., 0. ) +pz = geom_builder.MakeVertex(0. , 0. , 100.) + +vxy = geom_builder.MakeVector(px, py) +arc = geom_builder.MakeArc(py, pz, px) + +wire = geom_builder.MakeWire([vxy, arc]) +isPlanarFace = 1 + +face1 = geom_builder.MakeFace(wire, isPlanarFace) +id_face1 = geom_builder.addToStudy(face1, "Face1") + +# create a circle to be an extrusion path +px1 = geom_builder.MakeVertex( 100., 100., 0.) +py1 = geom_builder.MakeVertex(-100., -100., 0.) +pz1 = geom_builder.MakeVertex( 0., 0., 50.) + +circle = geom_builder.MakeCircleThreePnt(py1, pz1, px1) +id_circle = geom_builder.addToStudy(circle, "Path") + +# create a 2D mesh on the face +trias = smesh_builder.Mesh(face1, "Face : 2D mesh") + +algo1D = trias.Segment() +algo1D.NumberOfSegments(6) +algo2D = trias.Triangle() +algo2D.LengthFromEdges() + +trias.Compute() + +# create a group of all triangles currently present in the mesh +faceTriGroup = trias.Group( face1, "face triangles" ) + +# create a path mesh +circlemesh = smesh_builder.Mesh(circle, "Path mesh") +algo = circlemesh.Segment() +algo.NumberOfSegments(10) +circlemesh.Compute() + +# extrusion of the mesh +trias.ExtrusionAlongPath([], circlemesh, circle, 1, MakeGroups=True ) + +# get a group "opposite" to faceTriGroup within the generated prismatic mesh +oppositeGroup = trias.GetGroupByName( faceTriGroup.GetName() + "_top" )[0] + +# get edges of the groups +edgeGroup = trias.CreateDimGroup([ faceTriGroup, oppositeGroup ], SMESH.EDGE, "face edges") + +# merge nodes of the groups only +print("Number of nodes before MergeNodes:", end=' ') +trias.NbNodes() +tolerance = 0.001 +array_of_nodes_groups = trias.FindCoincidentNodesOnPart([faceTriGroup, oppositeGroup], tolerance) + +trias.MergeNodes(array_of_nodes_groups) + +print("Number of nodes after MergeNodes:", trias.NbNodes()) +print("") +print("Number of elements before MergeEqualElements:") +print("Edges : ", trias.NbEdges()) +print("Faces : ", trias.NbFaces()) +print("Volumes : ", trias.NbVolumes()) + +# merge elements of the groups +equalFaces = trias.FindEqualElements( [faceTriGroup, oppositeGroup, edgeGroup] ) +trias.MergeElements( equalFaces ) +print("Number of elements after MergeEqualElements:") +print("Edges : ", trias.NbEdges()) +print("Faces : ", trias.NbFaces()) +print("Volumes : ", trias.NbVolumes()) diff --git a/doc/examples/transforming_meshes_ex07.py b/doc/examples/transforming_meshes_ex07.py new file mode 100644 index 000000000..db7a6cb7c --- /dev/null +++ b/doc/examples/transforming_meshes_ex07.py @@ -0,0 +1,44 @@ +# Sew Meshes Border to Side + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create two faces of a box +box1 = geom_builder.MakeBox(0., 0., -10., 30., 20., 25.) +facesList1 = geom_builder.SubShapeAll(box1, geom_builder.ShapeType["FACE"]) +face1 = facesList1[2] + +box2 = geom_builder.MakeBox(0., 5., 0., 20., 20., 15.) +facesList2 = geom_builder.SubShapeAll(box2, geom_builder.ShapeType["FACE"]) +face2 = facesList2[1] + +edgesList = geom_builder.SubShapeAll(face2, geom_builder.ShapeType["EDGE"]) +edge1 = edgesList[2] + +aComp = geom_builder.MakeCompound([face1, face2]) +geom_builder.addToStudy(aComp, "Two faces") + +# create a mesh on two faces +mesh = smesh_builder.Mesh(aComp, "Two faces : quadrangle mesh") + +algo1D = mesh.Segment() +algo1D.NumberOfSegments(9) +algo2D = mesh.Quadrangle() + +algo_local = mesh.Segment(edge1) +algo_local.Arithmetic1D(1, 4) +algo_local.Propagation() + +mesh.Compute() + +# sew border to side +# FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder, +# FirstNodeIDOnSide, LastNodeIDOnSide, +# CreatePolygons, CreatePolyedrs +mesh.SewBorderToSide(5, 45, 6, 113, 109, 0, 0) diff --git a/doc/examples/transforming_meshes_ex08.py b/doc/examples/transforming_meshes_ex08.py new file mode 100644 index 000000000..3de67b9df --- /dev/null +++ b/doc/examples/transforming_meshes_ex08.py @@ -0,0 +1,42 @@ +# Sew Conform Free Borders + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create two faces of the box +box1 = geom_builder.MakeBox(0., 0., -10., 20., 20., 15.) +facesList1 = geom_builder.SubShapeAll(box1, geom_builder.ShapeType["FACE"]) +face1 = facesList1[2] + +box2 = geom_builder.MakeBox(0., 5., 0., 20., 20., 15.) +facesList2 = geom_builder.SubShapeAll(box2, geom_builder.ShapeType["FACE"]) +face2 = facesList2[1] + +edgesList = geom_builder.SubShapeAll(face2, geom_builder.ShapeType["EDGE"]) +edge1 = edgesList[2] + +aComp = geom_builder.MakeCompound([face1, face2]) +geom_builder.addToStudy(aComp, "Two faces") + +# create a mesh on two faces +mesh = smesh_builder.Mesh(aComp, "Two faces : quadrangle mesh") + +algo1D = mesh.Segment() +algo1D.NumberOfSegments(9) +algo2D = mesh.Quadrangle() + +algo_local = mesh.Segment(edge1) +algo_local.Arithmetic1D(1, 4) +algo_local.Propagation() + +mesh.Compute() + +# sew conform free borders +# FirstNodeID1, SecondNodeID1, LastNodeID1, FirstNodeID2, SecondNodeID2 +mesh.SewConformFreeBorders(5, 45, 6, 3, 24) diff --git a/doc/examples/transforming_meshes_ex09.py b/doc/examples/transforming_meshes_ex09.py new file mode 100644 index 000000000..19ab5ed95 --- /dev/null +++ b/doc/examples/transforming_meshes_ex09.py @@ -0,0 +1,47 @@ +# Sew Free Borders + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# make two not sewed quadranges +OY0 = geom_builder.MakeVectorDXDYDZ(0, 1, 0) +OY1 = geom_builder.MakeTranslation( OY0, 1, 0, 0, theName="OY1" ) +OY2 = geom_builder.MakeTranslation( OY0, 1.01, 0, 0, theName="OY2" ) +OY3 = geom_builder.MakeTranslation( OY0, 2, 0, 0 ) +q1 = geom_builder.MakeQuad2Edges( OY0, OY1 ) +q2 = geom_builder.MakeQuad2Edges( OY2, OY3 ) + +shape = geom_builder.MakeCompound( [q1,q2], theName='shape' ) + +# make a non-uniform quadrangle mesh on two faces +mesh = smesh_builder.Mesh(shape, "Two faces : quadrangle mesh") +mesh.Segment().Arithmetic1D( 0.1, 0.4 ) +mesh.Segment(q1).NumberOfSegments( 5 ) +mesh.Quadrangle() +mesh.Compute() + +# sew free borders + +segs1 = mesh.GetSubMeshElementsId( OY1 ) # mesh segments generated on borders +segs2 = mesh.GetSubMeshElementsId( OY2 ) + +FirstNodeID1 = mesh.GetElemNode( segs1[0], 0 ) +SecondNodeID1 = mesh.GetElemNode( segs1[0], 1 ) +LastNodeID1 = mesh.GetElemNode( segs1[-1], 1 ) +FirstNodeID2 = mesh.GetElemNode( segs2[0], 0 ) +SecondNodeID2 = mesh.GetElemNode( segs2[0], 1 ) +LastNodeID2 = mesh.GetElemNode( segs2[-1], 1 ) +CreatePolygons = True +CreatePolyedrs = False + +res = mesh.SewFreeBorders(FirstNodeID1, SecondNodeID1, LastNodeID1, + FirstNodeID2, SecondNodeID2, LastNodeID2, + CreatePolygons, CreatePolyedrs ) +print(res) +print("nb polygons:", mesh.NbPolygons()) diff --git a/doc/examples/transforming_meshes_ex10.py b/doc/examples/transforming_meshes_ex10.py new file mode 100644 index 000000000..36c2f5c22 --- /dev/null +++ b/doc/examples/transforming_meshes_ex10.py @@ -0,0 +1,63 @@ +# Sew Side Elements + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create two boxes +box1 = geom_builder.MakeBox(0., 0., 0., 10., 10., 10.) +box2 = geom_builder.MakeBox(0., 15., 0., 20., 25., 10.) + +EdgesList = geom_builder.SubShapeAll(box2, geom_builder.ShapeType["EDGE"]) + +aComp = geom_builder.MakeCompound([box1, box2]) +geom_builder.addToStudy(aComp, "Two boxes") + +# create a mesh on two boxes +mesh = smesh_builder.Mesh(aComp, "Sew Side Elements") + +algo1D = mesh.Segment() +algo1D.NumberOfSegments(2) +algo2D = mesh.Quadrangle() + +algo_local = mesh.Segment(EdgesList[8]) +algo_local.NumberOfSegments(4) +algo_local.Propagation() + +mesh.Compute() + +# sew side elements + +# find elements to sew +face1 = geom_builder.GetFaceNearPoint( aComp, geom_builder.MakeVertex( 5, 10, 5 )) +IDsOfSide1Elements = mesh.GetSubMeshElementsId( face1 ) +print("side faces 1:",IDsOfSide1Elements) + +face1Translated = geom_builder.MakeTranslation( face1, 0,5,0 ) +faceFilter = smesh_builder.GetFilter( SMESH.FACE, SMESH.FT_BelongToGeom,'=', face1Translated ) +IDsOfSide2Elements = mesh.GetIdsFromFilter( faceFilter ) +print("side faces 2:",IDsOfSide2Elements) + +# find corresponding nodes on sides +edge1 = geom_builder.GetEdgeNearPoint( aComp, geom_builder.MakeVertex( 0, 10, 5 )) +segs1 = mesh.GetSubMeshElementsId( edge1 ) # mesh segments generated on edge1 +NodeID1OfSide1ToMerge = mesh.GetElemNode( segs1[0], 0 ) +NodeID2OfSide1ToMerge = mesh.GetElemNode( segs1[0], 1 ) +print("nodes of side1:", [NodeID1OfSide1ToMerge,NodeID2OfSide1ToMerge]) + +edge2 = geom_builder.GetEdgeNearPoint( aComp, geom_builder.MakeVertex( 0, 15, 5 )) +segs2 = mesh.GetSubMeshElementsId( edge2 ) # mesh segments generated on edge2 +NodeID1OfSide2ToMerge = mesh.GetElemNode( segs2[0], 0 ) +NodeID2OfSide2ToMerge = mesh.GetElemNode( segs2[0], 1 ) +print("nodes of side2:", [NodeID1OfSide2ToMerge,NodeID2OfSide2ToMerge]) + +res = mesh.SewSideElements(IDsOfSide1Elements, IDsOfSide2Elements, + NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge, + NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge) +print(res) diff --git a/doc/examples/transforming_meshes_ex11.py b/doc/examples/transforming_meshes_ex11.py new file mode 100644 index 000000000..5fddd3015 --- /dev/null +++ b/doc/examples/transforming_meshes_ex11.py @@ -0,0 +1,89 @@ +# Duplicate nodes or/and elements + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Create a box + +box = geom_builder.MakeBox(0., 0., 0., 100., 200., 300.) + +# Define hexa mesh on a box +mesh = smesh_builder.Mesh(box, "Mesh") +mesh.Segment().NumberOfSegments(7) +mesh.Quadrangle() +mesh.Hexahedron() + +# Compute mesh +mesh.Compute() + +# Duplicate nodes only + +# Nodes to duplicate +nodes1 = mesh.CreateEmptyGroup( SMESH.NODE, 'nodes1' ) +nodes1.Add( [ 119, 125, 131, 137 ] ) + +# Group of faces to replace nodes with new ones +faces1 = mesh.CreateEmptyGroup( SMESH.FACE, 'faces1' ) +faces1.Add( [ 144, 151, 158 ] ) + +# Duplicate nodes +print("\nMesh before the first nodes duplication:") +print("Nodes : ", mesh.NbNodes()) +print("Edges : ", mesh.NbEdges()) +print("Quadrangles : ", mesh.NbQuadrangles()) + +groupOfCreatedNodes = mesh.DoubleNodeGroup(nodes1, faces1, theMakeGroup=True) +print("New nodes:", groupOfCreatedNodes.GetIDs()) + +print("\nMesh after the first nodes duplication:") +print("Nodes : ", mesh.NbNodes()) +print("Edges : ", mesh.NbEdges()) +print("Quadrangles : ", mesh.NbQuadrangles()) + +# Duplicate nodes and border elements + +# Edges to duplicate +edges = mesh.CreateEmptyGroup( SMESH.EDGE, 'edges' ) +edges.Add( [ 32, 33, 34 ] ) + +# Nodes not to duplicate +nodes2 = mesh.CreateEmptyGroup( SMESH.NODE, 'nodes2' ) +nodes2.Add( [ 35, 38 ] ) + +# Group of faces to replace nodes with new ones +faces2 = mesh.CreateEmptyGroup( SMESH.FACE, 'faces2' ) +faces2.Add( [ 141, 148, 155 ] ) + +# Duplicate nodes +print("\nMesh before the second nodes duplication:") +print("Nodes : ", mesh.NbNodes()) +print("Edges : ", mesh.NbEdges()) +print("Quadrangles : ", mesh.NbQuadrangles()) + +groupOfNewEdges = mesh.DoubleNodeElemGroup( edges, nodes2, faces2, theMakeGroup=True ) +print("New edges:", groupOfNewEdges.GetIDs()) + +print("\nMesh after the second nodes duplication:") +print("Nodes : ", mesh.NbNodes()) +print("Edges : ", mesh.NbEdges()) +print("Quadrangles : ", mesh.NbQuadrangles()) + + +# Duplicate elements only + +# Duplicate all faces and make a group of new faces. +# If a mesh is given to DoubleElements(), all elements of the greatest dimension are duplicated +newFacesGroup = mesh.DoubleElements( mesh, "newFacesGroup" ) + +# Duplicate edges contained in the group "edges" and add new edges to this group +mesh.DoubleElements( edges, edges.GetName() ) + +# Duplicate two first edges of the mesh +mesh.DoubleElements([ 1, 2 ]) diff --git a/doc/examples/transforming_meshes_ex12.py b/doc/examples/transforming_meshes_ex12.py new file mode 100644 index 000000000..edf912024 --- /dev/null +++ b/doc/examples/transforming_meshes_ex12.py @@ -0,0 +1,112 @@ +# Create boundary elements + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +box = geom_builder.MakeBoxDXDYDZ(100, 100, 100) +gFaces = geom_builder.SubShapeAllSorted(box, geom_builder.ShapeType["FACE"]) +f1,f2 = gFaces[0],gFaces[1] +geom_builder.addToStudy(box,"box") +geom_builder.addToStudyInFather(box,f1,"face1") +geom_builder.addToStudyInFather(box,f2,"face2") + +twoFaces = geom_builder.MakeCompound([f1,f2]) + +## ----------- +## +## 2D from 3D +## +## ----------- +dim = SMESH.BND_2DFROM3D + +init_mesh = smesh_builder.Mesh(box, "box") +init_mesh.AutomaticHexahedralization() # it makes 3 x 3 x 3 hexahedrons + +# remove some faces +faces = init_mesh.GetElementsByType( SMESH.FACE ) +nb_faces = len( faces ) +rm_face = faces[ : nb_faces // 2] +init_mesh.RemoveElements( rm_face ) + +# restore boundary in this mesh +mesh = smesh_builder.CopyMesh( init_mesh, "2D from 3D") +groupName = "bnd 2D" +nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName) + +# restore boundary (only) in other mesh +meshName = "2D boundary of " + init_mesh.GetName() +nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName) + +# restore boundary in mesh copy +meshName = init_mesh.GetName() + " + boundary" +nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName, toCopyAll=True) + +## ----------- +## +## 1D from 2D +## +## ----------- +dim = SMESH.BND_1DFROM2D + +init_mesh = smesh_builder.Mesh(f1, "2D mesh") +init_mesh.AutomaticHexahedralization() + +# remove some edges +edges = init_mesh.GetElementsByType( SMESH.EDGE ) +nb_edges = len( edges ) +rm_edge = edges[ : nb_edges // 2] +init_mesh.RemoveElements( rm_edge ) + + +# restore boundary edges in this mesh +mesh = smesh_builder.CopyMesh( init_mesh, "1D from 2D") +groupName = "bnd 1D" +nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName) + +# restore boundary edges (only) in other mesh +meshName = "1D boundary of " + init_mesh.GetName() +nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName) + +# restore boundary edges in mesh copy +meshName = init_mesh.GetName() + " + boundary" +nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName, toCopyAll=True) + +## ------------------ +## +## 1D from 2D GROUPS +## +## ------------------ +dim = SMESH.BND_1DFROM3D + +init_mesh = smesh_builder.Mesh(box, "box") +init_mesh.AutomaticHexahedralization() # it makes 3 x 3 x 3 hexahedrons +# remove all edges +rm_edges = init_mesh.GetElementsByType( SMESH.EDGE ) +init_mesh.RemoveElements( rm_edges ) + +# make groups of faces +fGroup1 = init_mesh.Group( f1, "f1" ) +fGroup2 = init_mesh.Group( f2, "f2" ) + +# make 1D boundary around groups in this mesh +mesh = smesh_builder.CopyMesh( init_mesh, "1D from 2D groups", toCopyGroups=True) +groups = mesh.GetGroups() +nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName,groups=groups) + +# make 1D boundary (only) in other mesh +meshName = "boundary from groups of " + init_mesh.GetName() +groups = init_mesh.GetGroups() +nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName,groups=groups) + +# make 1D boundary in mesh copy +meshName = init_mesh.GetName() + " + boundary from groups" +nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName, + groups=groups, toCopyAll=True) + diff --git a/doc/examples/transforming_meshes_ex13.py b/doc/examples/transforming_meshes_ex13.py new file mode 100644 index 000000000..d8fade895 --- /dev/null +++ b/doc/examples/transforming_meshes_ex13.py @@ -0,0 +1,84 @@ +# Reorient faces + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a geometry consisting of two faces +box = geom_builder.MakeBoxDXDYDZ( 10, 10, 10 ) +faces = geom_builder.SubShapeAllSorted( box, geom_builder.ShapeType["FACE"]) + +shape = geom_builder.MakeCompound( faces[:2] ) +faces = geom_builder.SubShapeAll( shape, geom_builder.ShapeType["FACE"] ) +geom_builder.addToStudy( shape, "shape") +geom_builder.addToStudyInFather( shape, faces[0], "faces[0]") +geom_builder.addToStudyInFather( shape, faces[1], "faces[1]") + +# create a 2D mesh +mesh = smesh_builder.Mesh( shape, "test_Reorient2D") +mesh.AutomaticHexahedralization(0.5) +localAlgo = mesh.Segment(faces[0]) +localAlgo.NumberOfSegments( 11 ) +mesh.Compute() +group = mesh.Group( faces[1] ) + +vec = geom_builder.MakeVectorDXDYDZ( 1, 1, 1 ) + +# ============ +# Reorient2D() +# ============ + +# Each of arguments of Reorient2D() function can be of different types: +# +# 2DObject - the whole mesh +# Direction - a GEOM object (vector) +# FaceOrPoint - an ID of face +mesh.Reorient2D( mesh, vec, mesh.NbElements() ) +# +# 2DObject - a sub-mesh +# Direction - components of a vector +# FaceOrPoint - a GEOM object (vertex) +mesh.Reorient2D( localAlgo.GetSubMesh(), [ 1, -1, 1 ], geom_builder.GetFirstVertex( vec )) +# +# 2DObject - a group of faces +# Direction - a SMESH.DirStruct structure +# FaceOrPoint - coordinates of a point +mesh.Reorient2D( group, smesh_builder.MakeDirStruct( -10, 1, 10 ), [0,0,0]) +# +# FaceOrPoint - a SMESH.PointStruct structure +mesh.Reorient2D( localAlgo.GetSubMesh().GetIDs(), [10,1,0], SMESH.PointStruct(0,0,0)) + +# ======================== +# Reorient2DByNeighbours() +# ======================== + +# Use faces of 'group' as a reference to reorient equally all faces +mesh.Reorient2DByNeighbours([mesh], [group]) + +# Orient equally face on 'group', but not define which orientation is correct +mesh.Reorient2DByNeighbours([group]) + +# ================= +# Reorient2DBy3D() +# ================= + +# Use Reorient2DBy3D() to orient faces of 2 geom faces to have their normal pointing inside volumes + +mesh3D = smesh_builder.Mesh( box, '3D mesh') +mesh3D.AutomaticHexahedralization(0.5) +group0 = mesh3D.Group( faces[0] ) +group1 = mesh3D.Group( faces[1] ) + +# pass group0 and ids of faces of group1 to inverse +nbRev = mesh3D.Reorient2DBy3D([ group0, group1.GetIDs() ], mesh3D, theOutsideNormal=False) +print("Nb reoriented faces:", nbRev) + +# orient the reversed faces back +nbRev = mesh3D.Reorient2DBy3D( mesh3D, mesh3D, theOutsideNormal=True) +print("Nb re-reoriented faces:", nbRev) diff --git a/doc/examples/use_existing_faces.py b/doc/examples/use_existing_faces.py new file mode 100644 index 000000000..4cdb9f26a --- /dev/null +++ b/doc/examples/use_existing_faces.py @@ -0,0 +1,116 @@ +# Usage of "Use Faces to be Created Manually" algorithm + +import salome +salome.salome_init_without_session() + +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# define my 2D algorithm +def my2DMeshing(geomFace, mesh): + import numpy as np + + # find gravity center of geomFace + gcXYZ = geom_builder.PointCoordinates( geom_builder.MakeCDG( geomFace )) + + # define order and orientation of edges + sortedEdges = [] + geomEdges = geom_builder.SubShapeAll( geomFace, geom_builder.ShapeType["EDGE"]) + sortedEdges.append(( geomEdges.pop(0), True )) + while geomEdges: + prevEdge_rev = sortedEdges[ -1 ] + prevVV = geom_builder.SubShapeAll( prevEdge_rev[0], geom_builder.ShapeType["VERTEX"]) + prevV2 = prevVV[ prevEdge_rev[1] ] + found = False + for iE in range( len( geomEdges )): + v1,v2 = geom_builder.SubShapeAll( geomEdges[ iE ], geom_builder.ShapeType["VERTEX"]) + same1,same2 = [( geom_builder.MinDistance( prevV2, v ) < 1e-7 ) for v in [v1,v2] ] + if not same1 and not same2: continue + sortedEdges.append(( geomEdges.pop( iE ), same1 )) + found = True + break + assert found + sortedEdges.reverse() + + # put nodes on edges in a right order + nodes = [] + for edge, isForward in sortedEdges: + v1,v2 = geom_builder.SubShapeAll( edge, geom_builder.ShapeType["VERTEX"]) + edgeNodes = mesh.GetSubMeshNodesId( v2, all=False ) + \ + mesh.GetSubMeshNodesId( edge, all=False ) + \ + mesh.GetSubMeshNodesId( v1, all=False ) + if not isForward: edgeNodes.reverse() + nodes.extend( edgeNodes[:-1] ) + + # create nodes inside the geomFace + r1 = 0.6 + r2 = 1 - r1 + nodesInside = [] + for n in nodes: + nXYZ = mesh.GetNodeXYZ( n ) + newXYZ = np.add( np.multiply( r1, gcXYZ ), np.multiply( r2, nXYZ )) + nodesInside.append( mesh.AddNode( newXYZ[0], newXYZ[1], newXYZ[2] )) + mesh.SetNodeOnFace( nodesInside[-1], geomFace, 0, 0 ) + + # find out orientation of faces to create + # geomFace normal + faceNorm = geom_builder.GetNormal( geomFace ) + v1,v2 = [ geom_builder.PointCoordinates( v ) \ + for v in geom_builder.SubShapeAll( faceNorm, geom_builder.ShapeType["VERTEX"]) ] + faceNormXYZ = np.subtract( v2, v1 ) + outDirXYZ = np.subtract( v1, [ 50, 50, 50 ] ) + if np.dot( faceNormXYZ, outDirXYZ ) < 0: # reversed face + faceNormXYZ = np.multiply( -1., faceNormXYZ ) + # mesh face normal + e1 = np.subtract( mesh.GetNodeXYZ( nodes[0] ), mesh.GetNodeXYZ( nodes[1] )) + e2 = np.subtract( mesh.GetNodeXYZ( nodes[0] ), mesh.GetNodeXYZ( nodesInside[0] )) + meshNorm = np.cross( e1, e2 ) + # faces orientation + reverse = ( np.dot( faceNormXYZ, meshNorm ) < 0 ) + + # create mesh faces + iN = len( nodes ) + while iN: + n1, n2, n3, n4 = nodes[iN-1], nodes[iN-2], nodesInside[iN-2], nodesInside[iN-1] + iN -= 1 + if reverse: + f = mesh.AddFace( [n1, n2, n3, n4] ) + else: + f = mesh.AddFace( [n4, n3, n2, n1] ) + # new faces must be assigned to geometry to allow 3D algorithm finding them + mesh.SetMeshElementOnShape( f, geomFace ) + + if reverse: + nodesInside.reverse() + polygon = mesh.AddPolygonalFace( nodesInside ) + mesh.SetMeshElementOnShape( polygon, geomFace ) + + return + +# create geometry and get faces to mesh with my2DMeshing() +box = geom_builder.MakeBoxDXDYDZ( 100, 100, 100 ) +f1 = geom_builder.SubShapeAll( box, geom_builder.ShapeType["FACE"])[0] +f2 = geom_builder.GetOppositeFace( box, f1 ) +geom_builder.addToStudy( box, "box" ) +geom_builder.addToStudy( f1, "f1" ) +geom_builder.addToStudy( f2, "f2" ) + +# compute 1D mesh +mesh = smesh_builder.Mesh( box ) +mesh.Segment().NumberOfSegments( 5 ) +mesh.Compute() + +# compute 2D mesh +mesh.Quadrangle() +mesh.UseExistingFaces(f1) # UseExistingFaces() allows using my2DMeshing(); +mesh.UseExistingFaces(f2) # assign UseExistingFaces() BEFORE calling my2DMeshing()! +my2DMeshing(f1, mesh) +my2DMeshing(f2, mesh) +assert mesh.Compute() + +# compute 3D mesh +mesh.Prism() +assert mesh.Compute() diff --git a/doc/examples/viewing_meshes_ex01.py b/doc/examples/viewing_meshes_ex01.py new file mode 100644 index 000000000..e75f036a3 --- /dev/null +++ b/doc/examples/viewing_meshes_ex01.py @@ -0,0 +1,82 @@ +# Viewing Mesh Infos + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# create a box +box = geom_builder.MakeBox(0., 0., 0., 20., 20., 20.) +geom_builder.addToStudy(box, "box") +[Face_1,Face_2,Face_3,Face_4,Face_5,Face_5] = geom_builder.SubShapeAll(box, geom_builder.ShapeType["FACE"]) + +# create a mesh +tetra = smesh_builder.Mesh(box, "MeshBox") + +algo1D = tetra.Segment() +algo1D.NumberOfSegments(3) + +algo2D = tetra.Triangle() +algo2D.MaxElementArea(10.) + +algo3D = tetra.Tetrahedron() +algo3D.MaxElementVolume(900.) + +# Creation of SubMesh +Regular_1D_1_1 = tetra.Segment(geom=Face_1) +Nb_Segments_1 = Regular_1D_1_1.NumberOfSegments(5) +Nb_Segments_1.SetDistrType( 0 ) +Quadrangle_2D = tetra.Quadrangle(geom=Face_1) +isDone = tetra.Compute() +submesh = Regular_1D_1_1.GetSubMesh() + +# compute the mesh +tetra.Compute() + +# Creation of group +group = tetra.CreateEmptyGroup( SMESH.FACE, 'Group' ) +nbAdd = group.Add( [ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76 ] ) + +# Print information about the mesh +print("Information about mesh:") +print("Number of nodes : ", tetra.NbNodes()) +print("Number of edges : ", tetra.NbEdges()) +print("Number of faces : ", tetra.NbFaces()) +print(" triangles : ", tetra.NbTriangles()) +print(" quadrangles : ", tetra.NbQuadrangles()) +print(" polygons : ", tetra.NbPolygons()) +print("Number of volumes : ", tetra.NbVolumes()) +print(" tetrahedrons: ", tetra.NbTetras()) +print(" hexahedrons : ", tetra.NbHexas()) +print(" prisms : ", tetra.NbPrisms()) +print(" pyramids : ", tetra.NbPyramids()) +print(" polyhedrons : ", tetra.NbPolyhedrons()) + +# Get Information About Mesh by GetMeshInfo +print("\nInformation about mesh by GetMeshInfo:") +info = smesh_builder.GetMeshInfo(tetra) +keys = list(info.keys()); keys.sort() +for i in keys: + print(" %s : %d" % ( i, info[i] )) + pass + +# Get Information About Group by GetMeshInfo +print("\nInformation about group by GetMeshInfo:") +info = smesh_builder.GetMeshInfo(group) +keys = list(info.keys()); keys.sort() +for i in keys: + print(" %s : %d" % ( i, info[i] )) + pass + +# Get Information About SubMesh by GetMeshInfo +print("\nInformation about Submesh by GetMeshInfo:") +info = smesh_builder.GetMeshInfo(submesh) +keys = list(info.keys()); keys.sort() +for i in keys: + print(" %s : %d" % ( i, info[i] )) + pass diff --git a/doc/examples/viewing_meshes_ex02.py b/doc/examples/viewing_meshes_ex02.py new file mode 100644 index 000000000..a2f2ed17a --- /dev/null +++ b/doc/examples/viewing_meshes_ex02.py @@ -0,0 +1,51 @@ +# Find Element by Point + +import salome +salome.salome_init_without_session() + +import SMESH +from salome.geom import geomBuilder +from salome.smesh import smeshBuilder + +geom_builder = geomBuilder.New() +smesh_builder = smeshBuilder.New() + +# Create a geometry to mesh +box = geom_builder.MakeBoxDXDYDZ(100,100,100) + +# Create a mesh +mesh = smesh_builder.Mesh(box,"Mesh") +mesh.AutomaticHexahedralization() +mesh.Compute() + +# Create a point +x,y,z = 0, 0, 1 + +# Find all elements (except 0D ones) located at the point +all_elems_except_0D = mesh.FindElementsByPoint(x,y,z) +assert( len(all_elems_except_0D) == 4) + +# Find nodes at the point +nodes = mesh.FindElementsByPoint(x,y,z, SMESH.NODE ) +assert( len(nodes) == 0) +assert( len( mesh.FindElementsByPoint(x,y,0, SMESH.NODE)) == 1) + +# Find an edge at the point +edges = mesh.FindElementsByPoint(x,y,z, SMESH.EDGE ) +assert( len(edges) == 1) + +# Find faces at the point +edges = mesh.FindElementsByPoint(x,y,z, SMESH.FACE ) +assert( len(edges) == 2) + +# Find a volume at the point +vols = mesh.FindElementsByPoint(x,y,z, SMESH.VOLUME ) +assert( len(vols) == 1) + +# Find 0D elements at the point +elems0d = mesh.FindElementsByPoint(x,y,z, SMESH.ELEM0D ) +assert( len(elems0d) == 0) + +# Find edges within a group +group1D = mesh.MakeGroupByIds("1D", SMESH.EDGE, [1,2] ) +edges = mesh.FindElementsByPoint(x,y,z, SMESH.EDGE, group1D ) diff --git a/doc/salome/gui/SMESH/CMakeLists.txt b/doc/gui/CMakeLists.txt similarity index 100% rename from doc/salome/gui/SMESH/CMakeLists.txt rename to doc/gui/CMakeLists.txt diff --git a/doc/salome/gui/SMESH/collect_mesh_methods.py b/doc/gui/collect_mesh_methods.py similarity index 100% rename from doc/salome/gui/SMESH/collect_mesh_methods.py rename to doc/gui/collect_mesh_methods.py diff --git a/doc/salome/gui/SMESH/conf.py.in b/doc/gui/conf.py.in similarity index 100% rename from doc/salome/gui/SMESH/conf.py.in rename to doc/gui/conf.py.in diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_dlg.png b/doc/gui/images/2d_from_3d_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/2d_from_3d_dlg.png rename to doc/gui/images/2d_from_3d_dlg.png diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_example.png b/doc/gui/images/2d_from_3d_example.png similarity index 100% rename from doc/salome/gui/SMESH/images/2d_from_3d_example.png rename to doc/gui/images/2d_from_3d_example.png diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_ico.png b/doc/gui/images/2d_from_3d_ico.png similarity index 100% rename from doc/salome/gui/SMESH/images/2d_from_3d_ico.png rename to doc/gui/images/2d_from_3d_ico.png diff --git a/doc/salome/gui/SMESH/images/2d_from_3d_menu.png b/doc/gui/images/2d_from_3d_menu.png similarity index 100% rename from doc/salome/gui/SMESH/images/2d_from_3d_menu.png rename to doc/gui/images/2d_from_3d_menu.png diff --git a/doc/salome/gui/SMESH/images/Clipping_Absolute.png b/doc/gui/images/Clipping_Absolute.png similarity index 100% rename from doc/salome/gui/SMESH/images/Clipping_Absolute.png rename to doc/gui/images/Clipping_Absolute.png diff --git a/doc/salome/gui/SMESH/images/Clipping_Relative.png b/doc/gui/images/Clipping_Relative.png similarity index 100% rename from doc/salome/gui/SMESH/images/Clipping_Relative.png rename to doc/gui/images/Clipping_Relative.png diff --git a/doc/salome/gui/SMESH/images/Nut_sharp_edges.png b/doc/gui/images/Nut_sharp_edges.png similarity index 100% rename from doc/salome/gui/SMESH/images/Nut_sharp_edges.png rename to doc/gui/images/Nut_sharp_edges.png diff --git a/doc/salome/gui/SMESH/images/a-arithmetic1d.png b/doc/gui/images/a-arithmetic1d.png similarity index 100% rename from doc/salome/gui/SMESH/images/a-arithmetic1d.png rename to doc/gui/images/a-arithmetic1d.png diff --git a/doc/salome/gui/SMESH/images/a-averagelength.png b/doc/gui/images/a-averagelength.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-averagelength.png rename to doc/gui/images/a-averagelength.png diff --git a/doc/salome/gui/SMESH/images/a-clipping2.png b/doc/gui/images/a-clipping2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-clipping2.png rename to doc/gui/images/a-clipping2.png diff --git a/doc/salome/gui/SMESH/images/a-creategroup.png b/doc/gui/images/a-creategroup.png similarity index 100% rename from doc/salome/gui/SMESH/images/a-creategroup.png rename to doc/gui/images/a-creategroup.png diff --git a/doc/salome/gui/SMESH/images/a-createpolyhedralvolume.png b/doc/gui/images/a-createpolyhedralvolume.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-createpolyhedralvolume.png rename to doc/gui/images/a-createpolyhedralvolume.png diff --git a/doc/salome/gui/SMESH/images/a-cuttingofquadrangles.png b/doc/gui/images/a-cuttingofquadrangles.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-cuttingofquadrangles.png rename to doc/gui/images/a-cuttingofquadrangles.png diff --git a/doc/salome/gui/SMESH/images/a-deflection1d.png b/doc/gui/images/a-deflection1d.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-deflection1d.png rename to doc/gui/images/a-deflection1d.png diff --git a/doc/salome/gui/SMESH/images/a-filteronfaces.png b/doc/gui/images/a-filteronfaces.png similarity index 100% rename from doc/salome/gui/SMESH/images/a-filteronfaces.png rename to doc/gui/images/a-filteronfaces.png diff --git a/doc/salome/gui/SMESH/images/a-geometric1d.png b/doc/gui/images/a-geometric1d.png similarity index 100% rename from doc/salome/gui/SMESH/images/a-geometric1d.png rename to doc/gui/images/a-geometric1d.png diff --git a/doc/salome/gui/SMESH/images/a-maxelarea.png b/doc/gui/images/a-maxelarea.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-maxelarea.png rename to doc/gui/images/a-maxelarea.png diff --git a/doc/salome/gui/SMESH/images/a-maxelvolume.png b/doc/gui/images/a-maxelvolume.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-maxelvolume.png rename to doc/gui/images/a-maxelvolume.png diff --git a/doc/salome/gui/SMESH/images/a-maxsize1d.png b/doc/gui/images/a-maxsize1d.png similarity index 100% rename from doc/salome/gui/SMESH/images/a-maxsize1d.png rename to doc/gui/images/a-maxsize1d.png diff --git a/doc/salome/gui/SMESH/images/a-nbsegments1.png b/doc/gui/images/a-nbsegments1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-nbsegments1.png rename to doc/gui/images/a-nbsegments1.png diff --git a/doc/salome/gui/SMESH/images/a-nbsegments2.png b/doc/gui/images/a-nbsegments2.png similarity index 100% rename from doc/salome/gui/SMESH/images/a-nbsegments2.png rename to doc/gui/images/a-nbsegments2.png diff --git a/doc/salome/gui/SMESH/images/a-patterntype.png b/doc/gui/images/a-patterntype.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-patterntype.png rename to doc/gui/images/a-patterntype.png diff --git a/doc/salome/gui/SMESH/images/a-patterntype1.png b/doc/gui/images/a-patterntype1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-patterntype1.png rename to doc/gui/images/a-patterntype1.png diff --git a/doc/salome/gui/SMESH/images/a-standmeshinfo.png b/doc/gui/images/a-standmeshinfo.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-standmeshinfo.png rename to doc/gui/images/a-standmeshinfo.png diff --git a/doc/salome/gui/SMESH/images/a-startendlength.png b/doc/gui/images/a-startendlength.png similarity index 100% rename from doc/salome/gui/SMESH/images/a-startendlength.png rename to doc/gui/images/a-startendlength.png diff --git a/doc/salome/gui/SMESH/images/a-transparency.png b/doc/gui/images/a-transparency.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-transparency.png rename to doc/gui/images/a-transparency.png diff --git a/doc/salome/gui/SMESH/images/a-unionoftriangles.png b/doc/gui/images/a-unionoftriangles.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-unionoftriangles.png rename to doc/gui/images/a-unionoftriangles.png diff --git a/doc/salome/gui/SMESH/images/a-viewgeneral.png b/doc/gui/images/a-viewgeneral.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/a-viewgeneral.png rename to doc/gui/images/a-viewgeneral.png diff --git a/doc/salome/gui/SMESH/images/adaptation_01.png b/doc/gui/images/adaptation_01.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptation_01.png rename to doc/gui/images/adaptation_01.png diff --git a/doc/salome/gui/SMESH/images/adaptation_02.png b/doc/gui/images/adaptation_02.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptation_02.png rename to doc/gui/images/adaptation_02.png diff --git a/doc/salome/gui/SMESH/images/adaptation_with_homard_advanced.png b/doc/gui/images/adaptation_with_homard_advanced.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptation_with_homard_advanced.png rename to doc/gui/images/adaptation_with_homard_advanced.png diff --git a/doc/salome/gui/SMESH/images/adaptation_with_homard_arguments.png b/doc/gui/images/adaptation_with_homard_arguments.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptation_with_homard_arguments.png rename to doc/gui/images/adaptation_with_homard_arguments.png diff --git a/doc/salome/gui/SMESH/images/adaptation_with_homard_boundary_analytical.png b/doc/gui/images/adaptation_with_homard_boundary_analytical.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptation_with_homard_boundary_analytical.png rename to doc/gui/images/adaptation_with_homard_boundary_analytical.png diff --git a/doc/salome/gui/SMESH/images/adaptation_with_homard_boundary_cao.png b/doc/gui/images/adaptation_with_homard_boundary_cao.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptation_with_homard_boundary_cao.png rename to doc/gui/images/adaptation_with_homard_boundary_cao.png diff --git a/doc/salome/gui/SMESH/images/adaptation_with_homard_boundary_discrete.png b/doc/gui/images/adaptation_with_homard_boundary_discrete.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptation_with_homard_boundary_discrete.png rename to doc/gui/images/adaptation_with_homard_boundary_discrete.png diff --git a/doc/salome/gui/SMESH/images/adaptation_with_homard_boundary_groups.png b/doc/gui/images/adaptation_with_homard_boundary_groups.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptation_with_homard_boundary_groups.png rename to doc/gui/images/adaptation_with_homard_boundary_groups.png diff --git a/doc/salome/gui/SMESH/images/adaptive1d.png b/doc/gui/images/adaptive1d.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptive1d.png rename to doc/gui/images/adaptive1d.png diff --git a/doc/salome/gui/SMESH/images/adaptive1d_sample_mesh.png b/doc/gui/images/adaptive1d_sample_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/adaptive1d_sample_mesh.png rename to doc/gui/images/adaptive1d_sample_mesh.png diff --git a/doc/salome/gui/SMESH/images/add.gif b/doc/gui/images/add.gif similarity index 100% rename from doc/salome/gui/SMESH/images/add.gif rename to doc/gui/images/add.gif diff --git a/doc/salome/gui/SMESH/images/add.png b/doc/gui/images/add.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/add.png rename to doc/gui/images/add.png diff --git a/doc/salome/gui/SMESH/images/add0delement.png b/doc/gui/images/add0delement.png similarity index 100% rename from doc/salome/gui/SMESH/images/add0delement.png rename to doc/gui/images/add0delement.png diff --git a/doc/salome/gui/SMESH/images/add_0delement.png b/doc/gui/images/add_0delement.png similarity index 100% rename from doc/salome/gui/SMESH/images/add_0delement.png rename to doc/gui/images/add_0delement.png diff --git a/doc/salome/gui/SMESH/images/add_ball.png b/doc/gui/images/add_ball.png similarity index 100% rename from doc/salome/gui/SMESH/images/add_ball.png rename to doc/gui/images/add_ball.png diff --git a/doc/salome/gui/SMESH/images/add_edge.png b/doc/gui/images/add_edge.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/add_edge.png rename to doc/gui/images/add_edge.png diff --git a/doc/salome/gui/SMESH/images/add_node.png b/doc/gui/images/add_node.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/add_node.png rename to doc/gui/images/add_node.png diff --git a/doc/salome/gui/SMESH/images/add_node_on_face-dlg.png b/doc/gui/images/add_node_on_face-dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/add_node_on_face-dlg.png rename to doc/gui/images/add_node_on_face-dlg.png diff --git a/doc/salome/gui/SMESH/images/add_node_on_face.png b/doc/gui/images/add_node_on_face.png similarity index 100% rename from doc/salome/gui/SMESH/images/add_node_on_face.png rename to doc/gui/images/add_node_on_face.png diff --git a/doc/salome/gui/SMESH/images/add_node_on_segment-dlg.png b/doc/gui/images/add_node_on_segment-dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/add_node_on_segment-dlg.png rename to doc/gui/images/add_node_on_segment-dlg.png diff --git a/doc/salome/gui/SMESH/images/add_node_on_segment.png b/doc/gui/images/add_node_on_segment.png similarity index 100% rename from doc/salome/gui/SMESH/images/add_node_on_segment.png rename to doc/gui/images/add_node_on_segment.png diff --git a/doc/salome/gui/SMESH/images/add_polygone.png b/doc/gui/images/add_polygone.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/add_polygone.png rename to doc/gui/images/add_polygone.png diff --git a/doc/salome/gui/SMESH/images/add_polyhedron.png b/doc/gui/images/add_polyhedron.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/add_polyhedron.png rename to doc/gui/images/add_polyhedron.png diff --git a/doc/salome/gui/SMESH/images/add_quadrangle.png b/doc/gui/images/add_quadrangle.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/add_quadrangle.png rename to doc/gui/images/add_quadrangle.png diff --git a/doc/salome/gui/SMESH/images/add_triangle.png b/doc/gui/images/add_triangle.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/add_triangle.png rename to doc/gui/images/add_triangle.png diff --git a/doc/salome/gui/SMESH/images/addball.png b/doc/gui/images/addball.png similarity index 100% rename from doc/salome/gui/SMESH/images/addball.png rename to doc/gui/images/addball.png diff --git a/doc/salome/gui/SMESH/images/addedge.png b/doc/gui/images/addedge.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/addedge.png rename to doc/gui/images/addedge.png diff --git a/doc/salome/gui/SMESH/images/addhexahedron.png b/doc/gui/images/addhexahedron.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/addhexahedron.png rename to doc/gui/images/addhexahedron.png diff --git a/doc/salome/gui/SMESH/images/addinfo_group.png b/doc/gui/images/addinfo_group.png similarity index 100% rename from doc/salome/gui/SMESH/images/addinfo_group.png rename to doc/gui/images/addinfo_group.png diff --git a/doc/salome/gui/SMESH/images/addinfo_mesh.png b/doc/gui/images/addinfo_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/addinfo_mesh.png rename to doc/gui/images/addinfo_mesh.png diff --git a/doc/salome/gui/SMESH/images/addinfo_submesh.png b/doc/gui/images/addinfo_submesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/addinfo_submesh.png rename to doc/gui/images/addinfo_submesh.png diff --git a/doc/salome/gui/SMESH/images/addnode.png b/doc/gui/images/addnode.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/addnode.png rename to doc/gui/images/addnode.png diff --git a/doc/salome/gui/SMESH/images/addnode_notebook.png b/doc/gui/images/addnode_notebook.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/addnode_notebook.png rename to doc/gui/images/addnode_notebook.png diff --git a/doc/salome/gui/SMESH/images/addpolygon.png b/doc/gui/images/addpolygon.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/addpolygon.png rename to doc/gui/images/addpolygon.png diff --git a/doc/salome/gui/SMESH/images/addquadrangle.png b/doc/gui/images/addquadrangle.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/addquadrangle.png rename to doc/gui/images/addquadrangle.png diff --git a/doc/salome/gui/SMESH/images/addtetrahedron.png b/doc/gui/images/addtetrahedron.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/addtetrahedron.png rename to doc/gui/images/addtetrahedron.png diff --git a/doc/salome/gui/SMESH/images/addtriangle.png b/doc/gui/images/addtriangle.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/addtriangle.png rename to doc/gui/images/addtriangle.png diff --git a/doc/salome/gui/SMESH/images/advanced_mesh_infos.png b/doc/gui/images/advanced_mesh_infos.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/advanced_mesh_infos.png rename to doc/gui/images/advanced_mesh_infos.png diff --git a/doc/salome/gui/SMESH/images/analyticdensity.png b/doc/gui/images/analyticdensity.png similarity index 100% rename from doc/salome/gui/SMESH/images/analyticdensity.png rename to doc/gui/images/analyticdensity.png diff --git a/doc/salome/gui/SMESH/images/angle_measure.png b/doc/gui/images/angle_measure.png similarity index 100% rename from doc/salome/gui/SMESH/images/angle_measure.png rename to doc/gui/images/angle_measure.png diff --git a/doc/salome/gui/SMESH/images/aqt.png b/doc/gui/images/aqt.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/aqt.png rename to doc/gui/images/aqt.png diff --git a/doc/salome/gui/SMESH/images/automaticlength.png b/doc/gui/images/automaticlength.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/automaticlength.png rename to doc/gui/images/automaticlength.png diff --git a/doc/salome/gui/SMESH/images/b-art_end_length.png b/doc/gui/images/b-art_end_length.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/b-art_end_length.png rename to doc/gui/images/b-art_end_length.png diff --git a/doc/salome/gui/SMESH/images/b-erage_length.png b/doc/gui/images/b-erage_length.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/b-erage_length.png rename to doc/gui/images/b-erage_length.png diff --git a/doc/salome/gui/SMESH/images/b-flection1d.png b/doc/gui/images/b-flection1d.png similarity index 100% rename from doc/salome/gui/SMESH/images/b-flection1d.png rename to doc/gui/images/b-flection1d.png diff --git a/doc/salome/gui/SMESH/images/b-ithmetic1d.png b/doc/gui/images/b-ithmetic1d.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/b-ithmetic1d.png rename to doc/gui/images/b-ithmetic1d.png diff --git a/doc/salome/gui/SMESH/images/b-mberofsegments.png b/doc/gui/images/b-mberofsegments.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/b-mberofsegments.png rename to doc/gui/images/b-mberofsegments.png diff --git a/doc/salome/gui/SMESH/images/b-mesh_infos.png b/doc/gui/images/b-mesh_infos.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/b-mesh_infos.png rename to doc/gui/images/b-mesh_infos.png diff --git a/doc/salome/gui/SMESH/images/bare_border_faces_smpl.png b/doc/gui/images/bare_border_faces_smpl.png similarity index 100% rename from doc/salome/gui/SMESH/images/bare_border_faces_smpl.png rename to doc/gui/images/bare_border_faces_smpl.png diff --git a/doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png b/doc/gui/images/bare_border_volumes_smpl.png similarity index 100% rename from doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png rename to doc/gui/images/bare_border_volumes_smpl.png diff --git a/doc/salome/gui/SMESH/images/basic_props.png b/doc/gui/images/basic_props.png similarity index 100% rename from doc/salome/gui/SMESH/images/basic_props.png rename to doc/gui/images/basic_props.png diff --git a/doc/salome/gui/SMESH/images/before_clipping.png b/doc/gui/images/before_clipping.png similarity index 100% rename from doc/salome/gui/SMESH/images/before_clipping.png rename to doc/gui/images/before_clipping.png diff --git a/doc/salome/gui/SMESH/images/before_clipping_preview.png b/doc/gui/images/before_clipping_preview.png similarity index 100% rename from doc/salome/gui/SMESH/images/before_clipping_preview.png rename to doc/gui/images/before_clipping_preview.png diff --git a/doc/salome/gui/SMESH/images/block_renumber_hyp.png b/doc/gui/images/block_renumber_hyp.png similarity index 100% rename from doc/salome/gui/SMESH/images/block_renumber_hyp.png rename to doc/gui/images/block_renumber_hyp.png diff --git a/doc/salome/gui/SMESH/images/bnd_box.png b/doc/gui/images/bnd_box.png similarity index 100% rename from doc/salome/gui/SMESH/images/bnd_box.png rename to doc/gui/images/bnd_box.png diff --git a/doc/salome/gui/SMESH/images/bnd_box_preview.png b/doc/gui/images/bnd_box_preview.png similarity index 100% rename from doc/salome/gui/SMESH/images/bnd_box_preview.png rename to doc/gui/images/bnd_box_preview.png diff --git a/doc/salome/gui/SMESH/images/buildcompound.png b/doc/gui/images/buildcompound.png similarity index 100% rename from doc/salome/gui/SMESH/images/buildcompound.png rename to doc/gui/images/buildcompound.png diff --git a/doc/salome/gui/SMESH/images/buildcompound_groups.png b/doc/gui/images/buildcompound_groups.png similarity index 100% rename from doc/salome/gui/SMESH/images/buildcompound_groups.png rename to doc/gui/images/buildcompound_groups.png diff --git a/doc/salome/gui/SMESH/images/cartesian3D_hyp.png b/doc/gui/images/cartesian3D_hyp.png similarity index 100% rename from doc/salome/gui/SMESH/images/cartesian3D_hyp.png rename to doc/gui/images/cartesian3D_hyp.png diff --git a/doc/salome/gui/SMESH/images/cartesian3D_sphere.png b/doc/gui/images/cartesian3D_sphere.png similarity index 100% rename from doc/salome/gui/SMESH/images/cartesian3D_sphere.png rename to doc/gui/images/cartesian3D_sphere.png diff --git a/doc/salome/gui/SMESH/images/cartesian_implement_edge.png b/doc/gui/images/cartesian_implement_edge.png similarity index 100% rename from doc/salome/gui/SMESH/images/cartesian_implement_edge.png rename to doc/gui/images/cartesian_implement_edge.png diff --git a/doc/salome/gui/SMESH/images/choose_geom_selection_way.png b/doc/gui/images/choose_geom_selection_way.png similarity index 100% rename from doc/salome/gui/SMESH/images/choose_geom_selection_way.png rename to doc/gui/images/choose_geom_selection_way.png diff --git a/doc/salome/gui/SMESH/images/circle_angles_after.png b/doc/gui/images/circle_angles_after.png similarity index 100% rename from doc/salome/gui/SMESH/images/circle_angles_after.png rename to doc/gui/images/circle_angles_after.png diff --git a/doc/salome/gui/SMESH/images/circle_simple_after.png b/doc/gui/images/circle_simple_after.png similarity index 100% rename from doc/salome/gui/SMESH/images/circle_simple_after.png rename to doc/gui/images/circle_simple_after.png diff --git a/doc/salome/gui/SMESH/images/circle_simple_before.png b/doc/gui/images/circle_simple_before.png similarity index 100% rename from doc/salome/gui/SMESH/images/circle_simple_before.png rename to doc/gui/images/circle_simple_before.png diff --git a/doc/salome/gui/SMESH/images/colors_size.png b/doc/gui/images/colors_size.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/colors_size.png rename to doc/gui/images/colors_size.png diff --git a/doc/salome/gui/SMESH/images/connectivity_edge.png b/doc/gui/images/connectivity_edge.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_edge.png rename to doc/gui/images/connectivity_edge.png diff --git a/doc/salome/gui/SMESH/images/connectivity_hex_prism.png b/doc/gui/images/connectivity_hex_prism.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_hex_prism.png rename to doc/gui/images/connectivity_hex_prism.png diff --git a/doc/salome/gui/SMESH/images/connectivity_hexa.png b/doc/gui/images/connectivity_hexa.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_hexa.png rename to doc/gui/images/connectivity_hexa.png diff --git a/doc/salome/gui/SMESH/images/connectivity_penta.png b/doc/gui/images/connectivity_penta.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_penta.png rename to doc/gui/images/connectivity_penta.png diff --git a/doc/salome/gui/SMESH/images/connectivity_polygon.png b/doc/gui/images/connectivity_polygon.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_polygon.png rename to doc/gui/images/connectivity_polygon.png diff --git a/doc/salome/gui/SMESH/images/connectivity_polyhedron.png b/doc/gui/images/connectivity_polyhedron.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_polyhedron.png rename to doc/gui/images/connectivity_polyhedron.png diff --git a/doc/salome/gui/SMESH/images/connectivity_pyramid.png b/doc/gui/images/connectivity_pyramid.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_pyramid.png rename to doc/gui/images/connectivity_pyramid.png diff --git a/doc/salome/gui/SMESH/images/connectivity_quad.png b/doc/gui/images/connectivity_quad.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_quad.png rename to doc/gui/images/connectivity_quad.png diff --git a/doc/salome/gui/SMESH/images/connectivity_tetra.png b/doc/gui/images/connectivity_tetra.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_tetra.png rename to doc/gui/images/connectivity_tetra.png diff --git a/doc/salome/gui/SMESH/images/connectivity_tria.png b/doc/gui/images/connectivity_tria.png similarity index 100% rename from doc/salome/gui/SMESH/images/connectivity_tria.png rename to doc/gui/images/connectivity_tria.png diff --git a/doc/salome/gui/SMESH/images/controls_popup.png b/doc/gui/images/controls_popup.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/controls_popup.png rename to doc/gui/images/controls_popup.png diff --git a/doc/salome/gui/SMESH/images/convert.png b/doc/gui/images/convert.png similarity index 100% rename from doc/salome/gui/SMESH/images/convert.png rename to doc/gui/images/convert.png diff --git a/doc/salome/gui/SMESH/images/copy_mesh_dlg.png b/doc/gui/images/copy_mesh_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/copy_mesh_dlg.png rename to doc/gui/images/copy_mesh_dlg.png diff --git a/doc/salome/gui/SMESH/images/copy_mesh_icon.png b/doc/gui/images/copy_mesh_icon.png similarity index 100% rename from doc/salome/gui/SMESH/images/copy_mesh_icon.png rename to doc/gui/images/copy_mesh_icon.png diff --git a/doc/salome/gui/SMESH/images/crack_emulation_double_nodes.png b/doc/gui/images/crack_emulation_double_nodes.png similarity index 100% rename from doc/salome/gui/SMESH/images/crack_emulation_double_nodes.png rename to doc/gui/images/crack_emulation_double_nodes.png diff --git a/doc/salome/gui/SMESH/images/crack_emulation_double_nodes_with_elems.png b/doc/gui/images/crack_emulation_double_nodes_with_elems.png similarity index 100% rename from doc/salome/gui/SMESH/images/crack_emulation_double_nodes_with_elems.png rename to doc/gui/images/crack_emulation_double_nodes_with_elems.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_1.png b/doc/gui/images/create_boundary_1.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_1.png rename to doc/gui/images/create_boundary_1.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_1.png b/doc/gui/images/create_boundary_an_1.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_1.png rename to doc/gui/images/create_boundary_an_1.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_2.png b/doc/gui/images/create_boundary_an_2.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_2.png rename to doc/gui/images/create_boundary_an_2.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_3.png b/doc/gui/images/create_boundary_an_3.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_3.png rename to doc/gui/images/create_boundary_an_3.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_4.png b/doc/gui/images/create_boundary_an_4.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_4.png rename to doc/gui/images/create_boundary_an_4.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_co_1.png b/doc/gui/images/create_boundary_an_co_1.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_co_1.png rename to doc/gui/images/create_boundary_an_co_1.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_co_2.png b/doc/gui/images/create_boundary_an_co_2.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_co_2.png rename to doc/gui/images/create_boundary_an_co_2.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_cy.png b/doc/gui/images/create_boundary_an_cy.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_cy.png rename to doc/gui/images/create_boundary_an_cy.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_sp.png b/doc/gui/images/create_boundary_an_sp.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_sp.png rename to doc/gui/images/create_boundary_an_sp.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_an_to.png b/doc/gui/images/create_boundary_an_to.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_an_to.png rename to doc/gui/images/create_boundary_an_to.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_cao_1.png b/doc/gui/images/create_boundary_cao_1.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_cao_1.png rename to doc/gui/images/create_boundary_cao_1.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_cao_2.png b/doc/gui/images/create_boundary_cao_2.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_cao_2.png rename to doc/gui/images/create_boundary_cao_2.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_di_1.png b/doc/gui/images/create_boundary_di_1.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_di_1.png rename to doc/gui/images/create_boundary_di_1.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_di_2.png b/doc/gui/images/create_boundary_di_2.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_di_2.png rename to doc/gui/images/create_boundary_di_2.png diff --git a/doc/salome/gui/SMESH/images/create_boundary_di_3.png b/doc/gui/images/create_boundary_di_3.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_boundary_di_3.png rename to doc/gui/images/create_boundary_di_3.png diff --git a/doc/salome/gui/SMESH/images/create_group.png b/doc/gui/images/create_group.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_group.png rename to doc/gui/images/create_group.png diff --git a/doc/salome/gui/SMESH/images/create_groups_from_geometry.png b/doc/gui/images/create_groups_from_geometry.png similarity index 100% rename from doc/salome/gui/SMESH/images/create_groups_from_geometry.png rename to doc/gui/images/create_groups_from_geometry.png diff --git a/doc/salome/gui/SMESH/images/creategroup.png b/doc/gui/images/creategroup.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/creategroup.png rename to doc/gui/images/creategroup.png diff --git a/doc/salome/gui/SMESH/images/creategroup_on_filter.png b/doc/gui/images/creategroup_on_filter.png similarity index 100% rename from doc/salome/gui/SMESH/images/creategroup_on_filter.png rename to doc/gui/images/creategroup_on_filter.png diff --git a/doc/salome/gui/SMESH/images/createmesh-inv.png b/doc/gui/images/createmesh-inv.png similarity index 100% rename from doc/salome/gui/SMESH/images/createmesh-inv.png rename to doc/gui/images/createmesh-inv.png diff --git a/doc/salome/gui/SMESH/images/createmesh-inv2.png b/doc/gui/images/createmesh-inv2.png similarity index 100% rename from doc/salome/gui/SMESH/images/createmesh-inv2.png rename to doc/gui/images/createmesh-inv2.png diff --git a/doc/salome/gui/SMESH/images/createmesh-inv3.png b/doc/gui/images/createmesh-inv3.png similarity index 100% rename from doc/salome/gui/SMESH/images/createmesh-inv3.png rename to doc/gui/images/createmesh-inv3.png diff --git a/doc/salome/gui/SMESH/images/ctrlinfo.png b/doc/gui/images/ctrlinfo.png similarity index 100% rename from doc/salome/gui/SMESH/images/ctrlinfo.png rename to doc/gui/images/ctrlinfo.png diff --git a/doc/salome/gui/SMESH/images/curvi_angles_after.png b/doc/gui/images/curvi_angles_after.png similarity index 100% rename from doc/salome/gui/SMESH/images/curvi_angles_after.png rename to doc/gui/images/curvi_angles_after.png diff --git a/doc/salome/gui/SMESH/images/curvi_simple_after.png b/doc/gui/images/curvi_simple_after.png similarity index 100% rename from doc/salome/gui/SMESH/images/curvi_simple_after.png rename to doc/gui/images/curvi_simple_after.png diff --git a/doc/salome/gui/SMESH/images/curvi_simple_before.png b/doc/gui/images/curvi_simple_before.png similarity index 100% rename from doc/salome/gui/SMESH/images/curvi_simple_before.png rename to doc/gui/images/curvi_simple_before.png diff --git a/doc/salome/gui/SMESH/images/custom_point_marker.png b/doc/gui/images/custom_point_marker.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/custom_point_marker.png rename to doc/gui/images/custom_point_marker.png diff --git a/doc/salome/gui/SMESH/images/cut_groups1.png b/doc/gui/images/cut_groups1.png similarity index 100% rename from doc/salome/gui/SMESH/images/cut_groups1.png rename to doc/gui/images/cut_groups1.png diff --git a/doc/salome/gui/SMESH/images/cutgroups.png b/doc/gui/images/cutgroups.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/cutgroups.png rename to doc/gui/images/cutgroups.png diff --git a/doc/salome/gui/SMESH/images/dataset_clipping.png b/doc/gui/images/dataset_clipping.png similarity index 100% rename from doc/salome/gui/SMESH/images/dataset_clipping.png rename to doc/gui/images/dataset_clipping.png diff --git a/doc/salome/gui/SMESH/images/deflection_2d.png b/doc/gui/images/deflection_2d.png similarity index 100% rename from doc/salome/gui/SMESH/images/deflection_2d.png rename to doc/gui/images/deflection_2d.png diff --git a/doc/salome/gui/SMESH/images/deletegroups.png b/doc/gui/images/deletegroups.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/deletegroups.png rename to doc/gui/images/deletegroups.png diff --git a/doc/salome/gui/SMESH/images/diagonalinversion.png b/doc/gui/images/diagonalinversion.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/diagonalinversion.png rename to doc/gui/images/diagonalinversion.png diff --git a/doc/salome/gui/SMESH/images/dialog.png b/doc/gui/images/dialog.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/dialog.png rename to doc/gui/images/dialog.png diff --git a/doc/salome/gui/SMESH/images/dimgroup_0d.png b/doc/gui/images/dimgroup_0d.png similarity index 100% rename from doc/salome/gui/SMESH/images/dimgroup_0d.png rename to doc/gui/images/dimgroup_0d.png diff --git a/doc/salome/gui/SMESH/images/dimgroup_1d.png b/doc/gui/images/dimgroup_1d.png similarity index 100% rename from doc/salome/gui/SMESH/images/dimgroup_1d.png rename to doc/gui/images/dimgroup_1d.png diff --git a/doc/salome/gui/SMESH/images/dimgroup_2d.png b/doc/gui/images/dimgroup_2d.png similarity index 100% rename from doc/salome/gui/SMESH/images/dimgroup_2d.png rename to doc/gui/images/dimgroup_2d.png diff --git a/doc/salome/gui/SMESH/images/dimgroup_dlg.png b/doc/gui/images/dimgroup_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/dimgroup_dlg.png rename to doc/gui/images/dimgroup_dlg.png diff --git a/doc/salome/gui/SMESH/images/dimgroup_src.png b/doc/gui/images/dimgroup_src.png similarity index 100% rename from doc/salome/gui/SMESH/images/dimgroup_src.png rename to doc/gui/images/dimgroup_src.png diff --git a/doc/salome/gui/SMESH/images/dimgroup_tui1.png b/doc/gui/images/dimgroup_tui1.png similarity index 100% rename from doc/salome/gui/SMESH/images/dimgroup_tui1.png rename to doc/gui/images/dimgroup_tui1.png diff --git a/doc/salome/gui/SMESH/images/display_entity_choose_item.png b/doc/gui/images/display_entity_choose_item.png similarity index 100% rename from doc/salome/gui/SMESH/images/display_entity_choose_item.png rename to doc/gui/images/display_entity_choose_item.png diff --git a/doc/salome/gui/SMESH/images/display_entity_dlg.png b/doc/gui/images/display_entity_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/display_entity_dlg.png rename to doc/gui/images/display_entity_dlg.png diff --git a/doc/salome/gui/SMESH/images/distribution_of_layers.png b/doc/gui/images/distribution_of_layers.png similarity index 100% rename from doc/salome/gui/SMESH/images/distribution_of_layers.png rename to doc/gui/images/distribution_of_layers.png diff --git a/doc/salome/gui/SMESH/images/distributionwithanalyticdensity.png b/doc/gui/images/distributionwithanalyticdensity.png similarity index 100% rename from doc/salome/gui/SMESH/images/distributionwithanalyticdensity.png rename to doc/gui/images/distributionwithanalyticdensity.png diff --git a/doc/salome/gui/SMESH/images/distributionwithtabledensity.png b/doc/gui/images/distributionwithtabledensity.png similarity index 100% rename from doc/salome/gui/SMESH/images/distributionwithtabledensity.png rename to doc/gui/images/distributionwithtabledensity.png diff --git a/doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png b/doc/gui/images/dlg_0D_on_all_nodes.png similarity index 100% rename from doc/salome/gui/SMESH/images/dlg_0D_on_all_nodes.png rename to doc/gui/images/dlg_0D_on_all_nodes.png diff --git a/doc/salome/gui/SMESH/images/double_faces.png b/doc/gui/images/double_faces.png similarity index 100% rename from doc/salome/gui/SMESH/images/double_faces.png rename to doc/gui/images/double_faces.png diff --git a/doc/salome/gui/SMESH/images/double_nodes.png b/doc/gui/images/double_nodes.png similarity index 100% rename from doc/salome/gui/SMESH/images/double_nodes.png rename to doc/gui/images/double_nodes.png diff --git a/doc/salome/gui/SMESH/images/duplicate01.png b/doc/gui/images/duplicate01.png similarity index 100% rename from doc/salome/gui/SMESH/images/duplicate01.png rename to doc/gui/images/duplicate01.png diff --git a/doc/salome/gui/SMESH/images/duplicate02.png b/doc/gui/images/duplicate02.png similarity index 100% rename from doc/salome/gui/SMESH/images/duplicate02.png rename to doc/gui/images/duplicate02.png diff --git a/doc/salome/gui/SMESH/images/duplicate03.png b/doc/gui/images/duplicate03.png similarity index 100% rename from doc/salome/gui/SMESH/images/duplicate03.png rename to doc/gui/images/duplicate03.png diff --git a/doc/salome/gui/SMESH/images/duplicate04.png b/doc/gui/images/duplicate04.png similarity index 100% rename from doc/salome/gui/SMESH/images/duplicate04.png rename to doc/gui/images/duplicate04.png diff --git a/doc/salome/gui/SMESH/images/duplicate_nodes.png b/doc/gui/images/duplicate_nodes.png similarity index 100% rename from doc/salome/gui/SMESH/images/duplicate_nodes.png rename to doc/gui/images/duplicate_nodes.png diff --git a/doc/salome/gui/SMESH/images/edge_wire_3d_after.png b/doc/gui/images/edge_wire_3d_after.png similarity index 100% rename from doc/salome/gui/SMESH/images/edge_wire_3d_after.png rename to doc/gui/images/edge_wire_3d_after.png diff --git a/doc/salome/gui/SMESH/images/edge_wire_3d_before.png b/doc/gui/images/edge_wire_3d_before.png similarity index 100% rename from doc/salome/gui/SMESH/images/edge_wire_3d_before.png rename to doc/gui/images/edge_wire_3d_before.png diff --git a/doc/salome/gui/SMESH/images/edge_wire_after.png b/doc/gui/images/edge_wire_after.png similarity index 100% rename from doc/salome/gui/SMESH/images/edge_wire_after.png rename to doc/gui/images/edge_wire_after.png diff --git a/doc/salome/gui/SMESH/images/edge_wire_before.png b/doc/gui/images/edge_wire_before.png similarity index 100% rename from doc/salome/gui/SMESH/images/edge_wire_before.png rename to doc/gui/images/edge_wire_before.png diff --git a/doc/salome/gui/SMESH/images/edit_mesh1.png b/doc/gui/images/edit_mesh1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/edit_mesh1.png rename to doc/gui/images/edit_mesh1.png diff --git a/doc/salome/gui/SMESH/images/edit_mesh_change_value_hyp.png b/doc/gui/images/edit_mesh_change_value_hyp.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/edit_mesh_change_value_hyp.png rename to doc/gui/images/edit_mesh_change_value_hyp.png diff --git a/doc/salome/gui/SMESH/images/edit_mesh_remove_hyp.png b/doc/gui/images/edit_mesh_remove_hyp.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/edit_mesh_remove_hyp.png rename to doc/gui/images/edit_mesh_remove_hyp.png diff --git a/doc/salome/gui/SMESH/images/editgroup.png b/doc/gui/images/editgroup.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/editgroup.png rename to doc/gui/images/editgroup.png diff --git a/doc/salome/gui/SMESH/images/editing_groups1.png b/doc/gui/images/editing_groups1.png similarity index 100% rename from doc/salome/gui/SMESH/images/editing_groups1.png rename to doc/gui/images/editing_groups1.png diff --git a/doc/salome/gui/SMESH/images/elem_info.png b/doc/gui/images/elem_info.png similarity index 100% rename from doc/salome/gui/SMESH/images/elem_info.png rename to doc/gui/images/elem_info.png diff --git a/doc/salome/gui/SMESH/images/eleminfo1.png b/doc/gui/images/eleminfo1.png similarity index 100% rename from doc/salome/gui/SMESH/images/eleminfo1.png rename to doc/gui/images/eleminfo1.png diff --git a/doc/salome/gui/SMESH/images/eleminfo2.png b/doc/gui/images/eleminfo2.png similarity index 100% rename from doc/salome/gui/SMESH/images/eleminfo2.png rename to doc/gui/images/eleminfo2.png diff --git a/doc/salome/gui/SMESH/images/extr_along_wire_after.png b/doc/gui/images/extr_along_wire_after.png similarity index 100% rename from doc/salome/gui/SMESH/images/extr_along_wire_after.png rename to doc/gui/images/extr_along_wire_after.png diff --git a/doc/salome/gui/SMESH/images/extr_along_wire_before.png b/doc/gui/images/extr_along_wire_before.png similarity index 100% rename from doc/salome/gui/SMESH/images/extr_along_wire_before.png rename to doc/gui/images/extr_along_wire_before.png diff --git a/doc/salome/gui/SMESH/images/extru_rib_segs.png b/doc/gui/images/extru_rib_segs.png similarity index 100% rename from doc/salome/gui/SMESH/images/extru_rib_segs.png rename to doc/gui/images/extru_rib_segs.png diff --git a/doc/salome/gui/SMESH/images/extrusion_along_path_dlg.png b/doc/gui/images/extrusion_along_path_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusion_along_path_dlg.png rename to doc/gui/images/extrusion_along_path_dlg.png diff --git a/doc/salome/gui/SMESH/images/extrusion_box.png b/doc/gui/images/extrusion_box.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusion_box.png rename to doc/gui/images/extrusion_box.png diff --git a/doc/salome/gui/SMESH/images/extrusion_groups.png b/doc/gui/images/extrusion_groups.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusion_groups.png rename to doc/gui/images/extrusion_groups.png diff --git a/doc/salome/gui/SMESH/images/extrusion_groups_res.png b/doc/gui/images/extrusion_groups_res.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusion_groups_res.png rename to doc/gui/images/extrusion_groups_res.png diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline1.png b/doc/gui/images/extrusionalongaline1.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusionalongaline1.png rename to doc/gui/images/extrusionalongaline1.png diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline2.png b/doc/gui/images/extrusionalongaline2.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusionalongaline2.png rename to doc/gui/images/extrusionalongaline2.png diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline3.png b/doc/gui/images/extrusionalongaline3.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusionalongaline3.png rename to doc/gui/images/extrusionalongaline3.png diff --git a/doc/salome/gui/SMESH/images/extrusionbynormal_alongavgnorm.png b/doc/gui/images/extrusionbynormal_alongavgnorm.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusionbynormal_alongavgnorm.png rename to doc/gui/images/extrusionbynormal_alongavgnorm.png diff --git a/doc/salome/gui/SMESH/images/extrusionbynormal_useonly.png b/doc/gui/images/extrusionbynormal_useonly.png similarity index 100% rename from doc/salome/gui/SMESH/images/extrusionbynormal_useonly.png rename to doc/gui/images/extrusionbynormal_useonly.png diff --git a/doc/salome/gui/SMESH/images/failed_computation.png b/doc/gui/images/failed_computation.png similarity index 100% rename from doc/salome/gui/SMESH/images/failed_computation.png rename to doc/gui/images/failed_computation.png diff --git a/doc/salome/gui/SMESH/images/find_geom_by_mesh_elem.png b/doc/gui/images/find_geom_by_mesh_elem.png similarity index 100% rename from doc/salome/gui/SMESH/images/find_geom_by_mesh_elem.png rename to doc/gui/images/find_geom_by_mesh_elem.png diff --git a/doc/salome/gui/SMESH/images/findelement1.png b/doc/gui/images/findelement1.png similarity index 100% rename from doc/salome/gui/SMESH/images/findelement1.png rename to doc/gui/images/findelement1.png diff --git a/doc/salome/gui/SMESH/images/findelement2.png b/doc/gui/images/findelement2.png similarity index 100% rename from doc/salome/gui/SMESH/images/findelement2.png rename to doc/gui/images/findelement2.png diff --git a/doc/salome/gui/SMESH/images/findelement3.png b/doc/gui/images/findelement3.png similarity index 100% rename from doc/salome/gui/SMESH/images/findelement3.png rename to doc/gui/images/findelement3.png diff --git a/doc/salome/gui/SMESH/images/formula1.png b/doc/gui/images/formula1.png similarity index 100% rename from doc/salome/gui/SMESH/images/formula1.png rename to doc/gui/images/formula1.png diff --git a/doc/salome/gui/SMESH/images/formula2.png b/doc/gui/images/formula2.png similarity index 100% rename from doc/salome/gui/SMESH/images/formula2.png rename to doc/gui/images/formula2.png diff --git a/doc/salome/gui/SMESH/images/formula4.png b/doc/gui/images/formula4.png similarity index 100% rename from doc/salome/gui/SMESH/images/formula4.png rename to doc/gui/images/formula4.png diff --git a/doc/salome/gui/SMESH/images/formula5.png b/doc/gui/images/formula5.png similarity index 100% rename from doc/salome/gui/SMESH/images/formula5.png rename to doc/gui/images/formula5.png diff --git a/doc/salome/gui/SMESH/images/free_borders1.png b/doc/gui/images/free_borders1.png similarity index 100% rename from doc/salome/gui/SMESH/images/free_borders1.png rename to doc/gui/images/free_borders1.png diff --git a/doc/salome/gui/SMESH/images/free_edges.png b/doc/gui/images/free_edges.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/free_edges.png rename to doc/gui/images/free_edges.png diff --git a/doc/salome/gui/SMESH/images/free_faces.png b/doc/gui/images/free_faces.png similarity index 100% rename from doc/salome/gui/SMESH/images/free_faces.png rename to doc/gui/images/free_faces.png diff --git a/doc/salome/gui/SMESH/images/free_nodes.png b/doc/gui/images/free_nodes.png similarity index 100% rename from doc/salome/gui/SMESH/images/free_nodes.png rename to doc/gui/images/free_nodes.png diff --git a/doc/salome/gui/SMESH/images/ghs3dprl_parameters_basic.png b/doc/gui/images/ghs3dprl_parameters_basic.png similarity index 100% rename from doc/salome/gui/SMESH/images/ghs3dprl_parameters_basic.png rename to doc/gui/images/ghs3dprl_parameters_basic.png diff --git a/doc/salome/gui/SMESH/images/groups_by_sharp_edges_dlg.png b/doc/gui/images/groups_by_sharp_edges_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/groups_by_sharp_edges_dlg.png rename to doc/gui/images/groups_by_sharp_edges_dlg.png diff --git a/doc/salome/gui/SMESH/images/groups_in_OB.png b/doc/gui/images/groups_in_OB.png similarity index 100% rename from doc/salome/gui/SMESH/images/groups_in_OB.png rename to doc/gui/images/groups_in_OB.png diff --git a/doc/salome/gui/SMESH/images/hexa_ijk_mesh.png b/doc/gui/images/hexa_ijk_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/hexa_ijk_mesh.png rename to doc/gui/images/hexa_ijk_mesh.png diff --git a/doc/salome/gui/SMESH/images/hyp_source_edges.png b/doc/gui/images/hyp_source_edges.png similarity index 100% rename from doc/salome/gui/SMESH/images/hyp_source_edges.png rename to doc/gui/images/hyp_source_edges.png diff --git a/doc/salome/gui/SMESH/images/hyp_source_faces.png b/doc/gui/images/hyp_source_faces.png similarity index 100% rename from doc/salome/gui/SMESH/images/hyp_source_faces.png rename to doc/gui/images/hyp_source_faces.png diff --git a/doc/salome/gui/SMESH/images/hypo_fixedpnt_dlg.png b/doc/gui/images/hypo_fixedpnt_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_fixedpnt_dlg.png rename to doc/gui/images/hypo_fixedpnt_dlg.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_1.png b/doc/gui/images/hypo_quad_params_1.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_1.png rename to doc/gui/images/hypo_quad_params_1.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_2.png b/doc/gui/images/hypo_quad_params_2.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_2.png rename to doc/gui/images/hypo_quad_params_2.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog.png b/doc/gui/images/hypo_quad_params_dialog.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_dialog.png rename to doc/gui/images/hypo_quad_params_dialog.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_corners.png b/doc/gui/images/hypo_quad_params_dialog_corners.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_dialog_corners.png rename to doc/gui/images/hypo_quad_params_dialog_corners.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_enf.png b/doc/gui/images/hypo_quad_params_dialog_enf.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_dialog_enf.png rename to doc/gui/images/hypo_quad_params_dialog_enf.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_dialog_vert.png b/doc/gui/images/hypo_quad_params_dialog_vert.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_dialog_vert.png rename to doc/gui/images/hypo_quad_params_dialog_vert.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo1.png b/doc/gui/images/hypo_quad_params_enfnodes_algo1.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo1.png rename to doc/gui/images/hypo_quad_params_enfnodes_algo1.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo2.png b/doc/gui/images/hypo_quad_params_enfnodes_algo2.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo2.png rename to doc/gui/images/hypo_quad_params_enfnodes_algo2.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo3.png b/doc/gui/images/hypo_quad_params_enfnodes_algo3.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_enfnodes_algo3.png rename to doc/gui/images/hypo_quad_params_enfnodes_algo3.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_res.png b/doc/gui/images/hypo_quad_params_res.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_res.png rename to doc/gui/images/hypo_quad_params_res.png diff --git a/doc/salome/gui/SMESH/images/hypo_quad_params_res_2.png b/doc/gui/images/hypo_quad_params_res_2.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_quad_params_res_2.png rename to doc/gui/images/hypo_quad_params_res_2.png diff --git a/doc/salome/gui/SMESH/images/hypo_radquad_dlg.png b/doc/gui/images/hypo_radquad_dlg.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_radquad_dlg.png rename to doc/gui/images/hypo_radquad_dlg.png diff --git a/doc/salome/gui/SMESH/images/hypo_sets.png b/doc/gui/images/hypo_sets.png similarity index 100% rename from doc/salome/gui/SMESH/images/hypo_sets.png rename to doc/gui/images/hypo_sets.png diff --git a/doc/salome/gui/SMESH/images/image10.jpg b/doc/gui/images/image10.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image10.jpg rename to doc/gui/images/image10.jpg diff --git a/doc/salome/gui/SMESH/images/image101.png b/doc/gui/images/image101.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image101.png rename to doc/gui/images/image101.png diff --git a/doc/salome/gui/SMESH/images/image105.gif b/doc/gui/images/image105.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image105.gif rename to doc/gui/images/image105.gif diff --git a/doc/salome/gui/SMESH/images/image106.gif b/doc/gui/images/image106.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image106.gif rename to doc/gui/images/image106.gif diff --git a/doc/salome/gui/SMESH/images/image120.png b/doc/gui/images/image120.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image120.png rename to doc/gui/images/image120.png diff --git a/doc/salome/gui/SMESH/images/image121.png b/doc/gui/images/image121.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image121.png rename to doc/gui/images/image121.png diff --git a/doc/salome/gui/SMESH/images/image122.png b/doc/gui/images/image122.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image122.png rename to doc/gui/images/image122.png diff --git a/doc/salome/gui/SMESH/images/image123.gif b/doc/gui/images/image123.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image123.gif rename to doc/gui/images/image123.gif diff --git a/doc/salome/gui/SMESH/images/image124.gif b/doc/gui/images/image124.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image124.gif rename to doc/gui/images/image124.gif diff --git a/doc/salome/gui/SMESH/images/image125.gif b/doc/gui/images/image125.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image125.gif rename to doc/gui/images/image125.gif diff --git a/doc/salome/gui/SMESH/images/image126.gif b/doc/gui/images/image126.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image126.gif rename to doc/gui/images/image126.gif diff --git a/doc/salome/gui/SMESH/images/image127.gif b/doc/gui/images/image127.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image127.gif rename to doc/gui/images/image127.gif diff --git a/doc/salome/gui/SMESH/images/image130.gif b/doc/gui/images/image130.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image130.gif rename to doc/gui/images/image130.gif diff --git a/doc/salome/gui/SMESH/images/image131.gif b/doc/gui/images/image131.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image131.gif rename to doc/gui/images/image131.gif diff --git a/doc/salome/gui/SMESH/images/image132.gif b/doc/gui/images/image132.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image132.gif rename to doc/gui/images/image132.gif diff --git a/doc/salome/gui/SMESH/images/image133.gif b/doc/gui/images/image133.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image133.gif rename to doc/gui/images/image133.gif diff --git a/doc/salome/gui/SMESH/images/image134.gif b/doc/gui/images/image134.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image134.gif rename to doc/gui/images/image134.gif diff --git a/doc/salome/gui/SMESH/images/image135.gif b/doc/gui/images/image135.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image135.gif rename to doc/gui/images/image135.gif diff --git a/doc/salome/gui/SMESH/images/image136.gif b/doc/gui/images/image136.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image136.gif rename to doc/gui/images/image136.gif diff --git a/doc/salome/gui/SMESH/images/image137.gif b/doc/gui/images/image137.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image137.gif rename to doc/gui/images/image137.gif diff --git a/doc/salome/gui/SMESH/images/image138.gif b/doc/gui/images/image138.gif similarity index 100% rename from doc/salome/gui/SMESH/images/image138.gif rename to doc/gui/images/image138.gif diff --git a/doc/salome/gui/SMESH/images/image143.gif b/doc/gui/images/image143.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image143.gif rename to doc/gui/images/image143.gif diff --git a/doc/salome/gui/SMESH/images/image144.png b/doc/gui/images/image144.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image144.png rename to doc/gui/images/image144.png diff --git a/doc/salome/gui/SMESH/images/image145.png b/doc/gui/images/image145.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image145.png rename to doc/gui/images/image145.png diff --git a/doc/salome/gui/SMESH/images/image146.png b/doc/gui/images/image146.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image146.png rename to doc/gui/images/image146.png diff --git a/doc/salome/gui/SMESH/images/image147.gif b/doc/gui/images/image147.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image147.gif rename to doc/gui/images/image147.gif diff --git a/doc/salome/gui/SMESH/images/image148.gif b/doc/gui/images/image148.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image148.gif rename to doc/gui/images/image148.gif diff --git a/doc/salome/gui/SMESH/images/image15.jpg b/doc/gui/images/image15.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image15.jpg rename to doc/gui/images/image15.jpg diff --git a/doc/salome/gui/SMESH/images/image151.gif b/doc/gui/images/image151.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image151.gif rename to doc/gui/images/image151.gif diff --git a/doc/salome/gui/SMESH/images/image152.png b/doc/gui/images/image152.png similarity index 100% rename from doc/salome/gui/SMESH/images/image152.png rename to doc/gui/images/image152.png diff --git a/doc/salome/gui/SMESH/images/image154.png b/doc/gui/images/image154.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image154.png rename to doc/gui/images/image154.png diff --git a/doc/salome/gui/SMESH/images/image155.gif b/doc/gui/images/image155.gif similarity index 100% rename from doc/salome/gui/SMESH/images/image155.gif rename to doc/gui/images/image155.gif diff --git a/doc/salome/gui/SMESH/images/image156.gif b/doc/gui/images/image156.gif similarity index 100% rename from doc/salome/gui/SMESH/images/image156.gif rename to doc/gui/images/image156.gif diff --git a/doc/salome/gui/SMESH/images/image157.gif b/doc/gui/images/image157.gif similarity index 100% rename from doc/salome/gui/SMESH/images/image157.gif rename to doc/gui/images/image157.gif diff --git a/doc/salome/gui/SMESH/images/image160.gif b/doc/gui/images/image160.gif similarity index 100% rename from doc/salome/gui/SMESH/images/image160.gif rename to doc/gui/images/image160.gif diff --git a/doc/salome/gui/SMESH/images/image161.png b/doc/gui/images/image161.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image161.png rename to doc/gui/images/image161.png diff --git a/doc/salome/gui/SMESH/images/image22.jpg b/doc/gui/images/image22.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image22.jpg rename to doc/gui/images/image22.jpg diff --git a/doc/salome/gui/SMESH/images/image23.jpg b/doc/gui/images/image23.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image23.jpg rename to doc/gui/images/image23.jpg diff --git a/doc/salome/gui/SMESH/images/image24.gif b/doc/gui/images/image24.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image24.gif rename to doc/gui/images/image24.gif diff --git a/doc/salome/gui/SMESH/images/image25.jpg b/doc/gui/images/image25.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image25.jpg rename to doc/gui/images/image25.jpg diff --git a/doc/salome/gui/SMESH/images/image25.png b/doc/gui/images/image25.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image25.png rename to doc/gui/images/image25.png diff --git a/doc/salome/gui/SMESH/images/image27.jpg b/doc/gui/images/image27.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image27.jpg rename to doc/gui/images/image27.jpg diff --git a/doc/salome/gui/SMESH/images/image28.png b/doc/gui/images/image28.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image28.png rename to doc/gui/images/image28.png diff --git a/doc/salome/gui/SMESH/images/image30.jpg b/doc/gui/images/image30.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image30.jpg rename to doc/gui/images/image30.jpg diff --git a/doc/salome/gui/SMESH/images/image31.jpg b/doc/gui/images/image31.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image31.jpg rename to doc/gui/images/image31.jpg diff --git a/doc/salome/gui/SMESH/images/image32.jpg b/doc/gui/images/image32.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image32.jpg rename to doc/gui/images/image32.jpg diff --git a/doc/salome/gui/SMESH/images/image32.png b/doc/gui/images/image32.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image32.png rename to doc/gui/images/image32.png diff --git a/doc/salome/gui/SMESH/images/image33.gif b/doc/gui/images/image33.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image33.gif rename to doc/gui/images/image33.gif diff --git a/doc/salome/gui/SMESH/images/image34.png b/doc/gui/images/image34.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image34.png rename to doc/gui/images/image34.png diff --git a/doc/salome/gui/SMESH/images/image35.png b/doc/gui/images/image35.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image35.png rename to doc/gui/images/image35.png diff --git a/doc/salome/gui/SMESH/images/image36.jpg b/doc/gui/images/image36.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image36.jpg rename to doc/gui/images/image36.jpg diff --git a/doc/salome/gui/SMESH/images/image36.png b/doc/gui/images/image36.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image36.png rename to doc/gui/images/image36.png diff --git a/doc/salome/gui/SMESH/images/image37.jpg b/doc/gui/images/image37.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image37.jpg rename to doc/gui/images/image37.jpg diff --git a/doc/salome/gui/SMESH/images/image37.png b/doc/gui/images/image37.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image37.png rename to doc/gui/images/image37.png diff --git a/doc/salome/gui/SMESH/images/image38.jpg b/doc/gui/images/image38.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image38.jpg rename to doc/gui/images/image38.jpg diff --git a/doc/salome/gui/SMESH/images/image38.png b/doc/gui/images/image38.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image38.png rename to doc/gui/images/image38.png diff --git a/doc/salome/gui/SMESH/images/image39.png b/doc/gui/images/image39.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image39.png rename to doc/gui/images/image39.png diff --git a/doc/salome/gui/SMESH/images/image40.png b/doc/gui/images/image40.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image40.png rename to doc/gui/images/image40.png diff --git a/doc/salome/gui/SMESH/images/image41.gif b/doc/gui/images/image41.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image41.gif rename to doc/gui/images/image41.gif diff --git a/doc/salome/gui/SMESH/images/image42.png b/doc/gui/images/image42.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image42.png rename to doc/gui/images/image42.png diff --git a/doc/salome/gui/SMESH/images/image43.png b/doc/gui/images/image43.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image43.png rename to doc/gui/images/image43.png diff --git a/doc/salome/gui/SMESH/images/image46.gif b/doc/gui/images/image46.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image46.gif rename to doc/gui/images/image46.gif diff --git a/doc/salome/gui/SMESH/images/image49.png b/doc/gui/images/image49.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image49.png rename to doc/gui/images/image49.png diff --git a/doc/salome/gui/SMESH/images/image5.jpg b/doc/gui/images/image5.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image5.jpg rename to doc/gui/images/image5.jpg diff --git a/doc/salome/gui/SMESH/images/image50.gif b/doc/gui/images/image50.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image50.gif rename to doc/gui/images/image50.gif diff --git a/doc/salome/gui/SMESH/images/image51.jpg b/doc/gui/images/image51.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image51.jpg rename to doc/gui/images/image51.jpg diff --git a/doc/salome/gui/SMESH/images/image52.jpg b/doc/gui/images/image52.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image52.jpg rename to doc/gui/images/image52.jpg diff --git a/doc/salome/gui/SMESH/images/image53.gif b/doc/gui/images/image53.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image53.gif rename to doc/gui/images/image53.gif diff --git a/doc/salome/gui/SMESH/images/image55.gif b/doc/gui/images/image55.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image55.gif rename to doc/gui/images/image55.gif diff --git a/doc/salome/gui/SMESH/images/image56.gif b/doc/gui/images/image56.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image56.gif rename to doc/gui/images/image56.gif diff --git a/doc/salome/gui/SMESH/images/image56.jpg b/doc/gui/images/image56.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image56.jpg rename to doc/gui/images/image56.jpg diff --git a/doc/salome/gui/SMESH/images/image58.png b/doc/gui/images/image58.png similarity index 100% rename from doc/salome/gui/SMESH/images/image58.png rename to doc/gui/images/image58.png diff --git a/doc/salome/gui/SMESH/images/image59.png b/doc/gui/images/image59.png similarity index 100% rename from doc/salome/gui/SMESH/images/image59.png rename to doc/gui/images/image59.png diff --git a/doc/salome/gui/SMESH/images/image63.png b/doc/gui/images/image63.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image63.png rename to doc/gui/images/image63.png diff --git a/doc/salome/gui/SMESH/images/image64.png b/doc/gui/images/image64.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image64.png rename to doc/gui/images/image64.png diff --git a/doc/salome/gui/SMESH/images/image67.png b/doc/gui/images/image67.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image67.png rename to doc/gui/images/image67.png diff --git a/doc/salome/gui/SMESH/images/image7.jpg b/doc/gui/images/image7.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image7.jpg rename to doc/gui/images/image7.jpg diff --git a/doc/salome/gui/SMESH/images/image70.jpg b/doc/gui/images/image70.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image70.jpg rename to doc/gui/images/image70.jpg diff --git a/doc/salome/gui/SMESH/images/image70.png b/doc/gui/images/image70.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image70.png rename to doc/gui/images/image70.png diff --git a/doc/salome/gui/SMESH/images/image71.jpg b/doc/gui/images/image71.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image71.jpg rename to doc/gui/images/image71.jpg diff --git a/doc/salome/gui/SMESH/images/image71.png b/doc/gui/images/image71.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image71.png rename to doc/gui/images/image71.png diff --git a/doc/salome/gui/SMESH/images/image74.gif b/doc/gui/images/image74.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image74.gif rename to doc/gui/images/image74.gif diff --git a/doc/salome/gui/SMESH/images/image75.jpg b/doc/gui/images/image75.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image75.jpg rename to doc/gui/images/image75.jpg diff --git a/doc/salome/gui/SMESH/images/image76.jpg b/doc/gui/images/image76.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image76.jpg rename to doc/gui/images/image76.jpg diff --git a/doc/salome/gui/SMESH/images/image77.jpg b/doc/gui/images/image77.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image77.jpg rename to doc/gui/images/image77.jpg diff --git a/doc/salome/gui/SMESH/images/image78.jpg b/doc/gui/images/image78.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image78.jpg rename to doc/gui/images/image78.jpg diff --git a/doc/salome/gui/SMESH/images/image79.jpg b/doc/gui/images/image79.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image79.jpg rename to doc/gui/images/image79.jpg diff --git a/doc/salome/gui/SMESH/images/image79.png b/doc/gui/images/image79.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image79.png rename to doc/gui/images/image79.png diff --git a/doc/salome/gui/SMESH/images/image80.png b/doc/gui/images/image80.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image80.png rename to doc/gui/images/image80.png diff --git a/doc/salome/gui/SMESH/images/image82.png b/doc/gui/images/image82.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image82.png rename to doc/gui/images/image82.png diff --git a/doc/salome/gui/SMESH/images/image83.gif b/doc/gui/images/image83.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image83.gif rename to doc/gui/images/image83.gif diff --git a/doc/salome/gui/SMESH/images/image84.png b/doc/gui/images/image84.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image84.png rename to doc/gui/images/image84.png diff --git a/doc/salome/gui/SMESH/images/image86.jpg b/doc/gui/images/image86.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image86.jpg rename to doc/gui/images/image86.jpg diff --git a/doc/salome/gui/SMESH/images/image88.gif b/doc/gui/images/image88.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image88.gif rename to doc/gui/images/image88.gif diff --git a/doc/salome/gui/SMESH/images/image88.jpg b/doc/gui/images/image88.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image88.jpg rename to doc/gui/images/image88.jpg diff --git a/doc/salome/gui/SMESH/images/image90.jpg b/doc/gui/images/image90.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image90.jpg rename to doc/gui/images/image90.jpg diff --git a/doc/salome/gui/SMESH/images/image91.png b/doc/gui/images/image91.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image91.png rename to doc/gui/images/image91.png diff --git a/doc/salome/gui/SMESH/images/image92.jpg b/doc/gui/images/image92.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image92.jpg rename to doc/gui/images/image92.jpg diff --git a/doc/salome/gui/SMESH/images/image92.png b/doc/gui/images/image92.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image92.png rename to doc/gui/images/image92.png diff --git a/doc/salome/gui/SMESH/images/image93.jpg b/doc/gui/images/image93.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image93.jpg rename to doc/gui/images/image93.jpg diff --git a/doc/salome/gui/SMESH/images/image94.gif b/doc/gui/images/image94.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image94.gif rename to doc/gui/images/image94.gif diff --git a/doc/salome/gui/SMESH/images/image94.jpg b/doc/gui/images/image94.jpg similarity index 100% rename from doc/salome/gui/SMESH/images/image94.jpg rename to doc/gui/images/image94.jpg diff --git a/doc/salome/gui/SMESH/images/image95.gif b/doc/gui/images/image95.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image95.gif rename to doc/gui/images/image95.gif diff --git a/doc/salome/gui/SMESH/images/image95.jpg b/doc/gui/images/image95.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image95.jpg rename to doc/gui/images/image95.jpg diff --git a/doc/salome/gui/SMESH/images/image96.gif b/doc/gui/images/image96.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image96.gif rename to doc/gui/images/image96.gif diff --git a/doc/salome/gui/SMESH/images/image96.jpg b/doc/gui/images/image96.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image96.jpg rename to doc/gui/images/image96.jpg diff --git a/doc/salome/gui/SMESH/images/image97.gif b/doc/gui/images/image97.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image97.gif rename to doc/gui/images/image97.gif diff --git a/doc/salome/gui/SMESH/images/image97.jpg b/doc/gui/images/image97.jpg old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image97.jpg rename to doc/gui/images/image97.jpg diff --git a/doc/salome/gui/SMESH/images/image98.png b/doc/gui/images/image98.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image98.png rename to doc/gui/images/image98.png diff --git a/doc/salome/gui/SMESH/images/image99.gif b/doc/gui/images/image99.gif old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/image99.gif rename to doc/gui/images/image99.gif diff --git a/doc/salome/gui/SMESH/images/image_octa12.png b/doc/gui/images/image_octa12.png similarity index 100% rename from doc/salome/gui/SMESH/images/image_octa12.png rename to doc/gui/images/image_octa12.png diff --git a/doc/salome/gui/SMESH/images/intersect_groups1.png b/doc/gui/images/intersect_groups1.png similarity index 100% rename from doc/salome/gui/SMESH/images/intersect_groups1.png rename to doc/gui/images/intersect_groups1.png diff --git a/doc/salome/gui/SMESH/images/intersectgroups.png b/doc/gui/images/intersectgroups.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/intersectgroups.png rename to doc/gui/images/intersectgroups.png diff --git a/doc/salome/gui/SMESH/images/length-crit.png b/doc/gui/images/length-crit.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/length-crit.png rename to doc/gui/images/length-crit.png diff --git a/doc/salome/gui/SMESH/images/length2d.png b/doc/gui/images/length2d.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/length2d.png rename to doc/gui/images/length2d.png diff --git a/doc/salome/gui/SMESH/images/lengthnearvertex.png b/doc/gui/images/lengthnearvertex.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/lengthnearvertex.png rename to doc/gui/images/lengthnearvertex.png diff --git a/doc/salome/gui/SMESH/images/max_el_area.png b/doc/gui/images/max_el_area.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/max_el_area.png rename to doc/gui/images/max_el_area.png diff --git a/doc/salome/gui/SMESH/images/max_element_length_2d.png b/doc/gui/images/max_element_length_2d.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/max_element_length_2d.png rename to doc/gui/images/max_element_length_2d.png diff --git a/doc/salome/gui/SMESH/images/max_element_length_3d.png b/doc/gui/images/max_element_length_3d.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/max_element_length_3d.png rename to doc/gui/images/max_element_length_3d.png diff --git a/doc/salome/gui/SMESH/images/mergeelems.png b/doc/gui/images/mergeelems.png similarity index 100% rename from doc/salome/gui/SMESH/images/mergeelems.png rename to doc/gui/images/mergeelems.png diff --git a/doc/salome/gui/SMESH/images/mergeelems_auto.png b/doc/gui/images/mergeelems_auto.png similarity index 100% rename from doc/salome/gui/SMESH/images/mergeelems_auto.png rename to doc/gui/images/mergeelems_auto.png diff --git a/doc/salome/gui/SMESH/images/mergeelems_ico.png b/doc/gui/images/mergeelems_ico.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/mergeelems_ico.png rename to doc/gui/images/mergeelems_ico.png diff --git a/doc/salome/gui/SMESH/images/mergenodes.png b/doc/gui/images/mergenodes.png similarity index 100% rename from doc/salome/gui/SMESH/images/mergenodes.png rename to doc/gui/images/mergenodes.png diff --git a/doc/salome/gui/SMESH/images/mergenodes_auto.png b/doc/gui/images/mergenodes_auto.png similarity index 100% rename from doc/salome/gui/SMESH/images/mergenodes_auto.png rename to doc/gui/images/mergenodes_auto.png diff --git a/doc/salome/gui/SMESH/images/mergenodes_ico.png b/doc/gui/images/mergenodes_ico.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/mergenodes_ico.png rename to doc/gui/images/mergenodes_ico.png diff --git a/doc/salome/gui/SMESH/images/merging_nodes1.png b/doc/gui/images/merging_nodes1.png similarity index 100% rename from doc/salome/gui/SMESH/images/merging_nodes1.png rename to doc/gui/images/merging_nodes1.png diff --git a/doc/salome/gui/SMESH/images/merging_nodes2.png b/doc/gui/images/merging_nodes2.png similarity index 100% rename from doc/salome/gui/SMESH/images/merging_nodes2.png rename to doc/gui/images/merging_nodes2.png diff --git a/doc/salome/gui/SMESH/images/mesh_clear.png b/doc/gui/images/mesh_clear.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_clear.png rename to doc/gui/images/mesh_clear.png diff --git a/doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png b/doc/gui/images/mesh_cylinder_hexa.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png rename to doc/gui/images/mesh_cylinder_hexa.png diff --git a/doc/gui/images/mesh_deflection.png b/doc/gui/images/mesh_deflection.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d8542dc4c09468cfcfe064ad0f374d7f892684 GIT binary patch literal 827 zcmV-B1H}A^P)MFDX7fByTB$lB$P+1g_2q6?v_CXd=kwlx! zvKG<8MMZ_0%pxjiQDA{lSqMQNwh6K?6~}qwym_a^*z?Wwv_G81<=peX|9j8>TvV0J zXliPrq@)B9Ss)@25g80ONAzOktEyuXRP#5o$V4(5!!Q^a7+4MT0#AV@Ufy&dnVpIN zWM`6LI<&T0%Yi$<*22QVC;k2X=~bqawm+C~GHF?s1>6N1&Ub!(;=0Q9BkKaycxrv5 zSpg><0Q!oHi|?bL3cJod^a>2a2qq1@atif8^_J#NlCI*a;_6f~FE0)B^xh;#P`NxBN88gr_4 zA+CO+y>VHf(oEaT1Aab#)31j%glOp*8Kulk- z^F(Bl@CN|V;UUI`zj5R6TH^6I<>loh5()6nriiQ(k=}7dPu%{3Iws?a?rwR6f0j4x zyY`P=)~ufFx~h7lA~H)veu+q4Q^#i-+h3(}j_DBwd9Qwt5!_|lwiCc(pf(mAWqkA( zTTkAi`ruV&Lb%rFN$=~KQduk_UqvK$Tl2lCqG=R+sfPQWbt;5ZHy6%~|~mBoPd zzyjczh^+LU=r57!{QraP>FMz=M?|Cw*a2Mr=X0F~e*hmoa~eQU{gD6w002ovPDHLk FV1mBVc~1ZU literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mesh_evaluation_succeed.png b/doc/gui/images/mesh_evaluation_succeed.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_evaluation_succeed.png rename to doc/gui/images/mesh_evaluation_succeed.png diff --git a/doc/salome/gui/SMESH/images/mesh_fixedpnt.png b/doc/gui/images/mesh_fixedpnt.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_fixedpnt.png rename to doc/gui/images/mesh_fixedpnt.png diff --git a/doc/salome/gui/SMESH/images/mesh_for_extr_along_path.png b/doc/gui/images/mesh_for_extr_along_path.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_for_extr_along_path.png rename to doc/gui/images/mesh_for_extr_along_path.png diff --git a/doc/salome/gui/SMESH/images/mesh_node_to_point.png b/doc/gui/images/mesh_node_to_point.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_node_to_point.png rename to doc/gui/images/mesh_node_to_point.png diff --git a/doc/salome/gui/SMESH/images/mesh_order_123.png b/doc/gui/images/mesh_order_123.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_order_123.png rename to doc/gui/images/mesh_order_123.png diff --git a/doc/salome/gui/SMESH/images/mesh_order_123_res.png b/doc/gui/images/mesh_order_123_res.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_order_123_res.png rename to doc/gui/images/mesh_order_123_res.png diff --git a/doc/salome/gui/SMESH/images/mesh_order_213.png b/doc/gui/images/mesh_order_213.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_order_213.png rename to doc/gui/images/mesh_order_213.png diff --git a/doc/salome/gui/SMESH/images/mesh_order_213_res.png b/doc/gui/images/mesh_order_213_res.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_order_213_res.png rename to doc/gui/images/mesh_order_213_res.png diff --git a/doc/salome/gui/SMESH/images/mesh_order_321.png b/doc/gui/images/mesh_order_321.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_order_321.png rename to doc/gui/images/mesh_order_321.png diff --git a/doc/salome/gui/SMESH/images/mesh_order_321_res.png b/doc/gui/images/mesh_order_321_res.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_order_321_res.png rename to doc/gui/images/mesh_order_321_res.png diff --git a/doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png b/doc/gui/images/mesh_order_no_concurrent.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_order_no_concurrent.png rename to doc/gui/images/mesh_order_no_concurrent.png diff --git a/doc/salome/gui/SMESH/images/mesh_order_preview.png b/doc/gui/images/mesh_order_preview.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_order_preview.png rename to doc/gui/images/mesh_order_preview.png diff --git a/doc/salome/gui/SMESH/images/mesh_precompute.png b/doc/gui/images/mesh_precompute.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_precompute.png rename to doc/gui/images/mesh_precompute.png diff --git a/doc/salome/gui/SMESH/images/mesh_radquad_01.png b/doc/gui/images/mesh_radquad_01.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_radquad_01.png rename to doc/gui/images/mesh_radquad_01.png diff --git a/doc/salome/gui/SMESH/images/mesh_radquad_02.png b/doc/gui/images/mesh_radquad_02.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_radquad_02.png rename to doc/gui/images/mesh_radquad_02.png diff --git a/doc/salome/gui/SMESH/images/mesh_split_diag_interactive.png b/doc/gui/images/mesh_split_diag_interactive.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_split_diag_interactive.png rename to doc/gui/images/mesh_split_diag_interactive.png diff --git a/doc/salome/gui/SMESH/images/mesh_split_face_interactive.png b/doc/gui/images/mesh_split_face_interactive.png similarity index 100% rename from doc/salome/gui/SMESH/images/mesh_split_face_interactive.png rename to doc/gui/images/mesh_split_face_interactive.png diff --git a/doc/salome/gui/SMESH/images/meshcomputationfail.png b/doc/gui/images/meshcomputationfail.png similarity index 100% rename from doc/salome/gui/SMESH/images/meshcomputationfail.png rename to doc/gui/images/meshcomputationfail.png diff --git a/doc/salome/gui/SMESH/images/meshcomputationsucceed.png b/doc/gui/images/meshcomputationsucceed.png similarity index 100% rename from doc/salome/gui/SMESH/images/meshcomputationsucceed.png rename to doc/gui/images/meshcomputationsucceed.png diff --git a/doc/salome/gui/SMESH/images/meshcut_plugin.png b/doc/gui/images/meshcut_plugin.png similarity index 100% rename from doc/salome/gui/SMESH/images/meshcut_plugin.png rename to doc/gui/images/meshcut_plugin.png diff --git a/doc/salome/gui/SMESH/images/meshexportgroupwarning.png b/doc/gui/images/meshexportgroupwarning.png similarity index 100% rename from doc/salome/gui/SMESH/images/meshexportgroupwarning.png rename to doc/gui/images/meshexportgroupwarning.png diff --git a/doc/salome/gui/SMESH/images/meshexportmesh.png b/doc/gui/images/meshexportmesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/meshexportmesh.png rename to doc/gui/images/meshexportmesh.png diff --git a/doc/salome/gui/SMESH/images/meshimportmesh.png b/doc/gui/images/meshimportmesh.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/meshimportmesh.png rename to doc/gui/images/meshimportmesh.png diff --git a/doc/salome/gui/SMESH/images/meshtopass1.png b/doc/gui/images/meshtopass1.png similarity index 100% rename from doc/salome/gui/SMESH/images/meshtopass1.png rename to doc/gui/images/meshtopass1.png diff --git a/doc/salome/gui/SMESH/images/meshtopass2.png b/doc/gui/images/meshtopass2.png similarity index 100% rename from doc/salome/gui/SMESH/images/meshtopass2.png rename to doc/gui/images/meshtopass2.png diff --git a/doc/salome/gui/SMESH/images/meshtopass3.png b/doc/gui/images/meshtopass3.png similarity index 100% rename from doc/salome/gui/SMESH/images/meshtopass3.png rename to doc/gui/images/meshtopass3.png diff --git a/doc/salome/gui/SMESH/images/meshtrianglemergeelem1.png b/doc/gui/images/meshtrianglemergeelem1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/meshtrianglemergeelem1.png rename to doc/gui/images/meshtrianglemergeelem1.png diff --git a/doc/salome/gui/SMESH/images/min_distance.png b/doc/gui/images/min_distance.png similarity index 100% rename from doc/salome/gui/SMESH/images/min_distance.png rename to doc/gui/images/min_distance.png diff --git a/doc/salome/gui/SMESH/images/min_distance_preview.png b/doc/gui/images/min_distance_preview.png similarity index 100% rename from doc/salome/gui/SMESH/images/min_distance_preview.png rename to doc/gui/images/min_distance_preview.png diff --git a/doc/salome/gui/SMESH/images/movenodes.png b/doc/gui/images/movenodes.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/movenodes.png rename to doc/gui/images/movenodes.png diff --git a/doc/salome/gui/SMESH/images/moving_nodes1.png b/doc/gui/images/moving_nodes1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/moving_nodes1.png rename to doc/gui/images/moving_nodes1.png diff --git a/doc/salome/gui/SMESH/images/moving_nodes2.png b/doc/gui/images/moving_nodes2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/moving_nodes2.png rename to doc/gui/images/moving_nodes2.png diff --git a/doc/salome/gui/SMESH/images/number_of_layers.png b/doc/gui/images/number_of_layers.png similarity index 100% rename from doc/salome/gui/SMESH/images/number_of_layers.png rename to doc/gui/images/number_of_layers.png diff --git a/doc/salome/gui/SMESH/images/opengl_clipping.png b/doc/gui/images/opengl_clipping.png similarity index 100% rename from doc/salome/gui/SMESH/images/opengl_clipping.png rename to doc/gui/images/opengl_clipping.png diff --git a/doc/salome/gui/SMESH/images/orientaation1.png b/doc/gui/images/orientaation1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/orientaation1.png rename to doc/gui/images/orientaation1.png diff --git a/doc/salome/gui/SMESH/images/over_constrained_faces.png b/doc/gui/images/over_constrained_faces.png similarity index 100% rename from doc/salome/gui/SMESH/images/over_constrained_faces.png rename to doc/gui/images/over_constrained_faces.png diff --git a/doc/salome/gui/SMESH/images/over_constrained_volumes.png b/doc/gui/images/over_constrained_volumes.png similarity index 100% rename from doc/salome/gui/SMESH/images/over_constrained_volumes.png rename to doc/gui/images/over_constrained_volumes.png diff --git a/doc/salome/gui/SMESH/images/pattern2d.png b/doc/gui/images/pattern2d.png similarity index 100% rename from doc/salome/gui/SMESH/images/pattern2d.png rename to doc/gui/images/pattern2d.png diff --git a/doc/salome/gui/SMESH/images/patternmapping1.png b/doc/gui/images/patternmapping1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/patternmapping1.png rename to doc/gui/images/patternmapping1.png diff --git a/doc/salome/gui/SMESH/images/patternmapping2.png b/doc/gui/images/patternmapping2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/patternmapping2.png rename to doc/gui/images/patternmapping2.png diff --git a/doc/salome/gui/SMESH/images/point_marker_widget1.png b/doc/gui/images/point_marker_widget1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/point_marker_widget1.png rename to doc/gui/images/point_marker_widget1.png diff --git a/doc/salome/gui/SMESH/images/point_marker_widget2.png b/doc/gui/images/point_marker_widget2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/point_marker_widget2.png rename to doc/gui/images/point_marker_widget2.png diff --git a/doc/salome/gui/SMESH/images/pref21.png b/doc/gui/images/pref21.png similarity index 100% rename from doc/salome/gui/SMESH/images/pref21.png rename to doc/gui/images/pref21.png diff --git a/doc/salome/gui/SMESH/images/pref22.png b/doc/gui/images/pref22.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/pref22.png rename to doc/gui/images/pref22.png diff --git a/doc/salome/gui/SMESH/images/pref23.png b/doc/gui/images/pref23.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/pref23.png rename to doc/gui/images/pref23.png diff --git a/doc/salome/gui/SMESH/images/pref24.png b/doc/gui/images/pref24.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/pref24.png rename to doc/gui/images/pref24.png diff --git a/doc/salome/gui/SMESH/images/preview_mesh_1D.png b/doc/gui/images/preview_mesh_1D.png similarity index 100% rename from doc/salome/gui/SMESH/images/preview_mesh_1D.png rename to doc/gui/images/preview_mesh_1D.png diff --git a/doc/salome/gui/SMESH/images/preview_mesh_2D.png b/doc/gui/images/preview_mesh_2D.png similarity index 100% rename from doc/salome/gui/SMESH/images/preview_mesh_2D.png rename to doc/gui/images/preview_mesh_2D.png diff --git a/doc/salome/gui/SMESH/images/preview_tmp_data.png b/doc/gui/images/preview_tmp_data.png similarity index 100% rename from doc/salome/gui/SMESH/images/preview_tmp_data.png rename to doc/gui/images/preview_tmp_data.png diff --git a/doc/salome/gui/SMESH/images/prism_mesh.png b/doc/gui/images/prism_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/prism_mesh.png rename to doc/gui/images/prism_mesh.png diff --git a/doc/salome/gui/SMESH/images/prism_needs_hyps.png b/doc/gui/images/prism_needs_hyps.png similarity index 100% rename from doc/salome/gui/SMESH/images/prism_needs_hyps.png rename to doc/gui/images/prism_needs_hyps.png diff --git a/doc/salome/gui/SMESH/images/prism_ok_ko.png b/doc/gui/images/prism_ok_ko.png similarity index 100% rename from doc/salome/gui/SMESH/images/prism_ok_ko.png rename to doc/gui/images/prism_ok_ko.png diff --git a/doc/salome/gui/SMESH/images/prism_stack.png b/doc/gui/images/prism_stack.png similarity index 100% rename from doc/salome/gui/SMESH/images/prism_stack.png rename to doc/gui/images/prism_stack.png diff --git a/doc/salome/gui/SMESH/images/prism_tui_sample.png b/doc/gui/images/prism_tui_sample.png similarity index 100% rename from doc/salome/gui/SMESH/images/prism_tui_sample.png rename to doc/gui/images/prism_tui_sample.png diff --git a/doc/salome/gui/SMESH/images/projection_1d.png b/doc/gui/images/projection_1d.png similarity index 100% rename from doc/salome/gui/SMESH/images/projection_1d.png rename to doc/gui/images/projection_1d.png diff --git a/doc/salome/gui/SMESH/images/projection_2d.png b/doc/gui/images/projection_2d.png similarity index 100% rename from doc/salome/gui/SMESH/images/projection_2d.png rename to doc/gui/images/projection_2d.png diff --git a/doc/salome/gui/SMESH/images/projection_3d.png b/doc/gui/images/projection_3d.png similarity index 100% rename from doc/salome/gui/SMESH/images/projection_3d.png rename to doc/gui/images/projection_3d.png diff --git a/doc/salome/gui/SMESH/images/propagation_chain.png b/doc/gui/images/propagation_chain.png similarity index 100% rename from doc/salome/gui/SMESH/images/propagation_chain.png rename to doc/gui/images/propagation_chain.png diff --git a/doc/salome/gui/SMESH/images/quad_from_ma_medial_axis.png b/doc/gui/images/quad_from_ma_medial_axis.png similarity index 100% rename from doc/salome/gui/SMESH/images/quad_from_ma_medial_axis.png rename to doc/gui/images/quad_from_ma_medial_axis.png diff --git a/doc/salome/gui/SMESH/images/quad_from_ma_mesh.png b/doc/gui/images/quad_from_ma_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/quad_from_ma_mesh.png rename to doc/gui/images/quad_from_ma_mesh.png diff --git a/doc/salome/gui/SMESH/images/quad_from_ma_ring_mesh.png b/doc/gui/images/quad_from_ma_ring_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/quad_from_ma_ring_mesh.png rename to doc/gui/images/quad_from_ma_ring_mesh.png diff --git a/doc/salome/gui/SMESH/images/quad_mesh_invalid.png b/doc/gui/images/quad_mesh_invalid.png similarity index 100% rename from doc/salome/gui/SMESH/images/quad_mesh_invalid.png rename to doc/gui/images/quad_mesh_invalid.png diff --git a/doc/salome/gui/SMESH/images/quad_meshes.png b/doc/gui/images/quad_meshes.png similarity index 100% rename from doc/salome/gui/SMESH/images/quad_meshes.png rename to doc/gui/images/quad_meshes.png diff --git a/doc/salome/gui/SMESH/images/radial_prism_mesh.png b/doc/gui/images/radial_prism_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/radial_prism_mesh.png rename to doc/gui/images/radial_prism_mesh.png diff --git a/doc/salome/gui/SMESH/images/reduce_three_to_one.png b/doc/gui/images/reduce_three_to_one.png similarity index 100% rename from doc/salome/gui/SMESH/images/reduce_three_to_one.png rename to doc/gui/images/reduce_three_to_one.png diff --git a/doc/salome/gui/SMESH/images/remove.gif b/doc/gui/images/remove.gif similarity index 100% rename from doc/salome/gui/SMESH/images/remove.gif rename to doc/gui/images/remove.gif diff --git a/doc/salome/gui/SMESH/images/remove.png b/doc/gui/images/remove.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/remove.png rename to doc/gui/images/remove.png diff --git a/doc/salome/gui/SMESH/images/remove_elements1.png b/doc/gui/images/remove_elements1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/remove_elements1.png rename to doc/gui/images/remove_elements1.png diff --git a/doc/salome/gui/SMESH/images/remove_elements2.png b/doc/gui/images/remove_elements2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/remove_elements2.png rename to doc/gui/images/remove_elements2.png diff --git a/doc/salome/gui/SMESH/images/remove_elements_icon.png b/doc/gui/images/remove_elements_icon.png similarity index 100% rename from doc/salome/gui/SMESH/images/remove_elements_icon.png rename to doc/gui/images/remove_elements_icon.png diff --git a/doc/salome/gui/SMESH/images/remove_node_reconnection.png b/doc/gui/images/remove_node_reconnection.png similarity index 100% rename from doc/salome/gui/SMESH/images/remove_node_reconnection.png rename to doc/gui/images/remove_node_reconnection.png diff --git a/doc/salome/gui/SMESH/images/remove_node_reconnection_dlg.png b/doc/gui/images/remove_node_reconnection_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/remove_node_reconnection_dlg.png rename to doc/gui/images/remove_node_reconnection_dlg.png diff --git a/doc/salome/gui/SMESH/images/remove_node_reconnection_icon.png b/doc/gui/images/remove_node_reconnection_icon.png similarity index 100% rename from doc/salome/gui/SMESH/images/remove_node_reconnection_icon.png rename to doc/gui/images/remove_node_reconnection_icon.png diff --git a/doc/salome/gui/SMESH/images/remove_nodes1.png b/doc/gui/images/remove_nodes1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/remove_nodes1.png rename to doc/gui/images/remove_nodes1.png diff --git a/doc/salome/gui/SMESH/images/remove_nodes2.png b/doc/gui/images/remove_nodes2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/remove_nodes2.png rename to doc/gui/images/remove_nodes2.png diff --git a/doc/salome/gui/SMESH/images/remove_nodes_icon.png b/doc/gui/images/remove_nodes_icon.png similarity index 100% rename from doc/salome/gui/SMESH/images/remove_nodes_icon.png rename to doc/gui/images/remove_nodes_icon.png diff --git a/doc/salome/gui/SMESH/images/remove_orphan_nodes_icon.png b/doc/gui/images/remove_orphan_nodes_icon.png similarity index 100% rename from doc/salome/gui/SMESH/images/remove_orphan_nodes_icon.png rename to doc/gui/images/remove_orphan_nodes_icon.png diff --git a/doc/salome/gui/SMESH/images/removeelements.png b/doc/gui/images/removeelements.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/removeelements.png rename to doc/gui/images/removeelements.png diff --git a/doc/salome/gui/SMESH/images/removenodes.png b/doc/gui/images/removenodes.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/removenodes.png rename to doc/gui/images/removenodes.png diff --git a/doc/salome/gui/SMESH/images/removeorphannodes.png b/doc/gui/images/removeorphannodes.png similarity index 100% rename from doc/salome/gui/SMESH/images/removeorphannodes.png rename to doc/gui/images/removeorphannodes.png diff --git a/doc/salome/gui/SMESH/images/renumberelements.png b/doc/gui/images/renumberelements.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/renumberelements.png rename to doc/gui/images/renumberelements.png diff --git a/doc/salome/gui/SMESH/images/renumbernodes.png b/doc/gui/images/renumbernodes.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/renumbernodes.png rename to doc/gui/images/renumbernodes.png diff --git a/doc/salome/gui/SMESH/images/reorient_2d_face.png b/doc/gui/images/reorient_2d_face.png similarity index 100% rename from doc/salome/gui/SMESH/images/reorient_2d_face.png rename to doc/gui/images/reorient_2d_face.png diff --git a/doc/salome/gui/SMESH/images/reorient_2d_point.png b/doc/gui/images/reorient_2d_point.png similarity index 100% rename from doc/salome/gui/SMESH/images/reorient_2d_point.png rename to doc/gui/images/reorient_2d_point.png diff --git a/doc/salome/gui/SMESH/images/reorient_2d_refgroup.png b/doc/gui/images/reorient_2d_refgroup.png similarity index 100% rename from doc/salome/gui/SMESH/images/reorient_2d_refgroup.png rename to doc/gui/images/reorient_2d_refgroup.png diff --git a/doc/salome/gui/SMESH/images/reorient_2d_volume.png b/doc/gui/images/reorient_2d_volume.png similarity index 100% rename from doc/salome/gui/SMESH/images/reorient_2d_volume.png rename to doc/gui/images/reorient_2d_volume.png diff --git a/doc/salome/gui/SMESH/images/reorient_faces_face.png b/doc/gui/images/reorient_faces_face.png similarity index 100% rename from doc/salome/gui/SMESH/images/reorient_faces_face.png rename to doc/gui/images/reorient_faces_face.png diff --git a/doc/salome/gui/SMESH/images/reorient_faces_point.png b/doc/gui/images/reorient_faces_point.png similarity index 100% rename from doc/salome/gui/SMESH/images/reorient_faces_point.png rename to doc/gui/images/reorient_faces_point.png diff --git a/doc/salome/gui/SMESH/images/reorient_faces_ref_groups.png b/doc/gui/images/reorient_faces_ref_groups.png similarity index 100% rename from doc/salome/gui/SMESH/images/reorient_faces_ref_groups.png rename to doc/gui/images/reorient_faces_ref_groups.png diff --git a/doc/salome/gui/SMESH/images/reorient_faces_volume.png b/doc/gui/images/reorient_faces_volume.png similarity index 100% rename from doc/salome/gui/SMESH/images/reorient_faces_volume.png rename to doc/gui/images/reorient_faces_volume.png diff --git a/doc/salome/gui/SMESH/images/rev_edges_helper_dlg.png b/doc/gui/images/rev_edges_helper_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/rev_edges_helper_dlg.png rename to doc/gui/images/rev_edges_helper_dlg.png diff --git a/doc/salome/gui/SMESH/images/revolution1.png b/doc/gui/images/revolution1.png similarity index 100% rename from doc/salome/gui/SMESH/images/revolution1.png rename to doc/gui/images/revolution1.png diff --git a/doc/salome/gui/SMESH/images/revolutionsn1.png b/doc/gui/images/revolutionsn1.png similarity index 100% rename from doc/salome/gui/SMESH/images/revolutionsn1.png rename to doc/gui/images/revolutionsn1.png diff --git a/doc/salome/gui/SMESH/images/revolutionsn2.png b/doc/gui/images/revolutionsn2.png similarity index 100% rename from doc/salome/gui/SMESH/images/revolutionsn2.png rename to doc/gui/images/revolutionsn2.png diff --git a/doc/salome/gui/SMESH/images/rotation.png b/doc/gui/images/rotation.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/rotation.png rename to doc/gui/images/rotation.png diff --git a/doc/salome/gui/SMESH/images/rotation1.png b/doc/gui/images/rotation1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/rotation1.png rename to doc/gui/images/rotation1.png diff --git a/doc/salome/gui/SMESH/images/rotation2.png b/doc/gui/images/rotation2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/rotation2.png rename to doc/gui/images/rotation2.png diff --git a/doc/salome/gui/SMESH/images/rotation_ico.png b/doc/gui/images/rotation_ico.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/rotation_ico.png rename to doc/gui/images/rotation_ico.png diff --git a/doc/salome/gui/SMESH/images/scalar_bar_dlg.png b/doc/gui/images/scalar_bar_dlg.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/scalar_bar_dlg.png rename to doc/gui/images/scalar_bar_dlg.png diff --git a/doc/salome/gui/SMESH/images/scale01.png b/doc/gui/images/scale01.png similarity index 100% rename from doc/salome/gui/SMESH/images/scale01.png rename to doc/gui/images/scale01.png diff --git a/doc/salome/gui/SMESH/images/scale02.png b/doc/gui/images/scale02.png similarity index 100% rename from doc/salome/gui/SMESH/images/scale02.png rename to doc/gui/images/scale02.png diff --git a/doc/salome/gui/SMESH/images/scale03.png b/doc/gui/images/scale03.png similarity index 100% rename from doc/salome/gui/SMESH/images/scale03.png rename to doc/gui/images/scale03.png diff --git a/doc/salome/gui/SMESH/images/scale04.png b/doc/gui/images/scale04.png similarity index 100% rename from doc/salome/gui/SMESH/images/scale04.png rename to doc/gui/images/scale04.png diff --git a/doc/salome/gui/SMESH/images/scale06.png b/doc/gui/images/scale06.png similarity index 100% rename from doc/salome/gui/SMESH/images/scale06.png rename to doc/gui/images/scale06.png diff --git a/doc/salome/gui/SMESH/images/scale07.png b/doc/gui/images/scale07.png similarity index 100% rename from doc/salome/gui/SMESH/images/scale07.png rename to doc/gui/images/scale07.png diff --git a/doc/salome/gui/SMESH/images/scale09.png b/doc/gui/images/scale09.png similarity index 100% rename from doc/salome/gui/SMESH/images/scale09.png rename to doc/gui/images/scale09.png diff --git a/doc/salome/gui/SMESH/images/scaleinit01.png b/doc/gui/images/scaleinit01.png similarity index 100% rename from doc/salome/gui/SMESH/images/scaleinit01.png rename to doc/gui/images/scaleinit01.png diff --git a/doc/salome/gui/SMESH/images/scaleinit02.png b/doc/gui/images/scaleinit02.png similarity index 100% rename from doc/salome/gui/SMESH/images/scaleinit02.png rename to doc/gui/images/scaleinit02.png diff --git a/doc/salome/gui/SMESH/images/scaleres03.png b/doc/gui/images/scaleres03.png similarity index 100% rename from doc/salome/gui/SMESH/images/scaleres03.png rename to doc/gui/images/scaleres03.png diff --git a/doc/salome/gui/SMESH/images/scaleres04.png b/doc/gui/images/scaleres04.png similarity index 100% rename from doc/salome/gui/SMESH/images/scaleres04.png rename to doc/gui/images/scaleres04.png diff --git a/doc/salome/gui/SMESH/images/scaleres06.png b/doc/gui/images/scaleres06.png similarity index 100% rename from doc/salome/gui/SMESH/images/scaleres06.png rename to doc/gui/images/scaleres06.png diff --git a/doc/salome/gui/SMESH/images/scaleres07.png b/doc/gui/images/scaleres07.png similarity index 100% rename from doc/salome/gui/SMESH/images/scaleres07.png rename to doc/gui/images/scaleres07.png diff --git a/doc/salome/gui/SMESH/images/scaleres09.png b/doc/gui/images/scaleres09.png similarity index 100% rename from doc/salome/gui/SMESH/images/scaleres09.png rename to doc/gui/images/scaleres09.png diff --git a/doc/salome/gui/SMESH/images/selectionfilterlibrary.png b/doc/gui/images/selectionfilterlibrary.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/selectionfilterlibrary.png rename to doc/gui/images/selectionfilterlibrary.png diff --git a/doc/salome/gui/SMESH/images/sew_after_merge.png b/doc/gui/images/sew_after_merge.png similarity index 100% rename from doc/salome/gui/SMESH/images/sew_after_merge.png rename to doc/gui/images/sew_after_merge.png diff --git a/doc/salome/gui/SMESH/images/sew_using_merge.png b/doc/gui/images/sew_using_merge.png similarity index 100% rename from doc/salome/gui/SMESH/images/sew_using_merge.png rename to doc/gui/images/sew_using_merge.png diff --git a/doc/salome/gui/SMESH/images/sewing.png b/doc/gui/images/sewing.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/sewing.png rename to doc/gui/images/sewing.png diff --git a/doc/salome/gui/SMESH/images/sewing1.png b/doc/gui/images/sewing1.png similarity index 100% rename from doc/salome/gui/SMESH/images/sewing1.png rename to doc/gui/images/sewing1.png diff --git a/doc/salome/gui/SMESH/images/sewing2.png b/doc/gui/images/sewing2.png similarity index 100% rename from doc/salome/gui/SMESH/images/sewing2.png rename to doc/gui/images/sewing2.png diff --git a/doc/salome/gui/SMESH/images/sewing3.png b/doc/gui/images/sewing3.png similarity index 100% rename from doc/salome/gui/SMESH/images/sewing3.png rename to doc/gui/images/sewing3.png diff --git a/doc/salome/gui/SMESH/images/sewing4.png b/doc/gui/images/sewing4.png similarity index 100% rename from doc/salome/gui/SMESH/images/sewing4.png rename to doc/gui/images/sewing4.png diff --git a/doc/salome/gui/SMESH/images/sewing_auto.png b/doc/gui/images/sewing_auto.png similarity index 100% rename from doc/salome/gui/SMESH/images/sewing_auto.png rename to doc/gui/images/sewing_auto.png diff --git a/doc/salome/gui/SMESH/images/sewing_manual.png b/doc/gui/images/sewing_manual.png similarity index 100% rename from doc/salome/gui/SMESH/images/sewing_manual.png rename to doc/gui/images/sewing_manual.png diff --git a/doc/salome/gui/SMESH/images/show_bad_mesh.png b/doc/gui/images/show_bad_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/show_bad_mesh.png rename to doc/gui/images/show_bad_mesh.png diff --git a/doc/salome/gui/SMESH/images/smesh_sort.png b/doc/gui/images/smesh_sort.png similarity index 100% rename from doc/salome/gui/SMESH/images/smesh_sort.png rename to doc/gui/images/smesh_sort.png diff --git a/doc/salome/gui/SMESH/images/smesh_sort_groups.png b/doc/gui/images/smesh_sort_groups.png similarity index 100% rename from doc/salome/gui/SMESH/images/smesh_sort_groups.png rename to doc/gui/images/smesh_sort_groups.png diff --git a/doc/salome/gui/SMESH/images/smoothing.png b/doc/gui/images/smoothing.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/smoothing.png rename to doc/gui/images/smoothing.png diff --git a/doc/salome/gui/SMESH/images/smoothing1.png b/doc/gui/images/smoothing1.png similarity index 100% rename from doc/salome/gui/SMESH/images/smoothing1.png rename to doc/gui/images/smoothing1.png diff --git a/doc/salome/gui/SMESH/images/smoothing2.png b/doc/gui/images/smoothing2.png similarity index 100% rename from doc/salome/gui/SMESH/images/smoothing2.png rename to doc/gui/images/smoothing2.png diff --git a/doc/salome/gui/SMESH/images/sort.gif b/doc/gui/images/sort.gif similarity index 100% rename from doc/salome/gui/SMESH/images/sort.gif rename to doc/gui/images/sort.gif diff --git a/doc/salome/gui/SMESH/images/sort.png b/doc/gui/images/sort.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/sort.png rename to doc/gui/images/sort.png diff --git a/doc/salome/gui/SMESH/images/split_biquad_to_linear_dlg.png b/doc/gui/images/split_biquad_to_linear_dlg.png similarity index 100% rename from doc/salome/gui/SMESH/images/split_biquad_to_linear_dlg.png rename to doc/gui/images/split_biquad_to_linear_dlg.png diff --git a/doc/salome/gui/SMESH/images/split_biquad_to_linear_icon.png b/doc/gui/images/split_biquad_to_linear_icon.png similarity index 100% rename from doc/salome/gui/SMESH/images/split_biquad_to_linear_icon.png rename to doc/gui/images/split_biquad_to_linear_icon.png diff --git a/doc/salome/gui/SMESH/images/split_biquad_to_linear_mesh.png b/doc/gui/images/split_biquad_to_linear_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/split_biquad_to_linear_mesh.png rename to doc/gui/images/split_biquad_to_linear_mesh.png diff --git a/doc/salome/gui/SMESH/images/split_into_prisms.png b/doc/gui/images/split_into_prisms.png similarity index 100% rename from doc/salome/gui/SMESH/images/split_into_prisms.png rename to doc/gui/images/split_into_prisms.png diff --git a/doc/salome/gui/SMESH/images/split_into_tetra.png b/doc/gui/images/split_into_tetra.png similarity index 100% rename from doc/salome/gui/SMESH/images/split_into_tetra.png rename to doc/gui/images/split_into_tetra.png diff --git a/doc/salome/gui/SMESH/images/split_into_tetra_icon.png b/doc/gui/images/split_into_tetra_icon.png similarity index 100% rename from doc/salome/gui/SMESH/images/split_into_tetra_icon.png rename to doc/gui/images/split_into_tetra_icon.png diff --git a/doc/salome/gui/SMESH/images/std_point_marker.png b/doc/gui/images/std_point_marker.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/std_point_marker.png rename to doc/gui/images/std_point_marker.png diff --git a/doc/salome/gui/SMESH/images/straight_after.png b/doc/gui/images/straight_after.png similarity index 100% rename from doc/salome/gui/SMESH/images/straight_after.png rename to doc/gui/images/straight_after.png diff --git a/doc/salome/gui/SMESH/images/straight_before.png b/doc/gui/images/straight_before.png similarity index 100% rename from doc/salome/gui/SMESH/images/straight_before.png rename to doc/gui/images/straight_before.png diff --git a/doc/salome/gui/SMESH/images/swap.png b/doc/gui/images/swap.png similarity index 100% rename from doc/salome/gui/SMESH/images/swap.png rename to doc/gui/images/swap.png diff --git a/doc/salome/gui/SMESH/images/symmetry.png b/doc/gui/images/symmetry.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/symmetry.png rename to doc/gui/images/symmetry.png diff --git a/doc/salome/gui/SMESH/images/symmetry1.png b/doc/gui/images/symmetry1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/symmetry1.png rename to doc/gui/images/symmetry1.png diff --git a/doc/salome/gui/SMESH/images/symmetry2.png b/doc/gui/images/symmetry2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/symmetry2.png rename to doc/gui/images/symmetry2.png diff --git a/doc/salome/gui/SMESH/images/symmetry3.png b/doc/gui/images/symmetry3.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/symmetry3.png rename to doc/gui/images/symmetry3.png diff --git a/doc/salome/gui/SMESH/images/topo_equality.png b/doc/gui/images/topo_equality.png similarity index 100% rename from doc/salome/gui/SMESH/images/topo_equality.png rename to doc/gui/images/topo_equality.png diff --git a/doc/salome/gui/SMESH/images/translation.png b/doc/gui/images/translation.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/translation.png rename to doc/gui/images/translation.png diff --git a/doc/salome/gui/SMESH/images/translation1.png b/doc/gui/images/translation1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/translation1.png rename to doc/gui/images/translation1.png diff --git a/doc/salome/gui/SMESH/images/translation2.png b/doc/gui/images/translation2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/translation2.png rename to doc/gui/images/translation2.png diff --git a/doc/salome/gui/SMESH/images/union_groups1.png b/doc/gui/images/union_groups1.png similarity index 100% rename from doc/salome/gui/SMESH/images/union_groups1.png rename to doc/gui/images/union_groups1.png diff --git a/doc/salome/gui/SMESH/images/uniongroups.png b/doc/gui/images/uniongroups.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/uniongroups.png rename to doc/gui/images/uniongroups.png diff --git a/doc/salome/gui/SMESH/images/unionoftwotriangles.png b/doc/gui/images/unionoftwotriangles.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/unionoftwotriangles.png rename to doc/gui/images/unionoftwotriangles.png diff --git a/doc/salome/gui/SMESH/images/uniting_a_set_of_triangles1.png b/doc/gui/images/uniting_a_set_of_triangles1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/uniting_a_set_of_triangles1.png rename to doc/gui/images/uniting_a_set_of_triangles1.png diff --git a/doc/salome/gui/SMESH/images/uniting_a_set_of_triangles2.png b/doc/gui/images/uniting_a_set_of_triangles2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/uniting_a_set_of_triangles2.png rename to doc/gui/images/uniting_a_set_of_triangles2.png diff --git a/doc/salome/gui/SMESH/images/uniting_two_triangles1.png b/doc/gui/images/uniting_two_triangles1.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/uniting_two_triangles1.png rename to doc/gui/images/uniting_two_triangles1.png diff --git a/doc/salome/gui/SMESH/images/uniting_two_triangles2.png b/doc/gui/images/uniting_two_triangles2.png old mode 100755 new mode 100644 similarity index 100% rename from doc/salome/gui/SMESH/images/uniting_two_triangles2.png rename to doc/gui/images/uniting_two_triangles2.png diff --git a/doc/salome/gui/SMESH/images/use_existing_face_sample_mesh.png b/doc/gui/images/use_existing_face_sample_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/use_existing_face_sample_mesh.png rename to doc/gui/images/use_existing_face_sample_mesh.png diff --git a/doc/salome/gui/SMESH/images/using_notebook_smesh.png b/doc/gui/images/using_notebook_smesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/using_notebook_smesh.png rename to doc/gui/images/using_notebook_smesh.png diff --git a/doc/salome/gui/SMESH/images/viscous_layers_2d_hyp.png b/doc/gui/images/viscous_layers_2d_hyp.png similarity index 100% rename from doc/salome/gui/SMESH/images/viscous_layers_2d_hyp.png rename to doc/gui/images/viscous_layers_2d_hyp.png diff --git a/doc/salome/gui/SMESH/images/viscous_layers_extrusion_method.png b/doc/gui/images/viscous_layers_extrusion_method.png similarity index 100% rename from doc/salome/gui/SMESH/images/viscous_layers_extrusion_method.png rename to doc/gui/images/viscous_layers_extrusion_method.png diff --git a/doc/salome/gui/SMESH/images/viscous_layers_hyp.png b/doc/gui/images/viscous_layers_hyp.png similarity index 100% rename from doc/salome/gui/SMESH/images/viscous_layers_hyp.png rename to doc/gui/images/viscous_layers_hyp.png diff --git a/doc/salome/gui/SMESH/images/viscous_layers_mesh.png b/doc/gui/images/viscous_layers_mesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/viscous_layers_mesh.png rename to doc/gui/images/viscous_layers_mesh.png diff --git a/doc/salome/gui/SMESH/images/viscous_layers_on_submesh.png b/doc/gui/images/viscous_layers_on_submesh.png similarity index 100% rename from doc/salome/gui/SMESH/images/viscous_layers_on_submesh.png rename to doc/gui/images/viscous_layers_on_submesh.png diff --git a/doc/salome/gui/SMESH/input/1d_meshing_hypo.rst b/doc/gui/input/1d_meshing_hypo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/1d_meshing_hypo.rst rename to doc/gui/input/1d_meshing_hypo.rst diff --git a/doc/salome/gui/SMESH/input/2d_meshing_hypo.rst b/doc/gui/input/2d_meshing_hypo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/2d_meshing_hypo.rst rename to doc/gui/input/2d_meshing_hypo.rst diff --git a/doc/salome/gui/SMESH/input/3d_meshing_hypo.rst b/doc/gui/input/3d_meshing_hypo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/3d_meshing_hypo.rst rename to doc/gui/input/3d_meshing_hypo.rst diff --git a/doc/salome/gui/SMESH/input/StdMeshersBuilder.rst b/doc/gui/input/StdMeshersBuilder.rst similarity index 100% rename from doc/salome/gui/SMESH/input/StdMeshersBuilder.rst rename to doc/gui/input/StdMeshersBuilder.rst diff --git a/doc/salome/gui/SMESH/input/about_filters.rst b/doc/gui/input/about_filters.rst similarity index 100% rename from doc/salome/gui/SMESH/input/about_filters.rst rename to doc/gui/input/about_filters.rst diff --git a/doc/salome/gui/SMESH/input/about_hypo.rst b/doc/gui/input/about_hypo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/about_hypo.rst rename to doc/gui/input/about_hypo.rst diff --git a/doc/salome/gui/SMESH/input/about_meshes.rst b/doc/gui/input/about_meshes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/about_meshes.rst rename to doc/gui/input/about_meshes.rst diff --git a/doc/gui/input/about_quality_controls.rst b/doc/gui/input/about_quality_controls.rst new file mode 100644 index 000000000..1e303af3e --- /dev/null +++ b/doc/gui/input/about_quality_controls.rst @@ -0,0 +1,102 @@ +.. _quality_page: + +********************** +About quality controls +********************** + +**Mesh quality control** in MESH is destined for visual control of the generated mesh. + +Application of a definite quality control consists of usage of the corresponding algorithm, which calculates a value of a definite geometric characteristic (Area, Length of edges, etc) for all meshing elements, composing your mesh. Then all meshing elements are colored according the calculated values. The reference between the coloring of the meshing elements and these calculated values is shown with the help of a scalar bar, which is displayed near the presentation of your mesh. + +There are four types of quality controls, corresponding to node, edge, face and volume entity type. + +Node quality controls: + +* :ref:`free_nodes_page` +* :ref:`double_nodes_control_page` + + +Edge quality controls: + +* :ref:`free_borders_page` +* :ref:`length_page` +* :ref:`borders_at_multi_connection_page` +* :ref:`double_elements_page` + + +Face quality controls: + +* :ref:`free_edges_page` +* :ref:`free_faces_page` +* :ref:`bare_border_faces_page` +* :ref:`over_constrained_faces_page` +* :ref:`length_2d_page` +* :ref:`deflection_2d_page` +* :ref:`borders_at_multi_connection_2d_page` +* :ref:`area_page` +* :ref:`taper_page` +* :ref:`aspect_ratio_page` +* :ref:`minimum_angle_page` +* :ref:`warping_page` +* :ref:`skew_page` +* :ref:`max_element_length_2d_page` +* :ref:`double_elements_page` + + +Volume quality controls: + +* :ref:`aspect_ratio_3d_page` +* :ref:`volume_page` +* :ref:`max_element_length_3d_page` +* :ref:`bare_border_volumes_page` +* :ref:`over_constrained_volumes_page` +* :ref:`double_elements_page` + + +To manage the quality controls call pop-up in the VTK viewer and select "Controls" sub-menu + +.. image:: ../images/controls_popup.png + :align: center + + +* **Reset** switches off quality controls; +* **Node Controls** provides access to the node quality controls; +* **Edge Controls** provides access to the edge quality controls; +* **Face Controls** provides access to the face quality controls; +* **Volume Controls** provides access to the volume quality controls; +* **Scalar Bar Properties** allows setting :ref:`scalar_bar_dlg`; +* **Distribution -> Export ...** allows saving the distribution of quality control values in the text file; +* **Distribution -> Show** Shows/Hides the distribution histogram of the quality control values in the VTK Viewer. +* **Distribution -> Plot** Plots the distribution histogram of the quality control values in the Plot 2D Viewer. + +**Table of Contents** + +.. toctree:: + :maxdepth: 2 + + free_nodes.rst + double_nodes_control.rst + free_borders.rst + length.rst + borders_at_multi_connection.rst + double_elements_control.rst + free_edges.rst + free_faces.rst + bare_border_face.rst + over_constrained_faces.rst + length_2d.rst + deflection_2d.rst + borders_at_multi_connection_2d.rst + area.rst + taper.rst + aspect_ratio.rst + minimum_angle.rst + warping.rst + skew.rst + max_element_length_2d.rst + aspect_ratio_3d.rst + volume.rst + max_element_length_3d.rst + bare_border_volumes.rst + over_constrained_volumes.rst + scalar_bar.rst diff --git a/doc/salome/gui/SMESH/input/adaptation.rst b/doc/gui/input/adaptation.rst similarity index 100% rename from doc/salome/gui/SMESH/input/adaptation.rst rename to doc/gui/input/adaptation.rst diff --git a/doc/salome/gui/SMESH/input/add_node_on_face.rst b/doc/gui/input/add_node_on_face.rst similarity index 100% rename from doc/salome/gui/SMESH/input/add_node_on_face.rst rename to doc/gui/input/add_node_on_face.rst diff --git a/doc/salome/gui/SMESH/input/add_node_on_segment.rst b/doc/gui/input/add_node_on_segment.rst similarity index 100% rename from doc/salome/gui/SMESH/input/add_node_on_segment.rst rename to doc/gui/input/add_node_on_segment.rst diff --git a/doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst b/doc/gui/input/adding_nodes_and_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/adding_nodes_and_elements.rst rename to doc/gui/input/adding_nodes_and_elements.rst diff --git a/doc/salome/gui/SMESH/input/adding_quadratic_elements.rst b/doc/gui/input/adding_quadratic_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/adding_quadratic_elements.rst rename to doc/gui/input/adding_quadratic_elements.rst diff --git a/doc/salome/gui/SMESH/input/additional_hypo.rst b/doc/gui/input/additional_hypo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/additional_hypo.rst rename to doc/gui/input/additional_hypo.rst diff --git a/doc/salome/gui/SMESH/input/area.rst b/doc/gui/input/area.rst similarity index 100% rename from doc/salome/gui/SMESH/input/area.rst rename to doc/gui/input/area.rst diff --git a/doc/salome/gui/SMESH/input/aspect_ratio.rst b/doc/gui/input/aspect_ratio.rst similarity index 100% rename from doc/salome/gui/SMESH/input/aspect_ratio.rst rename to doc/gui/input/aspect_ratio.rst diff --git a/doc/salome/gui/SMESH/input/aspect_ratio_3d.rst b/doc/gui/input/aspect_ratio_3d.rst similarity index 100% rename from doc/salome/gui/SMESH/input/aspect_ratio_3d.rst rename to doc/gui/input/aspect_ratio_3d.rst diff --git a/doc/salome/gui/SMESH/input/bare_border_face.rst b/doc/gui/input/bare_border_face.rst similarity index 100% rename from doc/salome/gui/SMESH/input/bare_border_face.rst rename to doc/gui/input/bare_border_face.rst diff --git a/doc/salome/gui/SMESH/input/bare_border_volumes.rst b/doc/gui/input/bare_border_volumes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/bare_border_volumes.rst rename to doc/gui/input/bare_border_volumes.rst diff --git a/doc/salome/gui/SMESH/input/basic_meshing_algos.rst b/doc/gui/input/basic_meshing_algos.rst similarity index 100% rename from doc/salome/gui/SMESH/input/basic_meshing_algos.rst rename to doc/gui/input/basic_meshing_algos.rst diff --git a/doc/salome/gui/SMESH/input/borders_at_multi_connection.rst b/doc/gui/input/borders_at_multi_connection.rst similarity index 100% rename from doc/salome/gui/SMESH/input/borders_at_multi_connection.rst rename to doc/gui/input/borders_at_multi_connection.rst diff --git a/doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst b/doc/gui/input/borders_at_multi_connection_2d.rst similarity index 100% rename from doc/salome/gui/SMESH/input/borders_at_multi_connection_2d.rst rename to doc/gui/input/borders_at_multi_connection_2d.rst diff --git a/doc/salome/gui/SMESH/input/building_compounds.rst b/doc/gui/input/building_compounds.rst similarity index 100% rename from doc/salome/gui/SMESH/input/building_compounds.rst rename to doc/gui/input/building_compounds.rst diff --git a/doc/salome/gui/SMESH/input/cartesian_algo.rst b/doc/gui/input/cartesian_algo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/cartesian_algo.rst rename to doc/gui/input/cartesian_algo.rst diff --git a/doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst b/doc/gui/input/changing_orientation_of_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/changing_orientation_of_elements.rst rename to doc/gui/input/changing_orientation_of_elements.rst diff --git a/doc/salome/gui/SMESH/input/clipping.rst b/doc/gui/input/clipping.rst similarity index 100% rename from doc/salome/gui/SMESH/input/clipping.rst rename to doc/gui/input/clipping.rst diff --git a/doc/salome/gui/SMESH/input/colors_size.rst b/doc/gui/input/colors_size.rst similarity index 100% rename from doc/salome/gui/SMESH/input/colors_size.rst rename to doc/gui/input/colors_size.rst diff --git a/doc/salome/gui/SMESH/input/connectivity.rst b/doc/gui/input/connectivity.rst similarity index 100% rename from doc/salome/gui/SMESH/input/connectivity.rst rename to doc/gui/input/connectivity.rst diff --git a/doc/salome/gui/SMESH/input/constructing_meshes.rst b/doc/gui/input/constructing_meshes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/constructing_meshes.rst rename to doc/gui/input/constructing_meshes.rst diff --git a/doc/salome/gui/SMESH/input/constructing_submeshes.rst b/doc/gui/input/constructing_submeshes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/constructing_submeshes.rst rename to doc/gui/input/constructing_submeshes.rst diff --git a/doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst b/doc/gui/input/convert_to_from_quadratic_mesh.rst similarity index 100% rename from doc/salome/gui/SMESH/input/convert_to_from_quadratic_mesh.rst rename to doc/gui/input/convert_to_from_quadratic_mesh.rst diff --git a/doc/salome/gui/SMESH/input/copy_mesh.rst b/doc/gui/input/copy_mesh.rst similarity index 100% rename from doc/salome/gui/SMESH/input/copy_mesh.rst rename to doc/gui/input/copy_mesh.rst diff --git a/doc/salome/gui/SMESH/input/create_groups_from_geometry.rst b/doc/gui/input/create_groups_from_geometry.rst similarity index 100% rename from doc/salome/gui/SMESH/input/create_groups_from_geometry.rst rename to doc/gui/input/create_groups_from_geometry.rst diff --git a/doc/salome/gui/SMESH/input/creating_groups.rst b/doc/gui/input/creating_groups.rst similarity index 100% rename from doc/salome/gui/SMESH/input/creating_groups.rst rename to doc/gui/input/creating_groups.rst diff --git a/doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst b/doc/gui/input/cut_mesh_by_plane.rst similarity index 100% rename from doc/salome/gui/SMESH/input/cut_mesh_by_plane.rst rename to doc/gui/input/cut_mesh_by_plane.rst diff --git a/doc/salome/gui/SMESH/input/cutting_quadrangles.rst b/doc/gui/input/cutting_quadrangles.rst similarity index 100% rename from doc/salome/gui/SMESH/input/cutting_quadrangles.rst rename to doc/gui/input/cutting_quadrangles.rst diff --git a/doc/salome/gui/SMESH/input/define_mesh_by_script.rst b/doc/gui/input/define_mesh_by_script.rst similarity index 100% rename from doc/salome/gui/SMESH/input/define_mesh_by_script.rst rename to doc/gui/input/define_mesh_by_script.rst diff --git a/doc/gui/input/deflection_2d.rst b/doc/gui/input/deflection_2d.rst new file mode 100644 index 000000000..1af337630 --- /dev/null +++ b/doc/gui/input/deflection_2d.rst @@ -0,0 +1,24 @@ +.. _deflection_2d_page: + +************* +Deflection 2D +************* + +This quality control criterion consists of calculation of distance between a mesh face gravity corner +and the surface the face discretizes. + +*To apply the Deflection 2D quality criterion to your mesh:* + +.. |img| image:: ../images/mesh_deflection.png + +#. Display your mesh in the viewer. +#. Choose **Controls > Face Controls > Deflection 2D** or click *"Deflection 2D"* |img| button in the toolbar. + + +Your mesh will be displayed in the viewer with faces colored according to the applied mesh quality control criterion: + +.. image:: ../images/deflection_2d.png + :align: center + + +**See Also** a sample TUI Script of a :ref:`tui_deflection_2d` operation. diff --git a/doc/salome/gui/SMESH/input/deleting_groups.rst b/doc/gui/input/deleting_groups.rst similarity index 100% rename from doc/salome/gui/SMESH/input/deleting_groups.rst rename to doc/gui/input/deleting_groups.rst diff --git a/doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst b/doc/gui/input/diagonal_inversion_of_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/diagonal_inversion_of_elements.rst rename to doc/gui/input/diagonal_inversion_of_elements.rst diff --git a/doc/salome/gui/SMESH/input/display_entity.rst b/doc/gui/input/display_entity.rst similarity index 100% rename from doc/salome/gui/SMESH/input/display_entity.rst rename to doc/gui/input/display_entity.rst diff --git a/doc/salome/gui/SMESH/input/display_mode.rst b/doc/gui/input/display_mode.rst similarity index 100% rename from doc/salome/gui/SMESH/input/display_mode.rst rename to doc/gui/input/display_mode.rst diff --git a/doc/salome/gui/SMESH/input/double_elements_control.rst b/doc/gui/input/double_elements_control.rst similarity index 100% rename from doc/salome/gui/SMESH/input/double_elements_control.rst rename to doc/gui/input/double_elements_control.rst diff --git a/doc/salome/gui/SMESH/input/double_nodes_control.rst b/doc/gui/input/double_nodes_control.rst similarity index 100% rename from doc/salome/gui/SMESH/input/double_nodes_control.rst rename to doc/gui/input/double_nodes_control.rst diff --git a/doc/salome/gui/SMESH/input/double_nodes_page.rst b/doc/gui/input/double_nodes_page.rst similarity index 100% rename from doc/salome/gui/SMESH/input/double_nodes_page.rst rename to doc/gui/input/double_nodes_page.rst diff --git a/doc/salome/gui/SMESH/input/editing_groups.rst b/doc/gui/input/editing_groups.rst similarity index 100% rename from doc/salome/gui/SMESH/input/editing_groups.rst rename to doc/gui/input/editing_groups.rst diff --git a/doc/salome/gui/SMESH/input/editing_meshes.rst b/doc/gui/input/editing_meshes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/editing_meshes.rst rename to doc/gui/input/editing_meshes.rst diff --git a/doc/salome/gui/SMESH/input/extrusion.rst b/doc/gui/input/extrusion.rst similarity index 100% rename from doc/salome/gui/SMESH/input/extrusion.rst rename to doc/gui/input/extrusion.rst diff --git a/doc/salome/gui/SMESH/input/extrusion_along_path.rst b/doc/gui/input/extrusion_along_path.rst similarity index 100% rename from doc/salome/gui/SMESH/input/extrusion_along_path.rst rename to doc/gui/input/extrusion_along_path.rst diff --git a/doc/salome/gui/SMESH/input/face_groups_by_sharp_edges.rst b/doc/gui/input/face_groups_by_sharp_edges.rst similarity index 100% rename from doc/salome/gui/SMESH/input/face_groups_by_sharp_edges.rst rename to doc/gui/input/face_groups_by_sharp_edges.rst diff --git a/doc/salome/gui/SMESH/input/find_element_by_point.rst b/doc/gui/input/find_element_by_point.rst similarity index 100% rename from doc/salome/gui/SMESH/input/find_element_by_point.rst rename to doc/gui/input/find_element_by_point.rst diff --git a/doc/salome/gui/SMESH/input/free_borders.rst b/doc/gui/input/free_borders.rst similarity index 100% rename from doc/salome/gui/SMESH/input/free_borders.rst rename to doc/gui/input/free_borders.rst diff --git a/doc/salome/gui/SMESH/input/free_edges.rst b/doc/gui/input/free_edges.rst similarity index 100% rename from doc/salome/gui/SMESH/input/free_edges.rst rename to doc/gui/input/free_edges.rst diff --git a/doc/salome/gui/SMESH/input/free_faces.rst b/doc/gui/input/free_faces.rst similarity index 100% rename from doc/salome/gui/SMESH/input/free_faces.rst rename to doc/gui/input/free_faces.rst diff --git a/doc/salome/gui/SMESH/input/free_nodes.rst b/doc/gui/input/free_nodes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/free_nodes.rst rename to doc/gui/input/free_nodes.rst diff --git a/doc/salome/gui/SMESH/input/generate_flat_elements.rst b/doc/gui/input/generate_flat_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/generate_flat_elements.rst rename to doc/gui/input/generate_flat_elements.rst diff --git a/doc/salome/gui/SMESH/input/group_of_underlying_elements.rst b/doc/gui/input/group_of_underlying_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/group_of_underlying_elements.rst rename to doc/gui/input/group_of_underlying_elements.rst diff --git a/doc/salome/gui/SMESH/input/grouping_elements.rst b/doc/gui/input/grouping_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/grouping_elements.rst rename to doc/gui/input/grouping_elements.rst diff --git a/doc/salome/gui/SMESH/input/homard_create_boundary.rst b/doc/gui/input/homard_create_boundary.rst similarity index 100% rename from doc/salome/gui/SMESH/input/homard_create_boundary.rst rename to doc/gui/input/homard_create_boundary.rst diff --git a/doc/salome/gui/SMESH/input/importing_exporting_meshes.rst b/doc/gui/input/importing_exporting_meshes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/importing_exporting_meshes.rst rename to doc/gui/input/importing_exporting_meshes.rst diff --git a/doc/salome/gui/SMESH/input/index.rst b/doc/gui/input/index.rst similarity index 100% rename from doc/salome/gui/SMESH/input/index.rst rename to doc/gui/input/index.rst diff --git a/doc/salome/gui/SMESH/input/length.rst b/doc/gui/input/length.rst similarity index 100% rename from doc/salome/gui/SMESH/input/length.rst rename to doc/gui/input/length.rst diff --git a/doc/salome/gui/SMESH/input/length_2d.rst b/doc/gui/input/length_2d.rst similarity index 100% rename from doc/salome/gui/SMESH/input/length_2d.rst rename to doc/gui/input/length_2d.rst diff --git a/doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst b/doc/gui/input/make_2dmesh_from_3d.rst similarity index 100% rename from doc/salome/gui/SMESH/input/make_2dmesh_from_3d.rst rename to doc/gui/input/make_2dmesh_from_3d.rst diff --git a/doc/salome/gui/SMESH/input/max_element_length_2d.rst b/doc/gui/input/max_element_length_2d.rst similarity index 100% rename from doc/salome/gui/SMESH/input/max_element_length_2d.rst rename to doc/gui/input/max_element_length_2d.rst diff --git a/doc/salome/gui/SMESH/input/max_element_length_3d.rst b/doc/gui/input/max_element_length_3d.rst similarity index 100% rename from doc/salome/gui/SMESH/input/max_element_length_3d.rst rename to doc/gui/input/max_element_length_3d.rst diff --git a/doc/salome/gui/SMESH/input/measurements.rst b/doc/gui/input/measurements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/measurements.rst rename to doc/gui/input/measurements.rst diff --git a/doc/salome/gui/SMESH/input/merging_elements.rst b/doc/gui/input/merging_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/merging_elements.rst rename to doc/gui/input/merging_elements.rst diff --git a/doc/salome/gui/SMESH/input/merging_nodes.rst b/doc/gui/input/merging_nodes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/merging_nodes.rst rename to doc/gui/input/merging_nodes.rst diff --git a/doc/salome/gui/SMESH/input/mesh_infos.rst b/doc/gui/input/mesh_infos.rst similarity index 100% rename from doc/salome/gui/SMESH/input/mesh_infos.rst rename to doc/gui/input/mesh_infos.rst diff --git a/doc/salome/gui/SMESH/input/mesh_preferences.rst b/doc/gui/input/mesh_preferences.rst similarity index 100% rename from doc/salome/gui/SMESH/input/mesh_preferences.rst rename to doc/gui/input/mesh_preferences.rst diff --git a/doc/salome/gui/SMESH/input/mesh_through_point.rst b/doc/gui/input/mesh_through_point.rst similarity index 100% rename from doc/salome/gui/SMESH/input/mesh_through_point.rst rename to doc/gui/input/mesh_through_point.rst diff --git a/doc/salome/gui/SMESH/input/minimum_angle.rst b/doc/gui/input/minimum_angle.rst similarity index 100% rename from doc/salome/gui/SMESH/input/minimum_angle.rst rename to doc/gui/input/minimum_angle.rst diff --git a/doc/salome/gui/SMESH/input/modifying_meshes.rst b/doc/gui/input/modifying_meshes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/modifying_meshes.rst rename to doc/gui/input/modifying_meshes.rst diff --git a/doc/salome/gui/SMESH/input/modules.rst b/doc/gui/input/modules.rst similarity index 100% rename from doc/salome/gui/SMESH/input/modules.rst rename to doc/gui/input/modules.rst diff --git a/doc/salome/gui/SMESH/input/numbering.rst b/doc/gui/input/numbering.rst similarity index 100% rename from doc/salome/gui/SMESH/input/numbering.rst rename to doc/gui/input/numbering.rst diff --git a/doc/salome/gui/SMESH/input/over_constrained_faces.rst b/doc/gui/input/over_constrained_faces.rst similarity index 100% rename from doc/salome/gui/SMESH/input/over_constrained_faces.rst rename to doc/gui/input/over_constrained_faces.rst diff --git a/doc/salome/gui/SMESH/input/over_constrained_volumes.rst b/doc/gui/input/over_constrained_volumes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/over_constrained_volumes.rst rename to doc/gui/input/over_constrained_volumes.rst diff --git a/doc/salome/gui/SMESH/input/pattern_mapping.rst b/doc/gui/input/pattern_mapping.rst similarity index 100% rename from doc/salome/gui/SMESH/input/pattern_mapping.rst rename to doc/gui/input/pattern_mapping.rst diff --git a/doc/salome/gui/SMESH/input/point_marker.rst b/doc/gui/input/point_marker.rst similarity index 100% rename from doc/salome/gui/SMESH/input/point_marker.rst rename to doc/gui/input/point_marker.rst diff --git a/doc/salome/gui/SMESH/input/prism_3d_algo.rst b/doc/gui/input/prism_3d_algo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/prism_3d_algo.rst rename to doc/gui/input/prism_3d_algo.rst diff --git a/doc/salome/gui/SMESH/input/projection_algos.rst b/doc/gui/input/projection_algos.rst similarity index 100% rename from doc/salome/gui/SMESH/input/projection_algos.rst rename to doc/gui/input/projection_algos.rst diff --git a/doc/salome/gui/SMESH/input/quad_from_ma_algo.rst b/doc/gui/input/quad_from_ma_algo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/quad_from_ma_algo.rst rename to doc/gui/input/quad_from_ma_algo.rst diff --git a/doc/salome/gui/SMESH/input/quad_ijk_algo.rst b/doc/gui/input/quad_ijk_algo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/quad_ijk_algo.rst rename to doc/gui/input/quad_ijk_algo.rst diff --git a/doc/salome/gui/SMESH/input/radial_prism_algo.rst b/doc/gui/input/radial_prism_algo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/radial_prism_algo.rst rename to doc/gui/input/radial_prism_algo.rst diff --git a/doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst b/doc/gui/input/radial_quadrangle_1D2D_algo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.rst rename to doc/gui/input/radial_quadrangle_1D2D_algo.rst diff --git a/doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst b/doc/gui/input/removing_nodes_and_elements.rst similarity index 100% rename from doc/salome/gui/SMESH/input/removing_nodes_and_elements.rst rename to doc/gui/input/removing_nodes_and_elements.rst diff --git a/doc/salome/gui/SMESH/input/reorient_faces.rst b/doc/gui/input/reorient_faces.rst similarity index 100% rename from doc/salome/gui/SMESH/input/reorient_faces.rst rename to doc/gui/input/reorient_faces.rst diff --git a/doc/salome/gui/SMESH/input/revolution.rst b/doc/gui/input/revolution.rst similarity index 100% rename from doc/salome/gui/SMESH/input/revolution.rst rename to doc/gui/input/revolution.rst diff --git a/doc/salome/gui/SMESH/input/rotation.rst b/doc/gui/input/rotation.rst similarity index 100% rename from doc/salome/gui/SMESH/input/rotation.rst rename to doc/gui/input/rotation.rst diff --git a/doc/salome/gui/SMESH/input/scalar_bar.rst b/doc/gui/input/scalar_bar.rst similarity index 100% rename from doc/salome/gui/SMESH/input/scalar_bar.rst rename to doc/gui/input/scalar_bar.rst diff --git a/doc/salome/gui/SMESH/input/scale.rst b/doc/gui/input/scale.rst similarity index 100% rename from doc/salome/gui/SMESH/input/scale.rst rename to doc/gui/input/scale.rst diff --git a/doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst b/doc/gui/input/segments_around_vertex_algo.rst similarity index 100% rename from doc/salome/gui/SMESH/input/segments_around_vertex_algo.rst rename to doc/gui/input/segments_around_vertex_algo.rst diff --git a/doc/salome/gui/SMESH/input/selection_filter_library.rst b/doc/gui/input/selection_filter_library.rst similarity index 100% rename from doc/salome/gui/SMESH/input/selection_filter_library.rst rename to doc/gui/input/selection_filter_library.rst diff --git a/doc/salome/gui/SMESH/input/sewing_meshes.rst b/doc/gui/input/sewing_meshes.rst similarity index 100% rename from doc/salome/gui/SMESH/input/sewing_meshes.rst rename to doc/gui/input/sewing_meshes.rst diff --git a/doc/salome/gui/SMESH/input/skew.rst b/doc/gui/input/skew.rst similarity index 100% rename from doc/salome/gui/SMESH/input/skew.rst rename to doc/gui/input/skew.rst diff --git a/doc/salome/gui/SMESH/input/smeshBuilder.rst b/doc/gui/input/smeshBuilder.rst similarity index 100% rename from doc/salome/gui/SMESH/input/smeshBuilder.rst rename to doc/gui/input/smeshBuilder.rst diff --git a/doc/salome/gui/SMESH/input/smesh_migration.rst b/doc/gui/input/smesh_migration.rst similarity index 100% rename from doc/salome/gui/SMESH/input/smesh_migration.rst rename to doc/gui/input/smesh_migration.rst diff --git a/doc/salome/gui/SMESH/input/smesh_module.rst b/doc/gui/input/smesh_module.rst similarity index 100% rename from doc/salome/gui/SMESH/input/smesh_module.rst rename to doc/gui/input/smesh_module.rst diff --git a/doc/gui/input/smeshpy_interface.rst b/doc/gui/input/smeshpy_interface.rst new file mode 100644 index 000000000..2cdf76b6f --- /dev/null +++ b/doc/gui/input/smeshpy_interface.rst @@ -0,0 +1,111 @@ +.. _smeshpy_interface_page: + +**************** +Python interface +**************** + +Python API of SALOME Mesh module defines several classes that can +be used for easy mesh creation and edition. + +Documentation of SALOME Mesh module Python API is available in two forms: + +- :doc:`Structured documentation `, where all methods and classes are grouped by their functionality. + +- :ref:`Linear documentation ` grouped only by classes, declared in the :mod:`smeshBuilder` Python module. + +With SALOME 7.2, the Python interface for Mesh has been slightly modified to offer new functionality. +You may have to modify your scripts generated with SALOME 6 or older versions. +Please see :ref:`smesh_migration_page`. + +Class :class:`smeshBuilder.smeshBuilder` provides an interface to create and handle +meshes. It can be used to create an empty mesh or to import mesh from the data file. + +As soon as a mesh is created, it is possible to manage it via its own +methods, described in class :class:`smeshBuilder.Mesh` documentation. + +Class :class:`smeshstudytools.SMeshStudyTools` provides several methods to manipulate mesh objects in Salome study. + +A usual workflow to generate a mesh on geometry is following: + +#. Create an instance of :class:`smeshBuilder.smeshBuilder`: + .. code-block:: python + + from salome.smesh import smeshBuilder + smesh = smeshBuilder.New() + +#. Create a :class:`smeshBuilder.Mesh` object: + + .. code-block:: python + + mesh = smesh.Mesh( geometry ) + +#. Create and assign :ref:`algorithms ` by calling corresponding methods of the mesh. If a sub-shape is provided as an argument, a :ref:`sub-mesh ` is implicitly created on this sub-shape: + .. code-block:: python + + regular1D = mesh.Segment() + mefisto = mesh.Triangle( smeshBuilder.MEFISTO ) + # use other triangle algorithm on a face -- a sub-mesh appears in the mesh + netgen = mesh.Triangle( smeshBuilder.NETGEN_1D2D, face ) + +#. Create and assign :ref:`hypotheses ` by calling corresponding methods of algorithms: + .. code-block:: python + + segLen10 = regular1D.LocalLength( 10. ) + maxArea = mefisto.LocalLength( 100. ) + netgen.SetMaxSize( 20. ) + netgen.SetFineness( smeshBuilder.VeryCoarse ) + +#. :ref:`Compute the mesh ` (generate mesh nodes and elements): + .. code-block:: python + + mesh.Compute() + +An easiest way to start with Python scripting is to do something in +GUI and then to get a corresponding Python script via +**File > Dump Study** menu item. Don't forget that you can get +all methods of any object in hand (e.g. a mesh group or a hypothesis) +by calling *dir()* Python built-in function. + +All methods of the :class:`Mesh Group ` can be found in :ref:`tui_create_standalone_group` sample script. + +An example below demonstrates usage of the Python API for 3D mesh +generation and for retrieving basic information on mesh nodes, elements and groups. + +.. _example_3d_mesh: + +Example of 3d mesh generation: +############################## + +.. literalinclude:: ../../examples/mesh_3d.py + :language: python + +:download:`Download this script <../../examples/mesh_3d.py>` + +Examples of Python scripts for Mesh operations are available by +the following links: + +.. toctree:: + :titlesonly: + + tui_creating_meshes + tui_defining_hypotheses + tui_grouping_elements + tui_filters + tui_modifying_meshes + tui_transforming_meshes + tui_viewing_meshes + tui_quality_controls + tui_adaptation + tui_measurements + tui_work_on_objects_from_gui + tui_notebook_smesh + +.. toctree:: + :hidden: + + smesh_migration.rst + smeshBuilder.rst + StdMeshersBuilder.rst + smeshstudytools.rst + modules.rst + smesh_module.rst diff --git a/doc/salome/gui/SMESH/input/smeshstudytools.rst b/doc/gui/input/smeshstudytools.rst similarity index 100% rename from doc/salome/gui/SMESH/input/smeshstudytools.rst rename to doc/gui/input/smeshstudytools.rst diff --git a/doc/salome/gui/SMESH/input/smoothing.rst b/doc/gui/input/smoothing.rst similarity index 100% rename from doc/salome/gui/SMESH/input/smoothing.rst rename to doc/gui/input/smoothing.rst diff --git a/doc/salome/gui/SMESH/input/split_biquad_to_linear.rst b/doc/gui/input/split_biquad_to_linear.rst similarity index 100% rename from doc/salome/gui/SMESH/input/split_biquad_to_linear.rst rename to doc/gui/input/split_biquad_to_linear.rst diff --git a/doc/salome/gui/SMESH/input/split_to_tetra.rst b/doc/gui/input/split_to_tetra.rst similarity index 100% rename from doc/salome/gui/SMESH/input/split_to_tetra.rst rename to doc/gui/input/split_to_tetra.rst diff --git a/doc/salome/gui/SMESH/input/symmetry.rst b/doc/gui/input/symmetry.rst similarity index 100% rename from doc/salome/gui/SMESH/input/symmetry.rst rename to doc/gui/input/symmetry.rst diff --git a/doc/salome/gui/SMESH/input/taper.rst b/doc/gui/input/taper.rst similarity index 100% rename from doc/salome/gui/SMESH/input/taper.rst rename to doc/gui/input/taper.rst diff --git a/doc/salome/gui/SMESH/input/tools.rst b/doc/gui/input/tools.rst similarity index 100% rename from doc/salome/gui/SMESH/input/tools.rst rename to doc/gui/input/tools.rst diff --git a/doc/salome/gui/SMESH/input/translation.rst b/doc/gui/input/translation.rst similarity index 100% rename from doc/salome/gui/SMESH/input/translation.rst rename to doc/gui/input/translation.rst diff --git a/doc/salome/gui/SMESH/input/transparency.rst b/doc/gui/input/transparency.rst similarity index 100% rename from doc/salome/gui/SMESH/input/transparency.rst rename to doc/gui/input/transparency.rst diff --git a/doc/gui/input/tui_adaptation.rst b/doc/gui/input/tui_adaptation.rst new file mode 100644 index 000000000..b8ec68630 --- /dev/null +++ b/doc/gui/input/tui_adaptation.rst @@ -0,0 +1,33 @@ +.. _tui_adaptation_page: + +********** +Adaptation +********** + +.. _tui_homard_adapt: + +HOMARD +====== + +.. literalinclude:: ../../examples/test_uniform_refinement.py + :language: python + +:download:`Download this script <../../examples/test_uniform_refinement.py>` + +.. literalinclude:: ../../examples/test_homard_adapt.py + :language: python + +:download:`Download this script <../../examples/test_homard_adapt.py>` + +.. _tui_mg_adapt: + +MG_Adapt +======== + +.. literalinclude:: ../../examples/MGAdaptTests_without_session.py + :language: python + +:download:`Download this script <../../examples/MGAdaptTests_without_session.py>` + + +**See Also** the GUI :ref:`adaptation_page`. diff --git a/doc/gui/input/tui_creating_meshes.rst b/doc/gui/input/tui_creating_meshes.rst new file mode 100644 index 000000000..9d3cb5077 --- /dev/null +++ b/doc/gui/input/tui_creating_meshes.rst @@ -0,0 +1,109 @@ +.. _tui_creating_meshes_page: + +*************** +Creating Meshes +*************** + +.. contents:: `Table of contents` + + +First of all see :ref:`example_3d_mesh` which is an example of good python script style for Mesh module. + + +.. _construction_of_a_mesh: + +Construction of a mesh +====================== + +.. literalinclude:: ../../examples/creating_meshes_ex01.py + :language: python + +:download:`Download this script <../../examples/creating_meshes_ex01.py>` + +.. _tui_construction_submesh: + +Construction of a sub-mesh +========================== + +.. literalinclude:: ../../examples/creating_meshes_ex02.py + :language: python + +:download:`Download this script <../../examples/creating_meshes_ex02.py>` + +.. _change_priority_of_submeshes_in_mesh: + +Change priority of sub-meshes in mesh +===================================== + +.. literalinclude:: ../../examples/creating_meshes_ex03.py + :language: python + +:download:`Download this script <../../examples/creating_meshes_ex03.py>` + +.. _tui_editing_while_meshing: + +Intermediate edition while meshing +================================== + +.. literalinclude:: ../../examples/a3DmeshOnModified2Dmesh.py + :language: python + +:download:`Download this script <../../examples/a3DmeshOnModified2Dmesh.py>` + +.. _tui_editing_mesh: + +Editing a mesh (i.e. changing hypotheses) +========================================= + +.. literalinclude:: ../../examples/creating_meshes_ex04.py + :language: python + +:download:`Download this script <../../examples/creating_meshes_ex04.py>` + +.. _tui_export_mesh: + +Export of a Mesh +================ + +.. literalinclude:: ../../examples/creating_meshes_ex05.py + :language: python + +:download:`Download this script <../../examples/creating_meshes_ex05.py>` + +.. _how_to_mesh_a_cylinder_with_hexahedrons: + +How to mesh a cylinder with hexahedrons? +======================================== + +The next script creates a hexahedral mesh on a cylinder. A picture below the script +demonstrates the resulting mesh. + +.. literalinclude:: ../../examples/creating_meshes_ex06.py + :language: python + +:download:`Download this script <../../examples/creating_meshes_ex06.py>` + +.. image:: ../images/mesh_cylinder_hexa.png + :align: center + + +.. _tui_building_compound: + +Building a compound of meshes +============================= + +.. literalinclude:: ../../examples/creating_meshes_ex07.py + :language: python + +:download:`Download this script <../../examples/creating_meshes_ex07.py>` + +.. _tui_copy_mesh: + +Mesh Copying +============ + +.. literalinclude:: ../../examples/creating_meshes_ex08.py + :language: python + +:download:`Download this script <../../examples/creating_meshes_ex08.py>` + diff --git a/doc/gui/input/tui_defining_hypotheses.rst b/doc/gui/input/tui_defining_hypotheses.rst new file mode 100644 index 000000000..060888607 --- /dev/null +++ b/doc/gui/input/tui_defining_hypotheses.rst @@ -0,0 +1,330 @@ +.. _tui_defining_hypotheses_page: + +********************************** +Defining Hypotheses and Algorithms +********************************** + +This page provides example codes of :ref:`defining algorithms ` +and hypotheses. + +* Wire discretisation 1D algorithm + + * :ref:`tui_1d_adaptive` hypothesis + * :ref:`Arithmetic Progression ` hypothesis + * :ref:`Geometric Progression ` hypothesis + * :ref:`Deflection and Number of Segments ` hypotheses + * :ref:`Start and End Length ` hypothesis + * :ref:`tui_average_length` hypothesis + * :ref:`tui_propagation` additional hypotheses + * :ref:`Fixed Points 1D ` hypothesis + + +* Triangle: Mefisto 2D algorithm + + * :ref:`tui_max_element_area` hypothesis + * :ref:`tui_length_from_edges` hypothesis + +* Quadrangle: Mapping 2D algorithm + + * :ref:`Quadrangle Parameters ` hypothesis + +* :ref:`Radial Quadrangle 1D-2D ` algorithm +* NETGEN 3D algorithm + + * :ref:`tui_max_element_volume` hypothesis + * :ref:`Viscous layers ` hypotheses + +* Hexahedron (i,j,k) 3D algorithm + + * :ref:`tui_block_renumber` + +* :ref:`tui_projection` +* :ref:`Extrusion 3D ` algorithm +* :ref:`Radial Prism ` algorithm +* :ref:`Body Fitting ` algorithm +* :ref:`Import 1D-2D Elements from Another Mesh ` algorithm +* :ref:`Use Faces to be Created Manually ` algorithm +* :ref:`Segments around Vertex ` algorithm + + + +Defining 1D Hypotheses +###################### + +.. _tui_1d_arithmetic: + +Arithmetic Progression and Geometric Progression +================================================ + +.. literalinclude:: ../../examples/defining_hypotheses_ex01.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex01.py>` + +.. _tui_1d_adaptive: + +Adaptive +======== + +.. literalinclude:: ../../examples/defining_hypotheses_adaptive1d.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_adaptive1d.py>` + + +.. _tui_deflection_1d: + +Deflection and Number of Segments +================================= + +.. literalinclude:: ../../examples/defining_hypotheses_ex02.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex02.py>` + + +.. _tui_start_and_end_length: + +Start and End Length +==================== + +.. literalinclude:: ../../examples/defining_hypotheses_ex03.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex03.py>` + + +.. _tui_average_length: + +Local Length +============ + +.. literalinclude:: ../../examples/defining_hypotheses_ex04.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex04.py>` + +Defining 2D and 3D hypotheses +############################# + + +.. _tui_max_element_area: + +Maximum Element Area +==================== + +.. literalinclude:: ../../examples/defining_hypotheses_ex05.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex05.py>` + + +.. _tui_max_element_volume: + +Maximum Element Volume +====================== + +.. literalinclude:: ../../examples/defining_hypotheses_ex06.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex06.py>` + + +.. _tui_length_from_edges: + +Length from Edges +================= + +.. literalinclude:: ../../examples/defining_hypotheses_ex07.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex07.py>` + +.. _tui_block_renumber: + +Renumber 3D hypothesis +====================== + +.. literalinclude:: ../../examples/filters_ex39.py + :language: python + +:download:`Download this script <../../examples/filters_ex39.py>` + +Defining Additional Hypotheses +############################## + +.. _tui_propagation: + +Propagation +=========== + +.. literalinclude:: ../../examples/defining_hypotheses_ex08.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex08.py>` + + +.. _tui_defining_meshing_algos: + +Defining Meshing Algorithms +########################### + +.. literalinclude:: ../../examples/defining_hypotheses_ex09.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex09.py>` + + +.. _tui_projection: + +Projection Algorithms +===================== + +.. literalinclude:: ../../examples/defining_hypotheses_ex10.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex10.py>` + +Projection 1D2D +=============== + +.. literalinclude:: ../../examples/defining_hypotheses_ex11.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex11.py>` + +.. _tui_fixed_points: + +1D Mesh with Fixed Points example +################################# + +.. literalinclude:: ../../examples/defining_hypotheses_ex12.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex12.py>` + +.. _tui_radial_quadrangle: + +Radial Quadrangle 1D-2D example +############################### + +.. literalinclude:: ../../examples/defining_hypotheses_ex13.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex13.py>` + +.. _tui_quadrangle_parameters: + +Quadrangle Parameters example 1 (meshing a face with 3 edges) +############################################################## + +.. literalinclude:: ../../examples/defining_hypotheses_ex14.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex14.py>` + +Quadrangle Parameters example 2 (using different types) +####################################################### + +.. literalinclude:: ../../examples/defining_hypotheses_ex15.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex15.py>` + +.. _tui_import: + +"Import 1D-2D Elements from Another Mesh" example +################################################# + +.. literalinclude:: ../../examples/defining_hypotheses_ex16.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex16.py>` + +.. _tui_viscous_layers: + +Viscous layers construction +########################### + +.. literalinclude:: ../../examples/defining_hypotheses_ex17.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_ex17.py>` + +.. _tui_radial_prism: + +Radial Prism example +#################### + +.. literalinclude:: ../../examples/radial_prism_3d_algo.py + :language: python + +:download:`Download this script <../../examples/radial_prism_3d_algo.py>` + +.. _tui_cartesian_algo: + +Usage of Body Fitting algorithm +############################### + +.. literalinclude:: ../../examples/cartesian_algo.py + :language: python + +:download:`Download this script <../../examples/cartesian_algo.py>` + +.. _tui_use_existing_faces: + +Usage of "Use Faces to be Created Manually" algorithm +##################################################### + +This sample demonstrates how to use **Use Faces to be Created Manually** algorithm, +which is actually just a stub allowing to use your own 2D algorithm +implemented in Python. + +.. literalinclude:: ../../examples/use_existing_faces.py + :language: python + +:download:`Download this script <../../examples/use_existing_faces.py>` + +Resulting mesh: + +.. image:: ../images/use_existing_face_sample_mesh.png + :align: center + + +.. _tui_prism_3d_algo: + +Usage of Extrusion 3D meshing algorithm +######################################## + +.. literalinclude:: ../../examples/prism_3d_algo.py + :language: python + +:download:`Download this script <../../examples/prism_3d_algo.py>` + +The result geometry and mesh is shown below + +.. image:: ../images/prism_tui_sample.png + :align: center + + +.. _tui_quad_ma_proj_algo: + +Usage of Medial Axis Projection algorithm +######################################### + +.. literalinclude:: ../../examples/quad_medial_axis_algo.py + :language: python + +:download:`Download this script <../../examples/quad_medial_axis_algo.py>` + + +.. _tui_segments_around_vertex: + +Usage of Segments around Vertex algorithm +######################################### + +.. literalinclude:: ../../examples/defining_hypotheses_len_near_vertex.py + :language: python + +:download:`Download this script <../../examples/defining_hypotheses_len_near_vertex.py>` + diff --git a/doc/gui/input/tui_filters.rst b/doc/gui/input/tui_filters.rst new file mode 100644 index 000000000..0634328ae --- /dev/null +++ b/doc/gui/input/tui_filters.rst @@ -0,0 +1,749 @@ +.. _tui_filters_page: + +************* +Filters usage +************* + +Filters allow picking only the mesh elements satisfying to a +specific condition or a set of conditions. Filters can be used to create +or edit mesh groups, remove elements from the mesh, control +mesh quality by different parameters, etc. + +Several filtering criteria can be combined together by using logical +operators *AND* and *OR*. In addition, a filtering criterion can +be reverted using logical operator *NOT*. + +Mesh filters can use the functionality of mesh quality controls to filter +mesh nodes / elements by a specific characteristic (Area, Length, etc). + +This page provides a short description of the existing mesh filters, +describes required parameters and gives simple examples of usage in +Python scripts. + +**See also:** :ref:`tui_quality_controls_page` + +.. contents:: `Table of contents` + + +.. _filter_aspect_ratio: + +Aspect ratio +============ + +filters 2D mesh elements (faces) according to the aspect ratio value: + +* element type should be *SMESH.FACE* +* functor type should be *SMESH.FT_AspectRatio* +* threshold is floating point value (aspect ratio) + +.. literalinclude:: ../../examples/filters_ex01.py + :language: python + +:download:`Download this script <../../examples/filters_ex01.py>` + +**See also:** :ref:`tui_aspect_ratio` + +.. _filter_aspect_ratio_3d: + +Aspect ratio 3D +=============== + +filters 3D mesh elements (volumes) according to the aspect ratio value: + +* element type is *SMESH.VOLUME* +* functor type is *SMESH.FT_AspectRatio3D* +* threshold is floating point value (aspect ratio) + +.. literalinclude:: ../../examples/filters_ex02.py + :language: python + +:download:`Download this script <../../examples/filters_ex02.py>` + +**See also:** :ref:`tui_aspect_ratio_3d` + +.. _filter_warping_angle: + +Warping angle +============= + +filters 2D mesh elements (faces) according to the warping angle value: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_Warping* +* threshold is floating point value (warping angle) + +.. literalinclude:: ../../examples/filters_ex03.py + :language: python + +:download:`Download this script <../../examples/filters_ex03.py>` + +**See also:** :ref:`tui_warping` + +.. _filter_minimum_angle: + +Minimum angle +============= + +filters 2D mesh elements (faces) according to the minimum angle value: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_MinimumAngle* +* threshold is floating point value (minimum angle) + +.. literalinclude:: ../../examples/filters_ex04.py + :language: python + +:download:`Download this script <../../examples/filters_ex04.py>` + +**See also:** :ref:`tui_minimum_angle` + +.. _filter_taper: + +Taper +===== + +filters 2D mesh elements (faces) according to the taper value: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_Taper* +* threshold is floating point value (taper) + +.. literalinclude:: ../../examples/filters_ex05.py + :language: python + +:download:`Download this script <../../examples/filters_ex05.py>` + +**See also:** :ref:`tui_taper` + +.. _filter_skew: + +Skew +==== + +filters 2D mesh elements (faces) according to the skew value: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_Skew* +* threshold is floating point value (skew) + +.. literalinclude:: ../../examples/filters_ex06.py + :language: python + +:download:`Download this script <../../examples/filters_ex06.py>` + +**See also:** :ref:`tui_skew` + +.. _filter_area: + +Area +==== + +filters 2D mesh elements (faces) according to the area value: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_Area* +* threshold is floating point value (area) + +.. literalinclude:: ../../examples/filters_ex07.py + :language: python + +:download:`Download this script <../../examples/filters_ex07.py>` + +**See also:** :ref:`tui_area` + +.. _filter_volume: + +Volume +====== + +filters 3D mesh elements (volumes) according to the volume value: + +* element type is *SMESH.VOLUME* +* functor type is *SMESH.FT_Volume3D* +* threshold is floating point value (volume) + +.. literalinclude:: ../../examples/filters_ex08.py + :language: python + +:download:`Download this script <../../examples/filters_ex08.py>` + +**See also:** :ref:`tui_volume` + +.. _filter_free_borders: + +Free borders +============ + +filters 1D mesh elements (edges) which represent free borders of a mesh: + +* element type is *SMESH.EDGE* +* functor type is *SMESH.FT_FreeBorders* +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex09.py + :language: python + +:download:`Download this script <../../examples/filters_ex09.py>` + +**See also:** :ref:`tui_free_borders` + +.. _filter_free_edges: + +Free edges +========== + +filters 2D mesh elements (faces) having edges (i.e. links between +nodes, not mesh segments) belonging to one face of mesh only: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_FreeEdges* +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex10.py + :language: python + +:download:`Download this script <../../examples/filters_ex10.py>` + +**See also:** :ref:`tui_free_edges` + +.. _filter_free_nodes: + +Free nodes +========== + +filters free nodes: + +* element type is *SMESH.NODE* +* functor type is *SMESH.FT_FreeNodes* +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex11.py + :language: python + +:download:`Download this script <../../examples/filters_ex11.py>` + +**See also:** :ref:`tui_free_nodes` + +.. _filter_free_faces: + +Free faces +========== + +filters free faces: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_FreeFaces* +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex12.py + :language: python + +:download:`Download this script <../../examples/filters_ex12.py>` + +**See also:** :ref:`tui_free_faces` + +.. _filter_bare_border_faces: + +Bare border faces +================= + +filters faces with bare borders: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_BareBorderFace* +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex13.py + :language: python + +:download:`Download this script <../../examples/filters_ex13.py>` + +**See also:** :ref:`tui_bare_border_faces` + +.. _filter_coplanar_faces: + +Coplanar faces +============== + +filters coplanar faces: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_CoplanarFaces* +* threshold value is the face ID +* tolerance is in degrees + +.. literalinclude:: ../../examples/filters_ex14.py + :language: python + +:download:`Download this script <../../examples/filters_ex14.py>` + +.. _filter_over_constrained_faces: + +Over-constrained faces +====================== + +filters over-constrained faces: + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_OverConstrainedFace* +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex15.py + :language: python + +:download:`Download this script <../../examples/filters_ex15.py>` + +**See also:** :ref:`tui_over_constrained_faces` + +.. _filter_double_elements: + +Double edges, Double faces, Double volumes +########################################## + +filters mesh elements basing on the same set of nodes: + +* element type is either *SMESH.EDGE*, *SMESH.FACE* or *SMESH.VOLUME* +* functor type is either *SMESH.FT_EqualEdges*, *SMESH.FT_EqualFaces* or *SMESH.FT_EqualVolumes*, +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex16.py + :language: python + +:download:`Download this script <../../examples/filters_ex16.py>` + +.. _tui_double_nodes_control: + +Double nodes +============ + +filters mesh nodes which are coincident with other nodes (within a given tolerance): + +* element type is *SMESH.NODE* +* functor type is *SMESH.FT_EqualNodes* +* threshold value is not required +* default tolerance is 1.0e-7 + +.. literalinclude:: ../../examples/filters_ex17.py + :language: python + +:download:`Download this script <../../examples/filters_ex17.py>` + +.. _filter_node_nb_conn: + +Node connectivity number +======================== + +filters nodes according to a number of elements of highest dimension connected to a node: + +* element type should be *SMESH.NODE* +* functor type should be *SMESH.FT_NodeConnectivityNumber* +* threshold is an integer value (number of elements) + +.. literalinclude:: ../../examples/filters_node_nb_conn.py + :language: python + +:download:`Download this script <../../examples/filters_node_nb_conn.py>` + +.. _filter_borders_multiconnection: + +Borders at multi-connection +=========================== + +filters 1D mesh elements (segments) according to the specified number of +connections (faces and volumes on whose border the segment lies): + +* element type is *SMESH.EDGE* +* functor type is *SMESH.FT_MultiConnection* +* threshold is integer value (number of connections) + +.. literalinclude:: ../../examples/filters_ex18.py + :language: python + +:download:`Download this script <../../examples/filters_ex18.py>` + +**See also:** :ref:`tui_borders_at_multiconnection` + +.. _filter_borders_multiconnection_2d: + +Borders at multi-connection 2D +============================== + +filters 2D mesh elements (faces) with the specified maximal number of +faces connected to a border (link between nodes, not mesh segment): + +* element type is *SMESH.FACE* +* functor type is *SMESH.FT_MultiConnection2D* +* threshold is integer value (number of connections) + +.. literalinclude:: ../../examples/filters_ex19.py + :language: python + +:download:`Download this script <../../examples/filters_ex19.py>` + +**See also:** :ref:`tui_borders_at_multiconnection_2d` + +.. _filter_length: + +Length +====== + +filters 1D mesh elements (edges) according to the edge length value: + +* element type should be *SMESH.EDGE* +* functor type should be *SMESH.FT_Length* +* threshold is floating point value (length) + +.. literalinclude:: ../../examples/filters_ex20.py + :language: python + +:download:`Download this script <../../examples/filters_ex20.py>` + +**See also:** :ref:`tui_length_1d` + +.. _filter_length_2d: + +Length 2D +========= + +filters 2D mesh elements (faces) according to the maximum length of its +edges (links between nodes): + +* element type should be *SMESH.FACE* +* functor type should be *SMESH.FT_Length2D* +* threshold is floating point value (edge length) + +.. literalinclude:: ../../examples/filters_ex21.py + :language: python + +:download:`Download this script <../../examples/filters_ex21.py>` + +**See also:** :ref:`tui_length_2d` + +.. _filter_max_element_length_2d: + +Element Diameter 2D +=================== + +filters 2D mesh elements (faces) according to the maximum length +of its edges and diagonals: + +* element type should be *SMESH.FACE* +* functor type should be *SMESH.FT_MaxElementLength2D* +* threshold is floating point value (length) + +.. literalinclude:: ../../examples/filters_ex22.py + :language: python + +:download:`Download this script <../../examples/filters_ex22.py>` + +**See also:** :ref:`tui_max_element_length_2d` + +.. _filter_max_element_length_3d: + +Element Diameter 3D +=================== + +filters 3D mesh elements (volumes) according to the maximum length +of its edges and diagonals: + +* element type should be *SMESH.VOLUME* +* functor type should be *SMESH.FT_MaxElementLength3D* +* threshold is floating point value (edge/diagonal length) + +.. literalinclude:: ../../examples/filters_ex23.py + :language: python + +:download:`Download this script <../../examples/filters_ex23.py>` + +**See also:** :ref:`tui_max_element_length_3d` + +.. _filter_bare_border_volumes: + +Bare border volumes +=================== + +filters 3D mesh elements with bare borders, i.e. having a facet not +shared with other volumes and without a face on it: + +* element type is *SMESH.VOLUME* +* functor type is *SMESH.FT_BareBorderVolume* +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex24.py + :language: python + +:download:`Download this script <../../examples/filters_ex24.py>` + +**See also:** :ref:`tui_bare_border_volumes` + +.. _filter_over_constrained_volumes: + +Over-constrained volumes +======================== + +filters over-constrained volumes, whose all nodes are on the mesh boundary: + +* element type is *SMESH.VOLUME* +* functor type is *SMESH.FT_OverConstrainedVolume* +* threshold value is not required + +.. literalinclude:: ../../examples/filters_ex25.py + :language: python + +:download:`Download this script <../../examples/filters_ex25.py>` + +**See also:** :ref:`tui_over_constrained_faces` + +.. _filter_belong_to_group: + +Belong to Mesh Group +==================== + +filters mesh entities (nodes or elements) included in a mesh group +defined by threshold value: + +* element type can be any, from *SMESH.NODE* to *SMESH.BALL* +* functor type should be *SMESH.FT_BelongToMeshGroup* +* threshold is mesh group object + +.. literalinclude:: ../../examples/filters_belong2group.py + :language: python + +:download:`Download this script <../../examples/filters_belong2group.py>` + +.. _filter_belong_to_geom: + +Belong to Geom +============== + +filters mesh entities (nodes or elements) which all nodes lie on the +shape defined by threshold value: + +* element type can be any, from *SMESH.NODE* to *SMESH.BALL* +* functor type should be *SMESH.FT_BelongToGeom* +* threshold is geometrical object +* tolerance is a distance between a node and the geometrical object; it is used if an node is not associated to any geometry. + +.. literalinclude:: ../../examples/filters_ex26.py + :language: python + +:download:`Download this script <../../examples/filters_ex26.py>` + +.. _filter_lying_on_geom: + +Lying on Geom +============= + +filters mesh entities (nodes or elements) at least one node of which lies on the +shape defined by threshold value: + +* element type can be any, from *SMESH.NODE* to *SMESH.BALL* +* functor type should be *SMESH.FT_LyingOnGeom* +* threshold is geometrical object +* tolerance is a distance between a node and the geometrical object; + +it is used if an node is not associated to any geometry. + +.. literalinclude:: ../../examples/filters_ex27.py + :language: python + +:download:`Download this script <../../examples/filters_ex27.py>` + +.. _filter_belong_to_plane: + +Belong to Plane +=============== + +filters mesh entities (nodes or elements) which all nodes belong to the +plane defined by threshold value with the given tolerance: + +* element type can be any except *SMESH.VOLUME* +* functor type should be *SMESH.FT_BelongToPlane* +* threshold is geometrical object (plane) +* default tolerance is 1.0e-7 + +.. literalinclude:: ../../examples/filters_ex28.py + :language: python + +:download:`Download this script <../../examples/filters_ex28.py>` + +.. _filter_belong_to_cylinder: + +Belong to Cylinder +================== + +filters mesh entities (nodes or elements) which all nodes belong to the +cylindrical face defined by threshold value with the given tolerance: + +* element type can be any except *SMESH.VOLUME* +* functor type should be *SMESH.FT_BelongToCylinder* +* threshold is geometrical object (cylindrical face) +* default tolerance is 1.0e-7 + +.. literalinclude:: ../../examples/filters_ex29.py + :language: python + +:download:`Download this script <../../examples/filters_ex29.py>` + +.. _filter_belong_to_surface: + +Belong to Surface +================= + +filters mesh entities (nodes or elements) which all nodes belong to the +arbitrary surface defined by threshold value with the given tolerance: + +* element type can be any except *SMESH.VOLUME* +* functor type should be *SMESH.FT_BelongToGenSurface* +* threshold is geometrical object (arbitrary surface) +* default tolerance is 1.0e-7 + +.. literalinclude:: ../../examples/filters_ex30.py + :language: python + +:download:`Download this script <../../examples/filters_ex30.py>` + +.. _filter_range_of_ids: + +Range of IDs +============ + +filters mesh entities elements (nodes or elements) according to the +specified identifiers range: + +* element type can be any, from *SMESH.NODE* to *SMESH.BALL* +* functor type is *SMESH.FT_RangeOfIds* +* threshold is string listing required IDs and/or ranges of IDs, e.g."1,2,3,50-60,63,67,70-78" + +.. literalinclude:: ../../examples/filters_ex31.py + :language: python + +:download:`Download this script <../../examples/filters_ex31.py>` + +.. _filter_bad_oriented_volume: + +Badly oriented volume +===================== + +filters 3D mesh elements (volumes), which are incorrectly oriented from +the point of view of MED convention. + +* element type should be *SMESH.VOLUME* +* functor type is *SMESH.FT_BadOrientedVolume* +* threshold is not required + +.. literalinclude:: ../../examples/filters_ex32.py + :language: python + +:download:`Download this script <../../examples/filters_ex32.py>` + +.. _filter_linear_or_quadratic: + +Linear / quadratic +================== + +filters linear / quadratic mesh elements: + +* element type should be either *SMESH.EDGE*, *SMESH.FACE* or *SMESH.VOLUME* +* functor type is *SMESH.FT_LinearOrQuadratic* +* threshold is not required +* if unary operator is set to SMESH.FT_LogicalNOT, the quadratic elements are selected, otherwise (by default) linear elements are selected + +.. literalinclude:: ../../examples/filters_ex33.py + :language: python + +:download:`Download this script <../../examples/filters_ex33.py>` + +.. _filter_group_color: + +Group color +=========== + +filters mesh entities, belonging to the group with the color defined by the threshold value. + +* element type can be any, from *SMESH.NODE* to *SMESH.BALL* +* functor type is *SMESH.FT_GroupColor* +* threshold should be of SALOMEDS.Color type + +.. literalinclude:: ../../examples/filters_ex34.py + :language: python + +:download:`Download this script <../../examples/filters_ex34.py>` + +.. _filter_geom_type: + +Geometry type +============= + +filters mesh elements by the geometric type defined with the threshold +value. The list of available geometric types depends on the element +entity type. + +* element type can be any, e.g.: *SMESH.EDGE*, *SMESH.FACE*, *SMESH.VOLUME*, etc. +* functor type should be *SMESH.FT_ElemGeomType* +* threshold is either of smesh.GeometryType values. Type *SMESH.GeometryType._items* in the Python Console to see all geometric types. + +.. literalinclude:: ../../examples/filters_ex35.py + :language: python + +:download:`Download this script <../../examples/filters_ex35.py>` + +.. _filter_entity_type: + +Entity type +=========== + +filters mesh elements by the geometric type and number of nodes. + +* element type can be any, e.g.: *SMESH.EDGE*, *SMESH.FACE*, *SMESH.VOLUME*, etc. +* functor type should be *SMESH.FT_EntityType* +* threshold is either of SMESH.EntityType values. Type *SMESH.EntityType._items* in the Python Console to see all entity types. + +.. literalinclude:: ../../examples/filters_ex37.py + :language: python + +:download:`Download this script <../../examples/filters_ex37.py>` + +.. _filter_ball_diam: + +Ball diameter +============= + +filters ball elements by diameter. + +* element type should be *SMESH.BALL* +* functor type should be *SMESH.FT_BallDiameter* +* threshold is floating point value (ball diameter) + +.. literalinclude:: ../../examples/filters_ex38.py + :language: python + +:download:`Download this script <../../examples/filters_ex38.py>` + +.. _filter_domain: + +Elements of a domain +==================== + +filters elements of a specified domain. + +* element type can be any, e.g.: *SMESH.EDGE*, *SMESH.FACE*, *SMESH.VOLUME*, etc. +* functor type should be *SMESH.FT_ConnectedElements* +* threshold is either (1) node ID or (2) geometrical vertex or (3) 3 coordinates of a point. + +.. literalinclude:: ../../examples/filters_ex39.py + :language: python + +:download:`Download this script <../../examples/filters_ex39.py>` + +.. _combining_filters: + +How to combine several criteria into a filter? +============================================== + +Several criteria can be combined into a filter. + +.. literalinclude:: ../../examples/filters_ex36.py + :language: python + +:download:`Download this script <../../examples/filters_ex36.py>` diff --git a/doc/gui/input/tui_grouping_elements.rst b/doc/gui/input/tui_grouping_elements.rst new file mode 100644 index 000000000..90bd66b0b --- /dev/null +++ b/doc/gui/input/tui_grouping_elements.rst @@ -0,0 +1,121 @@ +***************** +Grouping Elements +***************** + +.. contents:: `Table of contents` + + +.. _tui_create_standalone_group: + +Create a Standalone Group +========================= + +.. literalinclude:: ../../examples/grouping_elements_ex01.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex01.py>` + +.. image:: ../images/create_group.png + :align: center + + +.. _tui_create_group_on_geometry: + +Create a Group on Geometry +========================== + +.. literalinclude:: ../../examples/grouping_elements_ex02.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex02.py>` + +.. _tui_create_group_on_filter: + +Create a Group on Filter +======================== + +.. literalinclude:: ../../examples/grouping_elements_ex03.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex03.py>` + +.. _tui_edit_group: + +Edit a Group +============ + +.. literalinclude:: ../../examples/grouping_elements_ex04.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex04.py>` + +.. image:: ../images/editing_groups1.png + :align: center + + +.. _tui_union_of_groups: + +Union of groups +=============== + +.. literalinclude:: ../../examples/grouping_elements_ex05.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex05.py>` + +.. image:: ../images/union_groups1.png + :align: center + + +.. _tui_intersection_of_groups: + +Intersection of groups +====================== + +.. literalinclude:: ../../examples/grouping_elements_ex06.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex06.py>` + +.. image:: ../images/intersect_groups1.png + :align: center + + +.. _tui_cut_of_groups: + +Cut of groups +============= + +.. literalinclude:: ../../examples/grouping_elements_ex07.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex07.py>` + +.. image:: ../images/cut_groups1.png + :align: center + + +.. _tui_create_dim_group: + +Creating groups of entities basing on nodes of other groups +=========================================================== + +.. literalinclude:: ../../examples/grouping_elements_ex08.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex08.py>` + +.. image:: ../images/dimgroup_tui1.png + :align: center + + +.. _tui_groups_by_sharp_edges: + +Creating face groups separated by sharp edges +============================================= + +.. literalinclude:: ../../examples/grouping_elements_ex09.py + :language: python + +:download:`Download this script <../../examples/grouping_elements_ex09.py>` + diff --git a/doc/gui/input/tui_measurements.rst b/doc/gui/input/tui_measurements.rst new file mode 100644 index 000000000..a891e2a39 --- /dev/null +++ b/doc/gui/input/tui_measurements.rst @@ -0,0 +1,43 @@ +.. _tui_measurements_page: + +************ +Measurements +************ + +.. _tui_min_distance: + +Minimum Distance +================ + +.. literalinclude:: ../../examples/measurements_ex01.py + :language: python + +:download:`Download this script <../../examples/measurements_ex01.py>` + +.. _tui_bounding_box: + +Bounding Box +============ + +.. literalinclude:: ../../examples/measurements_ex02.py + :language: python + +:download:`Download this script <../../examples/measurements_ex02.py>` + +.. _tui_basic_properties: + +Basic Properties +================ + +.. literalinclude:: ../../examples/measurements_ex03.py + :language: python + +:download:`Download this script <../../examples/measurements_ex03.py>` + +Angle +===== + +.. literalinclude:: ../../examples/measurements_ex04.py + :language: python + +:download:`Download this script <../../examples/measurements_ex04.py>` diff --git a/doc/gui/input/tui_modifying_meshes.rst b/doc/gui/input/tui_modifying_meshes.rst new file mode 100644 index 000000000..c8297eea8 --- /dev/null +++ b/doc/gui/input/tui_modifying_meshes.rst @@ -0,0 +1,338 @@ +.. _tui_modifying_meshes_page: + +**************** +Modifying Meshes +**************** + +.. contents:: `Table of contents` + + +.. _tui_adding_nodes_and_elements: + +Adding Nodes and Elements +========================= + +.. _tui_add_node: + +Add Node +******** + +.. literalinclude:: ../../examples/modifying_meshes_ex01.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex01.py>` + +.. _tui_add_0DElement: + +Add 0D Element +************** + +.. literalinclude:: ../../examples/modifying_meshes_ex02.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex02.py>` + +.. _tui_add_0DElement_on_all_nodes: + +Add 0D Element on Element Nodes +******************************* + +.. literalinclude:: ../../examples/modifying_meshes_ex03.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex03.py>` + +.. _tui_add_edge: + +Add Edge +******** + +.. literalinclude:: ../../examples/modifying_meshes_ex04.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex04.py>` + +.. _tui_add_triangle: + +Add Triangle +************ + +.. literalinclude:: ../../examples/modifying_meshes_ex05.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex05.py>` + +.. _tui_add_quadrangle: + +Add Quadrangle +************** + +.. literalinclude:: ../../examples/modifying_meshes_ex06.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex06.py>` + +.. _tui_add_tetrahedron: + +Add Tetrahedron +*************** + +.. literalinclude:: ../../examples/modifying_meshes_ex07.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex07.py>` + +.. _tui_add_hexahedron: + +Add Hexahedron +************** + +.. literalinclude:: ../../examples/modifying_meshes_ex08.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex08.py>` + +.. _tui_add_polygon: + +Add Polygon +*********** + +.. literalinclude:: ../../examples/modifying_meshes_ex09.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex09.py>` + +.. _tui_add_polyhedron: + +Add Polyhedron +************** + +.. literalinclude:: ../../examples/modifying_meshes_ex10.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex10.py>` + +.. _tui_removing_nodes_and_elements: + +Removing Nodes and Elements +=========================== + +.. _tui_removing_nodes: + +Removing Nodes +************** + +.. literalinclude:: ../../examples/modifying_meshes_ex11.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex11.py>` + +.. _tui_removing_elements: + +Removing Elements +***************** + +.. literalinclude:: ../../examples/modifying_meshes_ex12.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex12.py>` + +.. _tui_removing_orphan_nodes: + +Removing Orphan Nodes +********************* + +.. literalinclude:: ../../examples/modifying_meshes_ex13.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex13.py>` + +.. _tui_moving_nodes: + +Moving Nodes +============ + +.. literalinclude:: ../../examples/modifying_meshes_ex15.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex15.py>` + +.. _tui_diagonal_inversion: + +Diagonal Inversion +================== + +.. literalinclude:: ../../examples/modifying_meshes_ex16.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex16.py>` + +.. _tui_uniting_two_triangles: + +Uniting two Triangles +===================== + +.. literalinclude:: ../../examples/modifying_meshes_ex17.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex17.py>` + +.. _tui_uniting_set_of_triangles: + +Uniting a Set of Triangles +========================== + +.. literalinclude:: ../../examples/modifying_meshes_ex18.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex18.py>` + +.. _tui_orientation: + +Orientation +=========== + +.. literalinclude:: ../../examples/modifying_meshes_ex19.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex19.py>` + +.. _tui_cutting_quadrangles: + +Cutting Quadrangles +=================== + +.. literalinclude:: ../../examples/modifying_meshes_ex20.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex20.py>` + +.. _tui_cutting_triangles: + +Cutting Triangles +================= + +.. literalinclude:: ../../examples/modifying_meshes_cut_triangles.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_cut_triangles.py>` + +.. _modifying_meshes_split_vol: + +Split Volumes into Tetrahedra +============================= + +.. literalinclude:: ../../examples/modifying_meshes_split_vol.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_split_vol.py>` + +.. _tui_smoothing: + +Smoothing +========= + +.. literalinclude:: ../../examples/modifying_meshes_ex21.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex21.py>` + +.. _tui_extrusion: + +Extrusion +========= + +.. literalinclude:: ../../examples/modifying_meshes_ex22.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex22.py>` + +.. _tui_extrusion_along_path: + +Extrusion along a Path +====================== + +.. literalinclude:: ../../examples/modifying_meshes_ex23.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex23.py>` + +.. _tui_revolution: + +Revolution +========== + +.. literalinclude:: ../../examples/modifying_meshes_ex24.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex24.py>` + +.. _tui_pattern_mapping: + +Pattern Mapping +=============== + +.. literalinclude:: ../../examples/modifying_meshes_ex25.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex25.py>` + +.. _tui_quadratic: + +Convert mesh to/from quadratic +============================== + +.. literalinclude:: ../../examples/modifying_meshes_ex26.py + :language: python + +:download:`Download this script <../../examples/modifying_meshes_ex26.py>` + +.. _tui_split_biquad: + +Split bi-quadratic into linear +============================== + +.. literalinclude:: ../../examples/split_biquad.py + :language: python + +:download:`Download this script <../../examples/split_biquad.py>` + +.. _tui_double_nodes_on_group_boundaries: + +Double nodes on groups boundaries +================================= + +Double nodes on shared faces between groups of volumes and create flat elements on demand. + +The list of groups must contain at least two groups. The groups have to be disjoint: no common element into two different groups. + +The nodes of the internal faces at the boundaries of the groups are doubled. Optionally, the internal faces are replaced by flat elements. + +Triangles are transformed into prisms, and quadrangles into hexahedrons. + +The flat elements are stored in groups of volumes. + +These groups are named according to the position of the group in the list: +the group j_n_p is the group of the flat elements that are built between the group \#n and the group \#p in the list. +If there is no shared faces between the group \#n and the group \#p in the list, the group j_n_p is not created. +All the flat elements are gathered into the group named "joints3D" (or "joints2D" in 2D situation). +The flat element of the multiple junctions between the simple junction are stored in a group named "jointsMultiples". + +This example represents an iron cable (a thin cylinder) in a concrete block (a big cylinder). +The big cylinder is defined by two geometric volumes. + +.. literalinclude:: ../../examples/generate_flat_elements.py + :language: python + +:download:`Download this script <../../examples/generate_flat_elements.py>` + +Here, the 4 groups of volumes [Solid_1_1, Solid_2_1, Solid_3_1, Solid_4_1] constitute a partition of the mesh. +The flat elements on group boundaries and on faces are built with the +2 last lines of the code above. + +If the last argument (Boolean) in DoubleNodesOnGroupBoundaries is set to 1, +the flat elements are built, otherwise, there is only a duplication of the nodes. + +To observe flat element groups, save the resulting mesh on a MED file and reload it. + + diff --git a/doc/gui/input/tui_notebook_smesh.rst b/doc/gui/input/tui_notebook_smesh.rst new file mode 100644 index 000000000..7384e67b4 --- /dev/null +++ b/doc/gui/input/tui_notebook_smesh.rst @@ -0,0 +1,16 @@ +.. _tui_notebook_smesh_page: + + +********************* +Using SALOME NoteBook +********************* + +.. _tui_notebook_smesh: + +Notebook Smesh +============== + +.. literalinclude:: ../../examples/notebook_smesh.py + :language: python + +:download:`Download this script <../../examples/notebook_smesh.py>` diff --git a/doc/gui/input/tui_quality_controls.rst b/doc/gui/input/tui_quality_controls.rst new file mode 100644 index 000000000..5a331a1f4 --- /dev/null +++ b/doc/gui/input/tui_quality_controls.rst @@ -0,0 +1,242 @@ +.. _tui_quality_controls_page: + +**************** +Quality Controls +**************** + +.. contents:: `Table of contents` + + +.. _tui_free_borders: + +Free Borders +============ + +.. literalinclude:: ../../examples/quality_controls_ex01.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex01.py>` + + +.. _tui_borders_at_multiconnection: + +Borders at Multiconnection +========================== + +.. literalinclude:: ../../examples/quality_controls_ex02.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex02.py>` + + +.. _tui_length_1d: + +Length 1D +========= + +.. literalinclude:: ../../examples/quality_controls_ex03.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex03.py>` + +.. _tui_free_edges: + +Free Edges +========== + +.. literalinclude:: ../../examples/quality_controls_ex04.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex04.py>` + +.. _tui_free_nodes: + +Free Nodes +========== + +.. literalinclude:: ../../examples/quality_controls_ex05.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex05.py>` + +.. _tui_free_faces: + +Free Faces +========== + +.. literalinclude:: ../../examples/quality_controls_ex06.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex06.py>` + +.. _tui_bare_border_faces: + +Bare border faces +================= + +.. literalinclude:: ../../examples/quality_controls_ex07.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex07.py>` + +.. _tui_bare_border_volumes: + +Bare border volumes +=================== + +.. literalinclude:: ../../examples/quality_controls_ex08.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex08.py>` + +.. _tui_over_constrained_faces: + +Over-constrained faces +====================== + +.. literalinclude:: ../../examples/quality_controls_ex09.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex09.py>` + +.. _tui_over_constrained_volumes: + +Over-constrained volumes +======================== + +.. literalinclude:: ../../examples/quality_controls_ex10.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex10.py>` + +.. _tui_length_2d: + +Length 2D +========= + +.. literalinclude:: ../../examples/quality_controls_ex11.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex11.py>` + + +.. _tui_deflection_2d: + +Deflection 2D +============= + +.. literalinclude:: ../../examples/quality_controls_defl.py + :language: python + +:download:`Download this script <../../examples/quality_controls_defl.py>` + + +.. _tui_borders_at_multiconnection_2d: + +Borders at Multiconnection 2D +============================= + +.. literalinclude:: ../../examples/quality_controls_ex12.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex12.py>` + +.. _tui_area: + +Area +==== + +.. literalinclude:: ../../examples/quality_controls_ex13.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex13.py>` + +.. _tui_taper: + +Taper +===== + +.. literalinclude:: ../../examples/quality_controls_ex14.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex14.py>` + +.. _tui_aspect_ratio: + +Aspect Ratio +============ + +.. literalinclude:: ../../examples/quality_controls_ex15.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex15.py>` + +.. _tui_minimum_angle: + +Minimum Angle +============= + +.. literalinclude:: ../../examples/quality_controls_ex16.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex16.py>` + +.. _tui_warping: + +Warping +======= + +.. literalinclude:: ../../examples/quality_controls_ex17.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex17.py>` + +.. _tui_skew: + +Skew +==== + +.. literalinclude:: ../../examples/quality_controls_ex18.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex18.py>` + +.. _tui_max_element_length_2d: + +Element Diameter 2D +=================== + +.. literalinclude:: ../../examples/quality_controls_ex19.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex19.py>` + +.. _tui_aspect_ratio_3d: + +Aspect Ratio 3D +=============== + +.. literalinclude:: ../../examples/quality_controls_ex20.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex20.py>` + +.. _tui_volume: + +Volume +====== + +.. literalinclude:: ../../examples/quality_controls_ex21.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex21.py>` + +.. _tui_max_element_length_3d: + +Element Diameter 3D +=================== + +.. literalinclude:: ../../examples/quality_controls_ex22.py + :language: python + +:download:`Download this script <../../examples/quality_controls_ex22.py>` diff --git a/doc/gui/input/tui_transforming_meshes.rst b/doc/gui/input/tui_transforming_meshes.rst new file mode 100644 index 000000000..b1a09a1dc --- /dev/null +++ b/doc/gui/input/tui_transforming_meshes.rst @@ -0,0 +1,138 @@ +.. _tui_transforming_meshes_page: + +******************* +Transforming Meshes +******************* + +.. contents:: `Table of contents` + + +.. _tui_translation: + +Translation +=========== + +.. literalinclude:: ../../examples/transforming_meshes_ex01.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex01.py>` + +.. _tui_rotation: + +Rotation +======== + +.. literalinclude:: ../../examples/transforming_meshes_ex02.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex02.py>` + +.. _tui_scale: + +Scale +===== + +.. literalinclude:: ../../examples/transforming_meshes_ex03.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex03.py>` + +.. _tui_symmetry: + +Symmetry +======== + +.. literalinclude:: ../../examples/transforming_meshes_ex04.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex04.py>` + +.. _tui_merging_nodes: + +Merging Nodes +============= + +.. literalinclude:: ../../examples/transforming_meshes_ex05.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex05.py>` + +.. _tui_merging_elements: + +Merging Elements +================ + +.. literalinclude:: ../../examples/transforming_meshes_ex06.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex06.py>` + +.. _tui_sew_meshes_border_to_side: + +Sew Meshes Border to Side +========================= + +.. literalinclude:: ../../examples/transforming_meshes_ex07.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex07.py>` + +.. _tui_sew_conform_free_borders: + +Sew Conform Free Borders +======================== + +.. literalinclude:: ../../examples/transforming_meshes_ex08.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex08.py>` + +.. _tui_sew_free_borders: + +Sew Free Borders +================ + +.. literalinclude:: ../../examples/transforming_meshes_ex09.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex09.py>` + +.. _tui_sew_side_elements: + +Sew Side Elements +================= + +.. literalinclude:: ../../examples/transforming_meshes_ex10.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex10.py>` + +.. _tui_duplicate_nodes: + +Duplicate nodes or/and elements +=============================== + +.. literalinclude:: ../../examples/transforming_meshes_ex11.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex11.py>` + +.. _tui_make_2dmesh_from_3d: + +Create boundary elements +======================== + +.. literalinclude:: ../../examples/transforming_meshes_ex12.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex12.py>` + +.. _tui_reorient_faces: + +Reorient faces +============== + +.. literalinclude:: ../../examples/transforming_meshes_ex13.py + :language: python + +:download:`Download this script <../../examples/transforming_meshes_ex13.py>` diff --git a/doc/gui/input/tui_viewing_meshes.rst b/doc/gui/input/tui_viewing_meshes.rst new file mode 100644 index 000000000..984cee9d0 --- /dev/null +++ b/doc/gui/input/tui_viewing_meshes.rst @@ -0,0 +1,27 @@ + +.. _tui_viewing_meshes_page: + +************** +Viewing Meshes +************** + +.. _tui_viewing_mesh_infos: + +Viewing Mesh Infos +################## + +.. literalinclude:: ../../examples/viewing_meshes_ex01.py + :language: python + +:download:`Download this script <../../examples/viewing_meshes_ex01.py>` + +.. _tui_find_element_by_point: + + +Find Element by Point +##################### + +.. literalinclude:: ../../examples/viewing_meshes_ex02.py + :language: python + +:download:`Download this script <../../examples/viewing_meshes_ex02.py>` diff --git a/doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst b/doc/gui/input/tui_work_on_objects_from_gui.rst similarity index 100% rename from doc/salome/gui/SMESH/input/tui_work_on_objects_from_gui.rst rename to doc/gui/input/tui_work_on_objects_from_gui.rst diff --git a/doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst b/doc/gui/input/uniting_set_of_triangles.rst similarity index 100% rename from doc/salome/gui/SMESH/input/uniting_set_of_triangles.rst rename to doc/gui/input/uniting_set_of_triangles.rst diff --git a/doc/salome/gui/SMESH/input/uniting_two_triangles.rst b/doc/gui/input/uniting_two_triangles.rst similarity index 100% rename from doc/salome/gui/SMESH/input/uniting_two_triangles.rst rename to doc/gui/input/uniting_two_triangles.rst diff --git a/doc/salome/gui/SMESH/input/use_existing_algos.rst b/doc/gui/input/use_existing_algos.rst similarity index 100% rename from doc/salome/gui/SMESH/input/use_existing_algos.rst rename to doc/gui/input/use_existing_algos.rst diff --git a/doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst b/doc/gui/input/using_notebook_smesh_page.rst similarity index 100% rename from doc/salome/gui/SMESH/input/using_notebook_smesh_page.rst rename to doc/gui/input/using_notebook_smesh_page.rst diff --git a/doc/salome/gui/SMESH/input/using_operations_on_groups.rst b/doc/gui/input/using_operations_on_groups.rst similarity index 100% rename from doc/salome/gui/SMESH/input/using_operations_on_groups.rst rename to doc/gui/input/using_operations_on_groups.rst diff --git a/doc/salome/gui/SMESH/input/viewing_meshes_overview.rst b/doc/gui/input/viewing_meshes_overview.rst similarity index 100% rename from doc/salome/gui/SMESH/input/viewing_meshes_overview.rst rename to doc/gui/input/viewing_meshes_overview.rst diff --git a/doc/salome/gui/SMESH/input/volume.rst b/doc/gui/input/volume.rst similarity index 100% rename from doc/salome/gui/SMESH/input/volume.rst rename to doc/gui/input/volume.rst diff --git a/doc/salome/gui/SMESH/input/warping.rst b/doc/gui/input/warping.rst similarity index 100% rename from doc/salome/gui/SMESH/input/warping.rst rename to doc/gui/input/warping.rst diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/1d_meshing_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/1d_meshing_hypo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/1d_meshing_hypo.po rename to doc/gui/locale/fr/LC_MESSAGES/1d_meshing_hypo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/2d_meshing_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/2d_meshing_hypo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/2d_meshing_hypo.po rename to doc/gui/locale/fr/LC_MESSAGES/2d_meshing_hypo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_filters.po b/doc/gui/locale/fr/LC_MESSAGES/about_filters.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_filters.po rename to doc/gui/locale/fr/LC_MESSAGES/about_filters.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/about_hypo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_hypo.po rename to doc/gui/locale/fr/LC_MESSAGES/about_hypo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/about_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/about_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_quality_controls.po b/doc/gui/locale/fr/LC_MESSAGES/about_quality_controls.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/about_quality_controls.po rename to doc/gui/locale/fr/LC_MESSAGES/about_quality_controls.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po b/doc/gui/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/adding_nodes_and_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_quadratic_elements.po b/doc/gui/locale/fr/LC_MESSAGES/adding_quadratic_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/adding_quadratic_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/adding_quadratic_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/additional_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/additional_hypo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/additional_hypo.po rename to doc/gui/locale/fr/LC_MESSAGES/additional_hypo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/area.po b/doc/gui/locale/fr/LC_MESSAGES/area.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/area.po rename to doc/gui/locale/fr/LC_MESSAGES/area.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio.po b/doc/gui/locale/fr/LC_MESSAGES/aspect_ratio.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio.po rename to doc/gui/locale/fr/LC_MESSAGES/aspect_ratio.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio_3d.po b/doc/gui/locale/fr/LC_MESSAGES/aspect_ratio_3d.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/aspect_ratio_3d.po rename to doc/gui/locale/fr/LC_MESSAGES/aspect_ratio_3d.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_face.po b/doc/gui/locale/fr/LC_MESSAGES/bare_border_face.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_face.po rename to doc/gui/locale/fr/LC_MESSAGES/bare_border_face.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_volumes.po b/doc/gui/locale/fr/LC_MESSAGES/bare_border_volumes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/bare_border_volumes.po rename to doc/gui/locale/fr/LC_MESSAGES/bare_border_volumes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/basic_meshing_algos.po b/doc/gui/locale/fr/LC_MESSAGES/basic_meshing_algos.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/basic_meshing_algos.po rename to doc/gui/locale/fr/LC_MESSAGES/basic_meshing_algos.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection.po b/doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection.po rename to doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po b/doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po rename to doc/gui/locale/fr/LC_MESSAGES/borders_at_multi_connection_2d.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/building_compounds.po b/doc/gui/locale/fr/LC_MESSAGES/building_compounds.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/building_compounds.po rename to doc/gui/locale/fr/LC_MESSAGES/building_compounds.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cartesian_algo.po b/doc/gui/locale/fr/LC_MESSAGES/cartesian_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cartesian_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/cartesian_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po b/doc/gui/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/changing_orientation_of_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/clipping.po b/doc/gui/locale/fr/LC_MESSAGES/clipping.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/clipping.po rename to doc/gui/locale/fr/LC_MESSAGES/clipping.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/colors_size.po b/doc/gui/locale/fr/LC_MESSAGES/colors_size.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/colors_size.po rename to doc/gui/locale/fr/LC_MESSAGES/colors_size.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/connectivity.po b/doc/gui/locale/fr/LC_MESSAGES/connectivity.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/connectivity.po rename to doc/gui/locale/fr/LC_MESSAGES/connectivity.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/constructing_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/constructing_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_submeshes.po b/doc/gui/locale/fr/LC_MESSAGES/constructing_submeshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/constructing_submeshes.po rename to doc/gui/locale/fr/LC_MESSAGES/constructing_submeshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po b/doc/gui/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po rename to doc/gui/locale/fr/LC_MESSAGES/convert_to_from_quadratic_mesh.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/copy_mesh.po b/doc/gui/locale/fr/LC_MESSAGES/copy_mesh.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/copy_mesh.po rename to doc/gui/locale/fr/LC_MESSAGES/copy_mesh.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/create_groups_from_geometry.po b/doc/gui/locale/fr/LC_MESSAGES/create_groups_from_geometry.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/create_groups_from_geometry.po rename to doc/gui/locale/fr/LC_MESSAGES/create_groups_from_geometry.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/creating_groups.po b/doc/gui/locale/fr/LC_MESSAGES/creating_groups.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/creating_groups.po rename to doc/gui/locale/fr/LC_MESSAGES/creating_groups.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po b/doc/gui/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po rename to doc/gui/locale/fr/LC_MESSAGES/cut_mesh_by_plane.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cutting_quadrangles.po b/doc/gui/locale/fr/LC_MESSAGES/cutting_quadrangles.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/cutting_quadrangles.po rename to doc/gui/locale/fr/LC_MESSAGES/cutting_quadrangles.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/define_mesh_by_script.po b/doc/gui/locale/fr/LC_MESSAGES/define_mesh_by_script.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/define_mesh_by_script.po rename to doc/gui/locale/fr/LC_MESSAGES/define_mesh_by_script.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/deleting_groups.po b/doc/gui/locale/fr/LC_MESSAGES/deleting_groups.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/deleting_groups.po rename to doc/gui/locale/fr/LC_MESSAGES/deleting_groups.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po b/doc/gui/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/diagonal_inversion_of_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_entity.po b/doc/gui/locale/fr/LC_MESSAGES/display_entity.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_entity.po rename to doc/gui/locale/fr/LC_MESSAGES/display_entity.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_mode.po b/doc/gui/locale/fr/LC_MESSAGES/display_mode.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/display_mode.po rename to doc/gui/locale/fr/LC_MESSAGES/display_mode.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_elements_control.po b/doc/gui/locale/fr/LC_MESSAGES/double_elements_control.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_elements_control.po rename to doc/gui/locale/fr/LC_MESSAGES/double_elements_control.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_control.po b/doc/gui/locale/fr/LC_MESSAGES/double_nodes_control.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_control.po rename to doc/gui/locale/fr/LC_MESSAGES/double_nodes_control.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_page.po b/doc/gui/locale/fr/LC_MESSAGES/double_nodes_page.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/double_nodes_page.po rename to doc/gui/locale/fr/LC_MESSAGES/double_nodes_page.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_groups.po b/doc/gui/locale/fr/LC_MESSAGES/editing_groups.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_groups.po rename to doc/gui/locale/fr/LC_MESSAGES/editing_groups.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/editing_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/editing_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/editing_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion.po b/doc/gui/locale/fr/LC_MESSAGES/extrusion.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion.po rename to doc/gui/locale/fr/LC_MESSAGES/extrusion.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion_along_path.po b/doc/gui/locale/fr/LC_MESSAGES/extrusion_along_path.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/extrusion_along_path.po rename to doc/gui/locale/fr/LC_MESSAGES/extrusion_along_path.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/find_element_by_point.po b/doc/gui/locale/fr/LC_MESSAGES/find_element_by_point.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/find_element_by_point.po rename to doc/gui/locale/fr/LC_MESSAGES/find_element_by_point.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_borders.po b/doc/gui/locale/fr/LC_MESSAGES/free_borders.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_borders.po rename to doc/gui/locale/fr/LC_MESSAGES/free_borders.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_edges.po b/doc/gui/locale/fr/LC_MESSAGES/free_edges.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_edges.po rename to doc/gui/locale/fr/LC_MESSAGES/free_edges.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_faces.po b/doc/gui/locale/fr/LC_MESSAGES/free_faces.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_faces.po rename to doc/gui/locale/fr/LC_MESSAGES/free_faces.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_nodes.po b/doc/gui/locale/fr/LC_MESSAGES/free_nodes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/free_nodes.po rename to doc/gui/locale/fr/LC_MESSAGES/free_nodes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/generate_flat_elements.po b/doc/gui/locale/fr/LC_MESSAGES/generate_flat_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/generate_flat_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/generate_flat_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/group_of_underlying_elements.po b/doc/gui/locale/fr/LC_MESSAGES/group_of_underlying_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/group_of_underlying_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/group_of_underlying_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/grouping_elements.po b/doc/gui/locale/fr/LC_MESSAGES/grouping_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/grouping_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/grouping_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/importing_exporting_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/importing_exporting_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/importing_exporting_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/importing_exporting_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/index.po b/doc/gui/locale/fr/LC_MESSAGES/index.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/index.po rename to doc/gui/locale/fr/LC_MESSAGES/index.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/introduction.po b/doc/gui/locale/fr/LC_MESSAGES/introduction.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/introduction.po rename to doc/gui/locale/fr/LC_MESSAGES/introduction.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length.po b/doc/gui/locale/fr/LC_MESSAGES/length.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length.po rename to doc/gui/locale/fr/LC_MESSAGES/length.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length_2d.po b/doc/gui/locale/fr/LC_MESSAGES/length_2d.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/length_2d.po rename to doc/gui/locale/fr/LC_MESSAGES/length_2d.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po b/doc/gui/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po rename to doc/gui/locale/fr/LC_MESSAGES/make_2dmesh_from_3d.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_2d.po b/doc/gui/locale/fr/LC_MESSAGES/max_element_length_2d.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_2d.po rename to doc/gui/locale/fr/LC_MESSAGES/max_element_length_2d.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_3d.po b/doc/gui/locale/fr/LC_MESSAGES/max_element_length_3d.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_length_3d.po rename to doc/gui/locale/fr/LC_MESSAGES/max_element_length_3d.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_volume_hypo.po b/doc/gui/locale/fr/LC_MESSAGES/max_element_volume_hypo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/max_element_volume_hypo.po rename to doc/gui/locale/fr/LC_MESSAGES/max_element_volume_hypo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/measurements.po b/doc/gui/locale/fr/LC_MESSAGES/measurements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/measurements.po rename to doc/gui/locale/fr/LC_MESSAGES/measurements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_elements.po b/doc/gui/locale/fr/LC_MESSAGES/merging_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/merging_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_nodes.po b/doc/gui/locale/fr/LC_MESSAGES/merging_nodes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/merging_nodes.po rename to doc/gui/locale/fr/LC_MESSAGES/merging_nodes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_infos.po b/doc/gui/locale/fr/LC_MESSAGES/mesh_infos.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_infos.po rename to doc/gui/locale/fr/LC_MESSAGES/mesh_infos.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_preferences.po b/doc/gui/locale/fr/LC_MESSAGES/mesh_preferences.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_preferences.po rename to doc/gui/locale/fr/LC_MESSAGES/mesh_preferences.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_through_point.po b/doc/gui/locale/fr/LC_MESSAGES/mesh_through_point.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/mesh_through_point.po rename to doc/gui/locale/fr/LC_MESSAGES/mesh_through_point.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/minimum_angle.po b/doc/gui/locale/fr/LC_MESSAGES/minimum_angle.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/minimum_angle.po rename to doc/gui/locale/fr/LC_MESSAGES/minimum_angle.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modifying_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/modifying_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modifying_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/modifying_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modules.po b/doc/gui/locale/fr/LC_MESSAGES/modules.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/modules.po rename to doc/gui/locale/fr/LC_MESSAGES/modules.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/numbering.po b/doc/gui/locale/fr/LC_MESSAGES/numbering.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/numbering.po rename to doc/gui/locale/fr/LC_MESSAGES/numbering.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_faces.po b/doc/gui/locale/fr/LC_MESSAGES/over_constrained_faces.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_faces.po rename to doc/gui/locale/fr/LC_MESSAGES/over_constrained_faces.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_volumes.po b/doc/gui/locale/fr/LC_MESSAGES/over_constrained_volumes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/over_constrained_volumes.po rename to doc/gui/locale/fr/LC_MESSAGES/over_constrained_volumes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/pattern_mapping.po b/doc/gui/locale/fr/LC_MESSAGES/pattern_mapping.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/pattern_mapping.po rename to doc/gui/locale/fr/LC_MESSAGES/pattern_mapping.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/point_marker.po b/doc/gui/locale/fr/LC_MESSAGES/point_marker.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/point_marker.po rename to doc/gui/locale/fr/LC_MESSAGES/point_marker.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/prism_3d_algo.po b/doc/gui/locale/fr/LC_MESSAGES/prism_3d_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/prism_3d_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/prism_3d_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/projection_algos.po b/doc/gui/locale/fr/LC_MESSAGES/projection_algos.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/projection_algos.po rename to doc/gui/locale/fr/LC_MESSAGES/projection_algos.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/python_api.po b/doc/gui/locale/fr/LC_MESSAGES/python_api.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/python_api.po rename to doc/gui/locale/fr/LC_MESSAGES/python_api.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_from_ma_algo.po b/doc/gui/locale/fr/LC_MESSAGES/quad_from_ma_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_from_ma_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/quad_from_ma_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_ijk_algo.po b/doc/gui/locale/fr/LC_MESSAGES/quad_ijk_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/quad_ijk_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/quad_ijk_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_prism_algo.po b/doc/gui/locale/fr/LC_MESSAGES/radial_prism_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_prism_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/radial_prism_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po b/doc/gui/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/radial_quadrangle_1D2D_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po b/doc/gui/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/removing_nodes_and_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/reorient_faces.po b/doc/gui/locale/fr/LC_MESSAGES/reorient_faces.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/reorient_faces.po rename to doc/gui/locale/fr/LC_MESSAGES/reorient_faces.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/revolution.po b/doc/gui/locale/fr/LC_MESSAGES/revolution.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/revolution.po rename to doc/gui/locale/fr/LC_MESSAGES/revolution.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/rotation.po b/doc/gui/locale/fr/LC_MESSAGES/rotation.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/rotation.po rename to doc/gui/locale/fr/LC_MESSAGES/rotation.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scalar_bar.po b/doc/gui/locale/fr/LC_MESSAGES/scalar_bar.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scalar_bar.po rename to doc/gui/locale/fr/LC_MESSAGES/scalar_bar.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scale.po b/doc/gui/locale/fr/LC_MESSAGES/scale.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/scale.po rename to doc/gui/locale/fr/LC_MESSAGES/scale.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po b/doc/gui/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/segments_around_vertex_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/selection_filter_library.po b/doc/gui/locale/fr/LC_MESSAGES/selection_filter_library.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/selection_filter_library.po rename to doc/gui/locale/fr/LC_MESSAGES/selection_filter_library.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/sewing_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/sewing_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/sewing_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/sewing_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/skew.po b/doc/gui/locale/fr/LC_MESSAGES/skew.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/skew.po rename to doc/gui/locale/fr/LC_MESSAGES/skew.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smesh_migration.po b/doc/gui/locale/fr/LC_MESSAGES/smesh_migration.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smesh_migration.po rename to doc/gui/locale/fr/LC_MESSAGES/smesh_migration.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smeshpy_interface.po b/doc/gui/locale/fr/LC_MESSAGES/smeshpy_interface.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smeshpy_interface.po rename to doc/gui/locale/fr/LC_MESSAGES/smeshpy_interface.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smoothing.po b/doc/gui/locale/fr/LC_MESSAGES/smoothing.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/smoothing.po rename to doc/gui/locale/fr/LC_MESSAGES/smoothing.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_biquad_to_linear.po b/doc/gui/locale/fr/LC_MESSAGES/split_biquad_to_linear.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_biquad_to_linear.po rename to doc/gui/locale/fr/LC_MESSAGES/split_biquad_to_linear.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_to_tetra.po b/doc/gui/locale/fr/LC_MESSAGES/split_to_tetra.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/split_to_tetra.po rename to doc/gui/locale/fr/LC_MESSAGES/split_to_tetra.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/symmetry.po b/doc/gui/locale/fr/LC_MESSAGES/symmetry.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/symmetry.po rename to doc/gui/locale/fr/LC_MESSAGES/symmetry.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/taper.po b/doc/gui/locale/fr/LC_MESSAGES/taper.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/taper.po rename to doc/gui/locale/fr/LC_MESSAGES/taper.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tools.po b/doc/gui/locale/fr/LC_MESSAGES/tools.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tools.po rename to doc/gui/locale/fr/LC_MESSAGES/tools.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/translation.po b/doc/gui/locale/fr/LC_MESSAGES/translation.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/translation.po rename to doc/gui/locale/fr/LC_MESSAGES/translation.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/transparency.po b/doc/gui/locale/fr/LC_MESSAGES/transparency.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/transparency.po rename to doc/gui/locale/fr/LC_MESSAGES/transparency.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_cartesian_algo.po b/doc/gui/locale/fr/LC_MESSAGES/tui_cartesian_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_cartesian_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_cartesian_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_creating_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/tui_creating_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_creating_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_creating_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po b/doc/gui/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_defining_hypotheses.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_filters.po b/doc/gui/locale/fr/LC_MESSAGES/tui_filters.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_filters.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_filters.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po b/doc/gui/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_generate_flat_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_grouping_elements.po b/doc/gui/locale/fr/LC_MESSAGES/tui_grouping_elements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_grouping_elements.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_grouping_elements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_measurements.po b/doc/gui/locale/fr/LC_MESSAGES/tui_measurements.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_measurements.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_measurements.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_modifying_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/tui_modifying_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_modifying_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_modifying_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_notebook_smesh.po b/doc/gui/locale/fr/LC_MESSAGES/tui_notebook_smesh.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_notebook_smesh.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_notebook_smesh.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po b/doc/gui/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_prism_3d_algo.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_quality_controls.po b/doc/gui/locale/fr/LC_MESSAGES/tui_quality_controls.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_quality_controls.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_quality_controls.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_transforming_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/tui_transforming_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_transforming_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_transforming_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_use_existing_faces.po b/doc/gui/locale/fr/LC_MESSAGES/tui_use_existing_faces.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_use_existing_faces.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_use_existing_faces.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_viewing_meshes.po b/doc/gui/locale/fr/LC_MESSAGES/tui_viewing_meshes.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_viewing_meshes.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_viewing_meshes.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po b/doc/gui/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po rename to doc/gui/locale/fr/LC_MESSAGES/tui_work_on_objects_from_gui.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po b/doc/gui/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po rename to doc/gui/locale/fr/LC_MESSAGES/uniting_set_of_triangles.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_two_triangles.po b/doc/gui/locale/fr/LC_MESSAGES/uniting_two_triangles.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/uniting_two_triangles.po rename to doc/gui/locale/fr/LC_MESSAGES/uniting_two_triangles.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/use_existing_algos.po b/doc/gui/locale/fr/LC_MESSAGES/use_existing_algos.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/use_existing_algos.po rename to doc/gui/locale/fr/LC_MESSAGES/use_existing_algos.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po b/doc/gui/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po rename to doc/gui/locale/fr/LC_MESSAGES/using_notebook_smesh_page.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_operations_on_groups.po b/doc/gui/locale/fr/LC_MESSAGES/using_operations_on_groups.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/using_operations_on_groups.po rename to doc/gui/locale/fr/LC_MESSAGES/using_operations_on_groups.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/viewing_meshes_overview.po b/doc/gui/locale/fr/LC_MESSAGES/viewing_meshes_overview.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/viewing_meshes_overview.po rename to doc/gui/locale/fr/LC_MESSAGES/viewing_meshes_overview.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/volume.po b/doc/gui/locale/fr/LC_MESSAGES/volume.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/volume.po rename to doc/gui/locale/fr/LC_MESSAGES/volume.po diff --git a/doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/warping.po b/doc/gui/locale/fr/LC_MESSAGES/warping.po similarity index 100% rename from doc/salome/gui/SMESH/locale/fr/LC_MESSAGES/warping.po rename to doc/gui/locale/fr/LC_MESSAGES/warping.po diff --git a/doc/salome/gui/SMESH/merge_mesh_class.py b/doc/gui/merge_mesh_class.py similarity index 100% rename from doc/salome/gui/SMESH/merge_mesh_class.py rename to doc/gui/merge_mesh_class.py diff --git a/doc/salome/gui/SMESH/static/switchers.js.in b/doc/gui/static/switchers.js.in similarity index 100% rename from doc/salome/gui/SMESH/static/switchers.js.in rename to doc/gui/static/switchers.js.in diff --git a/doc/salome/gui/SMESH/templates/layout.html b/doc/gui/templates/layout.html similarity index 100% rename from doc/salome/gui/SMESH/templates/layout.html rename to doc/gui/templates/layout.html diff --git a/doc/salome/CMakeLists.txt b/doc/salome/CMakeLists.txt deleted file mode 100644 index 9427e0dfe..000000000 --- a/doc/salome/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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, or (at your option) any later version. -# -# 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 -# - -ADD_SUBDIRECTORY(tui) -ADD_SUBDIRECTORY(gui) -ADD_SUBDIRECTORY(examples) \ No newline at end of file diff --git a/doc/salome/examples/3dmesh.py b/doc/salome/examples/3dmesh.py deleted file mode 100644 index 0fdfcb68d..000000000 --- a/doc/salome/examples/3dmesh.py +++ /dev/null @@ -1,104 +0,0 @@ -# 3d mesh generation and mesh exploration - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -### -# Geometry: an assembly of a box, a cylinder and a truncated cone -# to be meshed with tetrahedra -### - -# Define values -name = "ex21_lamp" -cote = 60 -section = 20 -size = 200 -radius_1 = 80 -radius_2 = 40 -height = 100 - -# Build a box -box = geompy.MakeBox(-cote, -cote, -cote, +cote, +cote, +cote) - -# Build a cylinder -pt1 = geompy.MakeVertex(0, 0, cote/3) -di1 = geompy.MakeVectorDXDYDZ(0, 0, 1) -cyl = geompy.MakeCylinder(pt1, di1, section, size) - -# Build a truncated cone -pt2 = geompy.MakeVertex(0, 0, size) -cone = geompy.MakeCone(pt2, di1, radius_1, radius_2, height) - -# Fuse -box_cyl = geompy.MakeFuse(box, cyl) -piece = geompy.MakeFuse(box_cyl, cone) - -# Add to the study -geompy.addToStudy(piece, name) - -# Create a group of faces -faces_group = geompy.CreateGroup(piece, geompy.ShapeType["FACE"]) -group_name = name + "_grp" -geompy.addToStudy(faces_group, group_name) -faces_group.SetName(group_name) - -# Add faces to the group -faces = geompy.SubShapeAllIDs(piece, geompy.ShapeType["FACE"]) -geompy.UnionIDs(faces_group, faces) - -### -# Create a mesh -### - -# Define a mesh on a geometry -tetra = smesh.Mesh(piece, name) - -# Define 1D algorithm and hypothesis -algo1d = tetra.Segment() -algo1d.LocalLength(10) - -# Define 2D algorithm and hypothesis -algo2d = tetra.Triangle() -algo2d.LengthFromEdges() - -# Define 3D algorithm and hypothesis -algo3d = tetra.Tetrahedron() -algo3d.MaxElementVolume(100) - -# Compute the mesh -tetra.Compute() - -# Create a mesh group of all triangles generated on geom faces present in faces_group -group = tetra.Group(faces_group) - -### -# Explore the mesh -### - -# Retrieve coordinates of nodes -coordStr = "" -for node in tetra.GetNodesId(): - x,y,z = tetra.GetNodeXYZ( node ) - coordStr += "%s (%s, %s, %s) " % ( node, x,y,z ) - pass - -# Retrieve nodal connectivity of triangles -triaStr = "" -for tria in tetra.GetElementsByType( SMESH.FACE ): - nodes = tetra.GetElemNodes( tria ) - triaStr += "%s (%s, %s, %s) " % ( tria, nodes[0], nodes[1], nodes[2] ) - -# Retrieve group contents -groupStr = "" -for group in tetra.GetGroups(): - ids = group.GetIDs() - name = group.GetName() - eType = group.GetType() - groupStr += "'%s' %s: %s \n" % ( name, eType, ids ) - diff --git a/doc/salome/examples/CMakeLists.txt b/doc/salome/examples/CMakeLists.txt deleted file mode 100644 index 85f69be68..000000000 --- a/doc/salome/examples/CMakeLists.txt +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (C) 2012-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# 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, or (at your option) any later version. -# -# 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(tests.set) - -SET(TEST_REINIT_SALOME "False") -SET(TEST_INSTALL_DIRECTORY ${SALOME_INSTALL_SCRIPT_SCRIPTS}/test) - -SALOME_CONFIGURE_FILE(tests.py.in tests.py) -SALOME_CONFIGURE_FILE(CTestTestfileInstall.cmake ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CTestTestfile.cmake INSTALL ${TEST_INSTALL_DIRECTORY}) - -SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env) - -IF(SMESH_JOIN_TESTS) - ADD_TEST(NAME SMESH_examples COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/doc/salome/examples/testme.py tests.py) -ELSE(SMESH_JOIN_TESTS) - FOREACH(test ${GOOD_TESTS}) - GET_FILENAME_COMPONENT(testname ${test} NAME_WE) - ADD_TEST(NAME ${testname} - COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/doc/salome/examples/testme.py ${CMAKE_CURRENT_SOURCE_DIR}/${test}) - SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}") - ENDFOREACH() -ENDIF(SMESH_JOIN_TESTS) - -# install Python scripts -SALOME_INSTALL_SCRIPTS("${EXAMPLES_TESTS}" ${SALOME_INSTALL_DOC}/examples/SMESH) - -# Application tests - -INSTALL(FILES ${GOOD_TESTS} ${BAD_TESTS} ${SESSION_FREE_TESTS} DESTINATION ${TEST_INSTALL_DIRECTORY}) -INSTALL(FILES Mesh_tri.med test_homard_adapt.med tutorial_4.00.med tutorial_4.xao tutorial_5.00.med tutorial_5.fr.med DESTINATION ${TEST_INSTALL_DIRECTORY}) -INSTALL(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY}) -INSTALL(DIRECTORY MGAdapt_med_files DESTINATION ${TEST_INSTALL_DIRECTORY}) diff --git a/doc/salome/examples/CTestTestfileInstall.cmake b/doc/salome/examples/CTestTestfileInstall.cmake deleted file mode 100644 index 73cc4c7af..000000000 --- a/doc/salome/examples/CTestTestfileInstall.cmake +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2015-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# 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, or (at your option) any later version. -# -# 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 -# - -SET(MED_INT_IS_LONG @MED_INT_IS_LONG@) -SET(PYTHON_TEST_DRIVER "$ENV{KERNEL_ROOT_DIR}/bin/salome/appliskel/python_test_driver.py") -SET(COMPONENT_NAME SMESH) -SET(TIMEOUT 300) - -INCLUDE(tests.set) - -FOREACH(tfile ${GOOD_TESTS} ${BAD_TESTS}) - GET_FILENAME_COMPONENT(BASE_NAME ${tfile} NAME_WE) - SET(TEST_NAME SMESH_${BASE_NAME}) - ADD_TEST(${TEST_NAME} python ${PYTHON_TEST_DRIVER} ${TIMEOUT} ${tfile}) - SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}") -ENDFOREACH() - -foreach(tfile ${SESSION_FREE_TESTS}) - get_filename_component(BASE_NAME ${tfile} NAME_WE) - set(TEST_NAME SMESH_${BASE_NAME}) - add_test(${TEST_NAME} python ${tfile}) - set_tests_properties(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}") -endforeach() diff --git a/doc/salome/examples/MGAdaptTests_without_session.py b/doc/salome/examples/MGAdaptTests_without_session.py deleted file mode 100644 index 2f0621d70..000000000 --- a/doc/salome/examples/MGAdaptTests_without_session.py +++ /dev/null @@ -1,472 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -"""Tests des adaptations par MGAdapt en standalone - -Copyright 2021 EDF -Gérald NICOLAS -+33.1.78.19.43.52 -""" - -__revision__ = "V04.04" - -#========================= Les imports - Début =================================== - -import sys -import os -import salome - -salome.standalone() -salome.salome_init_without_session() - -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -#========================== Les imports - Fin ==================================== - -#========================= Paramétrage - Début =================================== -# 1. REPDATA = répertoire du cas -REPDATA = "MGAdapt_med_files" -# -# 2. Repérage des données -D_DATA = dict() -D_DATA["01"] = "01" # 2D plan ; carte locale -D_DATA["02"] = "02" # 2D plan ; carte en arrière-plan -D_DATA["03"] = "01" # 2D plan ; taille constante -D_DATA["04"] = "04" # 3D ; carte locale et dernier pas de temps -D_DATA["05"] = "04" # 3D ; carte locale et pas de temps n°1 -D_DATA["06"] = "06" # 2D non plan; carte locale -D_DATA["07"] = "07" # 2D plan ; carte locale anisotrope -D_DATA["08"] = "08" # 3D ; carte en arrière-plan anisotrope -D_DATA["10"] = "10" # 2D plan ; carte locale et maillage initial quadratique -D_DATA["11"] = "11" # 2D plan ; carte locale et maillage initial en quadrangles -D_DATA["13"] = "13" # 3D ; carte locale en simple précision et dernier pas de temps -#========================== Paramétrage - Fin ==================================== - -class MGAdaptTest (object): - - """Test de l'adaptation par MGAdapt - -Options facultatives -******************** -Le(s) nom du/des tests à passer. Si aucun n'est donné, tous les cas sont passés. - """ - -# A. La base - - message_info = "" - _verbose = 0 - _verbose_max = 0 - affiche_aide_globale = 0 - -# B. Les variables - - l_cas = None - rep_test = None - nro_cas = None - cas = None - -#=========================== Début de la méthode ================================= - - def __init__ ( self, liste_option ): - - """Le constructeur de la classe MGAdaptTest""" - - self.l_cas = list() - - for option in liste_option : - - #print (option) - saux = option.upper() - #print (saux) - if saux in ( "-H", "-HELP" ): - self.affiche_aide_globale = 1 - elif saux == "-V" : - self._verbose = 1 - elif saux == "-VMAX" : - self._verbose = 1 - self._verbose_max = 1 - else : - self.l_cas.append(option) - - if not self.l_cas: - for cle in D_DATA: - self.l_cas.append(cle) - self.l_cas.sort() - - if self._verbose_max: - print ("Liste des cas : {}".format(self.l_cas)) - -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def __del__(self): - """A la suppression de l'instance de classe""" - if self._verbose_max: - print ("Suppression de l'instance de la classe.") - -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def _add_file_in (self, objet_adapt): - """Ajout du fichier med d'entrée - -Entrées/Sorties : - :objet_adapt: l'objet du module - """ - if self._verbose_max: - print ("_add_file_in pour {}".format(self.nro_cas)) - - ficmed = os.path.join (REPDATA, "test_{}.med".format(D_DATA[self.nro_cas])) - if self._verbose_max: - print ("Fichier {}".format(ficmed)) - if not os.path.isfile(ficmed): - erreur = 1 - message = "Le fichier {} est inconnu.".format(ficmed) - else: - objet_adapt.setMEDFileIn(ficmed) - erreur = 0 - message = "" - - return erreur, message - -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def _add_file_out (self, objet_adapt): - """Ajout du fichier de sortie - -Entrées/Sorties : - :objet_adapt: l'objet du module - """ - if self._verbose_max: - print ("_add_file_out pour {}".format(self.nro_cas)) - - ficmed = os.path.join (REPDATA, "test_{}.adapt.tui.med".format(self.nro_cas)) - if os.path.isfile(ficmed): - os.remove(ficmed) - - objet_adapt.setMEDFileOut(ficmed) - - if self._verbose: - print (". Maillage adapté dans le fichier {}".format(ficmed)) - - return - -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def _add_file_bkg (self, objet_adapt): - """Ajout du fichier med de fond - -Entrées/Sorties : - :objet_adapt: l'objet du module - """ - if self._verbose_max: - print ("_add_file_bkg pour {}".format(self.nro_cas)) - - ficmed = os.path.join (REPDATA, "test_{}_bg.med".format(D_DATA[self.nro_cas])) - if self._verbose_max: - print ("Fichier {}".format(ficmed)) - if not os.path.isfile(ficmed): - erreur = 1 - message = "Le fichier {} est inconnu.".format(ficmed) - else: - objet_adapt.setMEDFileBackground(ficmed) - erreur = 0 - message = "" - - return erreur, message - -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def _hypo_creation (self, maptype, option, niveau=3): - """Création d'une hypothèse - -Entrées : - :maptype: type de carte : "Local", "Background", "Constant" - :option: nom du champ si "Local" ou "Background", valeur si "Constant" - :niveau: niveau de verbosité - -Sortie : - :hypo: l'objet hypothèse - """ - if self._verbose_max: - print ("_hypo_creation pour {} avec {}".format(maptype,option)) - - erreur = 0 - message = "" - - while not erreur : - - #--- Création de l'hypothèse --- - hypo = smesh.CreateAdaptationHypothesis() - - # Type de données - if ( maptype in ("Local", "Background", "Constant") ): - hypo.setSizeMapType(maptype) - else: - message = "Le type de carte {} est inconnu.".format(maptype) - erreur = 2 - break - - # Valeur - if ( maptype in ("Local", "Background") ): - hypo.setSizeMapFieldName(option) - else: - hypo.setConstantSize(option) - - # Verbosité - self._hypo_verbose (hypo, niveau) - - break - - return erreur, message, hypo -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def _hypo_verbose (self, hypo, niveau=10): - """Débogage des hypothèses - -Entrées : - :niveau: niveau de verbosité - -Entrées/Sorties : - :hypo: l'objet hypothèse - """ - - hypo.setVerbosityLevel(niveau) - - if self._verbose_max: - - hypo.setPrintLogInFile(True) - hypo.setKeepWorkingFiles(True) - hypo.setRemoveOnSuccess(False) - - return -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def _calcul (self, objet_adapt, hypo): - """Calcul - -Entrées : - :objet_adapt: l'objet du module - :hypo: l'objet hypothèse - """ - - #--- association de l'hypothese à l'objet de l'adaptation - objet_adapt.AddHypothesis(hypo) - - #-- Calcul - if self._verbose_max: - print (hypo.getCommandToRun()) - erreur = objet_adapt.Compute(False) - if erreur: - message = "Echec dans l'adaptation." - else: - message = "" - - return erreur, message - -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def _test_00 (self, objet_adapt): - """Test générique - -Entrées/Sorties : - :objet_adapt: l'objet du module - """ - - erreur = 0 - message = "" - - while not erreur : - - #--- les fichiers MED ---# - erreur, message = self._add_file_in (objet_adapt) - if erreur: - break - self._add_file_out (objet_adapt) - if self.nro_cas in ("02", "08"): - erreur, message = self._add_file_bkg (objet_adapt) - if erreur: - break - - #--- Création de l'hypothèse --- - if self.nro_cas in ("01", "04", "05", "06", "07", "10", "11", "13"): - maptype = "Local" - if self.nro_cas in ("01", "04", "05", "06", "07", "10"): - option = "TAILLE" - elif self.nro_cas in ("11",): - option = "Taille de maille" - elif self.nro_cas in ("13",): - option = "Elevation" - elif self.nro_cas in ("02", "08"): - maptype = "Background" - option = "TAILLE" - elif self.nro_cas in ("03",): - maptype = "Constant" - option = 0.5 - - if self._verbose: - niveau = 3 - elif self._verbose_max: - niveau = 10 - else: - niveau = 0 - erreur, message, hypo = self._hypo_creation(maptype, option, niveau) - if erreur: - break - - #-- Ajout des options - if self.nro_cas in ("04", "06", "07", "08", "10", "11"): - hypo.setTimeStepRankLast() - elif self.nro_cas in ("05",): - hypo.setTimeStepRank(1,1) - elif self.nro_cas in ("13",): - hypo.setTimeStepRank(0,0) - - # options facultatives - if self.nro_cas in ("03",): - hypo.setOptionValue("adaptation", "surface") - - #-- Calcul - try : - erreur, message = self._calcul (objet_adapt, hypo) - except : - erreur = 1871 - message = "Erreur dans le calcul par SMESH" - - break - - return erreur, message - -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def _traitement_cas (self ): - """Traitement d'un cas - - -Sorties : - :erreur: code d'erreur - :message: message d'erreur - """ - - nom_fonction = __name__ + "/_traitement_cas" - blabla = "\nDans {} :".format(nom_fonction) - - if self._verbose_max: - print (blabla) - -# 1. Préalables - - erreur = 0 - message = "" - if self._verbose: - print ("Passage du cas '{}'".format(self.nro_cas)) - - if ( self.nro_cas in ("01", "02", "03", "04", "05", "06", "07", "08", "10" ,"11" ,"13") ): - objet_adapt = smesh.Adaptation('MG_Adapt') - erreur, message = self._test_00 (objet_adapt) - del objet_adapt - - else: - erreur = 1 - message = "Le cas '{}' est inconnu.".format(self.nro_cas) - - return erreur, message - -#=========================== Fin de la méthode ================================== - -#=========================== Début de la méthode ================================= - - def lancement (self): - - """Lancement - -Sorties : - :erreur: code d'erreur - :message: message d'erreur - """ - - nom_fonction = __name__ + "/lancement" - blabla = "\nDans {} :".format(nom_fonction) - - erreur = 0 - message = "" - - if self._verbose_max: - print (blabla) - - for nom_cas in self.l_cas: - self.nro_cas = nom_cas - erreur_t, message_t = self._traitement_cas () - if erreur_t: - erreur += 1 - message += "\nErreur n° {} pour le cas {} :\n".format(erreur_t,nom_cas) - message += message_t - - if ( erreur and self._verbose_max ): - print (blabla, message) - - return erreur, message - -#=========================== Fin de la méthode ================================== - -#========================== Fin de la classe ==================================== - -#================================================================================== -# Lancement -#================================================================================== - -if __name__ == "__main__" : - -# 1. Options - - L_OPTIONS = list() - #L_OPTIONS.append("-h") - #L_OPTIONS.append("-v") - #L_OPTIONS.append("-vmax") - L_OPTIONS.append("01") - L_OPTIONS.append("02") - L_OPTIONS.append("03") - L_OPTIONS.append("07") - L_OPTIONS.append("10") - L_OPTIONS.append("11") - L_OPTIONS.append("04") - L_OPTIONS.append("05") - L_OPTIONS.append("06") - L_OPTIONS.append("08") - L_OPTIONS.append("13") - -# 2. Lancement de la classe - - #print ("L_OPTIONS :", L_OPTIONS) - MGADAPT_TEST = MGAdaptTest(L_OPTIONS) - if MGADAPT_TEST.affiche_aide_globale: - sys.stdout.write(MGADAPT_TEST.__doc__+"\n") - else: - ERREUR, MESSAGE_ERREUR = MGADAPT_TEST.lancement() - if ERREUR: - sys.stdout.write(MGADAPT_TEST.__doc__+"\n") - MESSAGE_ERREUR += "\n {} erreur(s)\n".format(ERREUR) - sys.stderr.write(MESSAGE_ERREUR) - #raise Exception(MESSAGE_ERREUR) - assert(False) - - del MGADAPT_TEST - - #sys.exit(0) diff --git a/doc/salome/examples/cartesian_algo.py b/doc/salome/examples/cartesian_algo.py deleted file mode 100644 index da86cf423..000000000 --- a/doc/salome/examples/cartesian_algo.py +++ /dev/null @@ -1,111 +0,0 @@ -# Usage of Body Fitting algorithm - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - - -# create a sphere -sphere = geompy.MakeSphereR( 50 ) - -# cut the sphere by a box -box = geompy.MakeBoxDXDYDZ( 100, 100, 100 ) -partition = geompy.MakePartition([ sphere ], [ box ], theName="partition") - -# create a mesh and assign a "Body Fitting" algo -mesh = smesh.Mesh( partition ) -cartAlgo = mesh.BodyFitted() - -# define a cartesian grid using Coordinates -coords = list(range(-100,100,10)) -cartHyp = cartAlgo.SetGrid( coords,coords,coords, 1000000) - -# compute the mesh -mesh.Compute() -print("nb hexahedra",mesh.NbHexas()) -print("nb tetrahedra",mesh.NbTetras()) -print("nb polyhedra",mesh.NbPolyhedrons()) -print() - -# define the grid by setting constant spacing -cartHyp = cartAlgo.SetGrid( "10","10","10", 1000000) - -mesh.Compute() -print("nb hexahedra",mesh.NbHexas()) -print("nb tetrahedra",mesh.NbTetras()) -print("nb polyhedra",mesh.NbPolyhedrons()) -print("nb faces",mesh.NbFaces()) -print() - -# activate creation of faces -cartHyp.SetToCreateFaces( True ) - -mesh.Compute() -print("nb hexahedra",mesh.NbHexas()) -print("nb tetrahedra",mesh.NbTetras()) -print("nb polyhedra",mesh.NbPolyhedrons()) -print("nb faces",mesh.NbFaces()) -print() - -# enable consideration of shared faces -cartHyp.SetToConsiderInternalFaces( True ) -mesh.Compute() -print("nb hexahedra",mesh.NbHexas()) -print("nb tetrahedra",mesh.NbTetras()) -print("nb polyhedra",mesh.NbPolyhedrons()) -print("nb faces",mesh.NbFaces()) -print() - -# define the grid by setting different spacing in 2 sub-ranges of geometry -spaceFuns = ["5","10+10*t"] -cartAlgo.SetGrid( [spaceFuns, [0.5]], [spaceFuns, [0.5]], [spaceFuns, [0.25]], 10 ) - -mesh.Compute() -print("nb hexahedra",mesh.NbHexas()) -print("nb tetrahedra",mesh.NbTetras()) -print("nb polyhedra",mesh.NbPolyhedrons()) -print() - -# Example of customization of dirtections of the grid axes - -# make a box with non-orthogonal edges -xDir = geompy.MakeVectorDXDYDZ( 1.0, 0.1, 0.0, "xDir" ) -yDir = geompy.MakeVectorDXDYDZ(-0.1, 1.0, 0.0, "yDir" ) -zDir = geompy.MakeVectorDXDYDZ( 0.2, 0.3, 1.0, "zDir" ) -face = geompy.MakePrismVecH( xDir, yDir, 1.0 ) -box = geompy.MakePrismVecH( face, zDir, 1.0, theName="box" ) - -spc = "0.1" # spacing - -# default axes -mesh = smesh.Mesh( box, "custom axes") -algo = mesh.BodyFitted() -algo.SetGrid( spc, spc, spc, 10000 ) -mesh.Compute() -print("Default axes") -print(" nb hex:",mesh.NbHexas()) - -# set axes using edges of the box -algo.SetAxesDirs( xDir, [-0.1,1,0], zDir ) -mesh.Compute() -print("Manual axes") -print(" nb hex:",mesh.NbHexas()) - -# set optimal orthogonal axes -algo.SetOptimalAxesDirs( isOrthogonal=True ) -mesh.Compute() -print("Optimal orthogonal axes") -print(" nb hex:",mesh.NbHexas()) - -# set optimal non-orthogonal axes -algo.SetOptimalAxesDirs( isOrthogonal=False ) -mesh.Compute() -print("Optimal non-orthogonal axes") -print(" nb hex:",mesh.NbHexas()) diff --git a/doc/salome/examples/creating_meshes_ex01.py b/doc/salome/examples/creating_meshes_ex01.py deleted file mode 100644 index ba8563d6d..000000000 --- a/doc/salome/examples/creating_meshes_ex01.py +++ /dev/null @@ -1,35 +0,0 @@ -# Construction of a Mesh - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box, "box") - -# create a mesh -tetra = smesh.Mesh(box, "MeshBox") - -algo1D = tetra.Segment() -algo1D.NumberOfSegments(7) - -algo2D = tetra.Triangle() -algo2D.MaxElementArea(800.) - -algo3D = tetra.Tetrahedron() -algo3D.MaxElementVolume(900.) - -# compute the mesh -ret = tetra.Compute() -if ret == 0: - print("problem when computing the mesh") -else: - print("mesh computed") - pass diff --git a/doc/salome/examples/creating_meshes_ex02.py b/doc/salome/examples/creating_meshes_ex02.py deleted file mode 100644 index 8a8966a3f..000000000 --- a/doc/salome/examples/creating_meshes_ex02.py +++ /dev/null @@ -1,66 +0,0 @@ -# Construction of a Sub-mesh - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBoxDXDYDZ(10., 10., 10.) -geompy.addToStudy(box, "Box") - -# select one edge of the box for definition of a local hypothesis -p5 = geompy.MakeVertex(5., 0., 0.) -EdgeX = geompy.GetEdgeNearPoint(box, p5) -geompy.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") - -# create a hexahedral mesh on the box -mesh = smesh.Mesh(box, "Box : hexahedral 3D mesh") - -# create a Regular_1D algorithm for discretization of edges -algo1D = mesh.Segment() - -# define "NumberOfSegments" hypothesis to cut -# all the edges in a fixed number of segments -algo1D.NumberOfSegments(4) - -# create a quadrangle 2D algorithm for the faces -mesh.Quadrangle() - -# construct a sub-mesh on the edge with a local Regular_1D algorithm -algo_local = mesh.Segment(EdgeX) - -# define "Arithmetic1D" hypothesis to cut EdgeX in several segments with length arithmetically -# increasing from 1.0 to 4.0 -algo_local.Arithmetic1D(1, 4) - -# define "Propagation" hypothesis that propagates algo_local and "Arithmetic1D" hypothesis -# from EdgeX to all parallel edges -algo_local.Propagation() - -# assign a hexahedral algorithm -mesh.Hexahedron() - - -# any sub-shape can be meshed individually -- -# compute mesh on two surfaces using different methods - -# get surfaces -surfaces = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) - -# method 1: no sub-mesh is created -mesh.Compute( surfaces[0] ) - -# method 2: a sub-mesh is created -submesh = mesh.GetSubMesh( surfaces[2], "submesh 2" ) -submesh.Compute() - - - -# compute the whole mesh -mesh.Compute() diff --git a/doc/salome/examples/creating_meshes_ex03.py b/doc/salome/examples/creating_meshes_ex03.py deleted file mode 100644 index fc20d3660..000000000 --- a/doc/salome/examples/creating_meshes_ex03.py +++ /dev/null @@ -1,59 +0,0 @@ -# Change priority of sub-meshes in Mesh - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) -[Face_1,Face_2,Face_3,Face_4,Face_5,Face_6] = geompy.SubShapeAllSorted(Box_1, geompy.ShapeType["FACE"]) - -# create Mesh object on Box shape -Mesh_1 = smesh.Mesh(Box_1) - -# assign mesh algorithms and hypotheses -Regular_1D = Mesh_1.Segment() -Nb_Segments_1 = Regular_1D.NumberOfSegments(20) -MEFISTO_2D = Mesh_1.Triangle() -Max_Element_Area_1 = MEFISTO_2D.MaxElementArea(1200) -Tetrahedron = Mesh_1.Tetrahedron() -Max_Element_Volume_1 = Tetrahedron.MaxElementVolume(40000) - -# create sub-mesh and assign algorithms on Face_1 -Regular_1D_1 = Mesh_1.Segment(geom=Face_1) -Nb_Segments_2 = Regular_1D_1.NumberOfSegments(4) -MEFISTO_2D_1 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_1) -SubMesh_1 = MEFISTO_2D_1.GetSubMesh() - -# create sub-mesh and assign algorithms on Face_2 -Regular_1D_2 = Mesh_1.Segment(geom=Face_2) -Nb_Segments_3 = Regular_1D_2.NumberOfSegments(8) -MEFISTO_2D_2 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_2) -SubMesh_2 = MEFISTO_2D_2.GetSubMesh() - -# create sub-mesh and assign algorithms on Face_3 -Regular_1D_3 = Mesh_1.Segment(geom=Face_3) -Nb_Segments_4 = Regular_1D_3.NumberOfSegments(12) -MEFISTO_2D_3 = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO,geom=Face_3) -SubMesh_3 = MEFISTO_2D_3.GetSubMesh() - -# check existing sub-mesh priority order -[ [ SubMesh_1, SubMesh_3, SubMesh_2 ] ] = Mesh_1.GetMeshOrder() -isDone = Mesh_1.Compute() -print("Nb elements at initial order of sub-meshes:", Mesh_1.NbElements()) - -# set new sub-mesh order -isDone = Mesh_1.SetMeshOrder( [ [ SubMesh_1, SubMesh_2, SubMesh_3 ] ]) -# compute mesh -isDone = Mesh_1.Compute() -print("Nb elements at new order of sub-meshes:", Mesh_1.NbElements()) - -# compute with other sub-mesh order -isDone = Mesh_1.SetMeshOrder( [ [ SubMesh_2, SubMesh_1, SubMesh_3 ] ]) -isDone = Mesh_1.Compute() -print("Nb elements at another order of sub-meshes:", Mesh_1.NbElements()) diff --git a/doc/salome/examples/creating_meshes_ex04.py b/doc/salome/examples/creating_meshes_ex04.py deleted file mode 100644 index 7101a0226..000000000 --- a/doc/salome/examples/creating_meshes_ex04.py +++ /dev/null @@ -1,60 +0,0 @@ -# Editing of a mesh - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -def PrintMeshInfo(theMesh): - aMesh = theMesh.GetMesh() - print("Information about mesh:") - print("Number of nodes : ", aMesh.NbNodes()) - print("Number of edges : ", aMesh.NbEdges()) - print("Number of faces : ", aMesh.NbFaces()) - print("Number of volumes : ", aMesh.NbVolumes()) - pass - -# create a box -box = geompy.MakeBox(0., 0., 0., 20., 20., 20.) -geompy.addToStudy(box, "box") - -# select one edge of the box for definition of a local hypothesis -subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"]) -edge = subShapeList[0] -name = geompy.SubShapeName(edge, box) -geompy.addToStudyInFather(box, edge, name) - -# create a mesh -tria = smesh.Mesh(box, "Mesh 2D") -algo1D = tria.Segment() -hyp1 = algo1D.NumberOfSegments(3) -algo2D = tria.Triangle() -hyp2 = algo2D.MaxElementArea(10.) - -# create a sub-mesh -algo_local = tria.Segment(edge) -hyp3 = algo_local.Arithmetic1D(1, 6) -hyp4 = algo_local.Propagation() - -# compute the mesh -tria.Compute() -PrintMeshInfo(tria) - -# remove a local hypothesis -tria.RemoveHypothesis(hyp4, edge) - -# compute the mesh -tria.Compute() -PrintMeshInfo(tria) - -# change the value of the 2D hypothesis -hyp2.SetMaxElementArea(2.) - -# compute the mesh -tria.Compute() -PrintMeshInfo(tria) diff --git a/doc/salome/examples/creating_meshes_ex05.py b/doc/salome/examples/creating_meshes_ex05.py deleted file mode 100644 index 725c7e953..000000000 --- a/doc/salome/examples/creating_meshes_ex05.py +++ /dev/null @@ -1,58 +0,0 @@ -# Export of a Mesh - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box, "box") - -# create a mesh -tetra = smesh.Mesh(box, "MeshBox") -tetra.Segment().NumberOfSegments(7) -tetra.Triangle() -tetra.Tetrahedron() - -# compute the mesh -tetra.Compute() - -# export the mesh in a MED file -import tempfile -medFile = tempfile.NamedTemporaryFile(suffix=".med").name -tetra.ExportMED( medFile, 0 ) - -# export a group in a MED file -face = geompy.SubShapeAll( box, geompy.ShapeType["FACE"])[0] # a box side -group = tetra.GroupOnGeom( face, "face group" ) # group of 2D elements on the -tetra.ExportMED( medFile, meshPart=group ) - -# ======================== -# autoDimension parameter -# ======================== - -face = geompy.MakeFaceHW( 10, 10, 1, "rectangle" ) -mesh2D = smesh.Mesh( face, "mesh2D" ) -mesh2D.AutomaticHexahedralization(0) - -import MEDLoader, os - -# exported mesh is in 2D space because it is a planar mesh lying -# on XOY plane, and autoDimension=True by default -mesh2D.ExportMED( medFile ) -medMesh = MEDLoader.ReadUMeshFromFile(medFile,mesh2D.GetName(),0) -print("autoDimension==True, exported mesh is in %sD"%medMesh.getSpaceDimension()) - -# exported mesh is in 3D space, same as in Mesh module, -# thanks to autoDimension=False -mesh2D.ExportMED( medFile, autoDimension=False ) -medMesh = MEDLoader.ReadUMeshFromFile(medFile,mesh2D.GetName(),0) -print("autoDimension==False, exported mesh is in %sD"%medMesh.getSpaceDimension()) - -os.remove( medFile ) diff --git a/doc/salome/examples/creating_meshes_ex06.py b/doc/salome/examples/creating_meshes_ex06.py deleted file mode 100644 index 60360e14b..000000000 --- a/doc/salome/examples/creating_meshes_ex06.py +++ /dev/null @@ -1,120 +0,0 @@ -# Creating a hexahedral mesh on a cylinder. -# -# This example uses Partition to divide the cylinder into blocks, which is -# a general approach. But for the case of cylinder there is a dedicated -# command creating a blocked cylinder: geompy.MakeDividedCylinder() - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -import math - -# Parameters -# ---------- - -radius = 50 -height = 200 - -# Build a cylinder -# ---------------- - -base = geompy.MakeVertex(0, 0, 0) -direction = geompy.MakeVectorDXDYDZ(0, 0, 1) - -cylinder = geompy.MakeCylinder(base, direction, radius, height) - -geompy.addToStudy(cylinder, "cylinder") - -# Build blocks -# ------------ - -size = radius/2.0 - -box_rot = geompy.MakeBox(-size, -size, 0, +size, +size, height) -box_axis = geompy.MakeLine(base, direction) -box = geompy.MakeRotation(box_rot, box_axis, math.pi/4) - -hole = geompy.MakeCut(cylinder, box) - -plane_trim = 2000 - -plane_a = geompy.MakePlane(base, geompy.MakeVectorDXDYDZ(1, 0, 0), plane_trim) -plane_b = geompy.MakePlane(base, geompy.MakeVectorDXDYDZ(0, 1, 0), plane_trim) - -blocks_part = geompy.MakePartition([hole], [plane_a, plane_b], [], [], geompy.ShapeType["SOLID"]) -blocks_list = [box] + geompy.SubShapeAll(blocks_part, geompy.ShapeType["SOLID"]) -blocks_all = geompy.MakeCompound(blocks_list) -blocks = geompy.MakeGlueFaces(blocks_all, 0.0001) - -geompy.addToStudy(blocks, "cylinder:blocks") - -# Build geometric groups -# ---------------------- - -group_a = geompy.CreateGroup(blocks, geompy.ShapeType["FACE"]) -geompy.addToStudyInFather(blocks, group_a, "baseA") -items = geompy.GetShapesOnPlaneWithLocationIDs(blocks, geompy.ShapeType["FACE"], direction, base, GEOM.ST_ON) -geompy.UnionIDs(group_a, items) - -base_b = geompy.MakeVertex(0, 0, height) -group_b = geompy.CreateGroup(blocks, geompy.ShapeType["FACE"]) -geompy.addToStudyInFather(blocks, group_b, "baseB") -items = geompy.GetShapesOnPlaneWithLocationIDs(blocks, geompy.ShapeType["FACE"], direction, base_b, GEOM.ST_ON) -geompy.UnionIDs(group_b, items) - -group_1 = geompy.CreateGroup(blocks, geompy.ShapeType["SOLID"]) -geompy.addToStudyInFather(blocks, group_1, "limit") -group_1_all = geompy.SubShapeAllIDs(blocks, geompy.ShapeType["SOLID"]) -geompy.UnionIDs(group_1, group_1_all) -group_1_box = geompy.GetBlockNearPoint(blocks, base) -geompy.DifferenceList(group_1, [group_1_box]) - -# Mesh the blocks with hexahedral -# ------------------------------- - -smesh.UpdateStudy() - -hexa = smesh.Mesh(blocks) - -hexa_1d = hexa.Segment() -hexa_1d.NumberOfSegments(1) - -vertex = geompy.MakeVertex(+radius, +radius, 0) -edge = geompy.GetEdgeNearPoint(blocks, vertex) -algo = hexa.Segment(edge) -algo.NumberOfSegments(5) -algo.Propagation() - -vertex = geompy.MakeVertex(-radius, +radius, 0) -edge = geompy.GetEdgeNearPoint(blocks, vertex) -algo = hexa.Segment(edge) -algo.NumberOfSegments(8) -algo.Propagation() - -vertex = geompy.MakeVertex((radius+size)/2, 0, 0) -edge = geompy.GetEdgeNearPoint(blocks, vertex) -algo = hexa.Segment(edge) -algo.NumberOfSegments(10) -algo.Propagation() - -vertex = geompy.MakeVertex(+radius, 0, height/2) -edge = geompy.GetEdgeNearPoint(blocks, vertex) -algo = hexa.Segment(edge) -algo.NumberOfSegments(20) -algo.Propagation() - -hexa.Quadrangle() -hexa.Hexahedron() - -hexa.Compute() - -hexa.Group(group_a) -hexa.Group(group_b) -hexa.Group(group_1) diff --git a/doc/salome/examples/creating_meshes_ex07.py b/doc/salome/examples/creating_meshes_ex07.py deleted file mode 100644 index f18109cda..000000000 --- a/doc/salome/examples/creating_meshes_ex07.py +++ /dev/null @@ -1,85 +0,0 @@ -# Building a compound of meshes - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -## create a bottom box -Box_inf = geompy.MakeBox(0., 0., 0., 200., 200., 50.) - -# get a top face -Psup1=geompy.MakeVertex(100., 100., 50.) -Fsup1=geompy.GetFaceNearPoint(Box_inf, Psup1) -# get a bottom face -Pinf1=geompy.MakeVertex(100., 100., 0.) -Finf1=geompy.GetFaceNearPoint(Box_inf, Pinf1) - -## create a top box -Box_sup = geompy.MakeBox(100., 100., 50., 200., 200., 100.) - -# get a top face -Psup2=geompy.MakeVertex(150., 150., 100.) -Fsup2=geompy.GetFaceNearPoint(Box_sup, Psup2) -# get a bottom face -Pinf2=geompy.MakeVertex(150., 150., 50.) -Finf2=geompy.GetFaceNearPoint(Box_sup, Pinf2) - -## Publish in the study -geompy.addToStudy(Box_inf, "Box_inf") -geompy.addToStudyInFather(Box_inf, Fsup1, "Fsup") -geompy.addToStudyInFather(Box_inf, Finf1, "Finf") - -geompy.addToStudy(Box_sup, "Box_sup") -geompy.addToStudyInFather(Box_sup, Fsup2, "Fsup") -geompy.addToStudyInFather(Box_sup, Finf2, "Finf") - -smesh.UpdateStudy() - -## create a bottom mesh -Mesh_inf = smesh.Mesh(Box_inf, "Mesh_inf") -algo1D_1=Mesh_inf.Segment() -algo1D_1.NumberOfSegments(10) -algo2D_1=Mesh_inf.Quadrangle() -algo3D_1=Mesh_inf.Hexahedron() -Mesh_inf.Compute() - -# create a group on the top face -Gsup1=Mesh_inf.Group(Fsup1, "Sup") -# create a group on the bottom face -Ginf1=Mesh_inf.Group(Finf1, "Inf") - -## create a top mesh -Mesh_sup = smesh.Mesh(Box_sup, "Mesh_sup") -algo1D_2=Mesh_sup.Segment() -algo1D_2.NumberOfSegments(5) -algo2D_2=Mesh_sup.Quadrangle() -algo3D_2=Mesh_sup.Hexahedron() -Mesh_sup.Compute() - -# create a group on the top face -Gsup2=Mesh_sup.Group(Fsup2, "Sup") -# create a group on the bottom face -Ginf2=Mesh_sup.Group(Finf2, "Inf") - -## create compounds -# create a compound of two meshes with renaming namesake groups and -# merging elements with the given tolerance -Compound1 = smesh.Concatenate([Mesh_inf, Mesh_sup], 0, 1, 1e-05, - name='Compound with RenamedGrps and MergeElems') -# create a compound of two meshes with uniting namesake groups and -# creating groups of all elements -Compound2 = smesh.Concatenate([Mesh_inf, Mesh_sup], 1, 0, 1e-05, True, - name='Compound with UniteGrps and GrpsOfAllElems') - -# copy Gsup1 into a separate mesh and translate it -groupMesh = Mesh_inf.TranslateObjectMakeMesh( Gsup1, [300,0,0] ) - -# add Ginf2 to groupMesh -smesh.Concatenate([Ginf2], False, meshToAppendTo = groupMesh ) - - -if salome.sg.hasDesktop(): - salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/creating_meshes_ex08.py b/doc/salome/examples/creating_meshes_ex08.py deleted file mode 100644 index 2f506fa2b..000000000 --- a/doc/salome/examples/creating_meshes_ex08.py +++ /dev/null @@ -1,59 +0,0 @@ -# Mesh Copying - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# make geometry of a box -box = geompy.MakeBoxDXDYDZ(100,100,100) -face = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"])[0] - -# generate a prismatic 3D mesh -mesh = smesh.Mesh(box, "box") -localAlgo = mesh.Triangle(face) -mesh.Segment().NumberOfSegments( 3 ) -mesh.Quadrangle() -mesh.Prism() -mesh.Compute() - -# objects to copy -fGroup = mesh.GroupOnGeom( face, "2D on face") -nGroup = mesh.GroupOnGeom( face, "nodes on face", SMESH.NODE) -subMesh = localAlgo.GetSubMesh() - -# make a new mesh by copying different parts of the mesh - -# 1. copy the whole mesh -newMesh = smesh.CopyMesh( mesh, "whole mesh copy") - -# 2. copy a group of 2D elements along with groups -newMesh = smesh.CopyMesh( fGroup, "face group copy with groups",toCopyGroups=True) - -# 3. copy a group of nodes -newMesh = smesh.CopyMesh( nGroup, "node group copy") - -# 4. copy some faces -faceIds = fGroup.GetIDs()[-10:] -newMesh = smesh.CopyMesh( mesh.GetIDSource( faceIds, SMESH.FACE ), "some faces copy") - -# 5. copy some nodes -nodeIds = nGroup.GetIDs()[-10:] -newMesh = smesh.CopyMesh( mesh.GetIDSource( nodeIds, SMESH.NODE), "some nodes copy") - -# 6. copy a sub-mesh -newMesh = smesh.CopyMesh( subMesh, "sub-mesh copy" ) - - -# make a new mesh with same hypotheses on a modified geometry - -smallBox = geompy.MakeScaleAlongAxes( box, None, 1, 0.5, 0.5 ) -cutBox = geompy.MakeCut( box, smallBox, theName="box - smallBox" ) - -ok, newMesh, groups, submehses, hyps, invIDs = smesh.CopyMeshWithGeom( mesh, cutBox, "cutBox" ) -newMesh.Compute() diff --git a/doc/salome/examples/defining_hypotheses_adaptive1d.py b/doc/salome/examples/defining_hypotheses_adaptive1d.py deleted file mode 100644 index 48d927daa..000000000 --- a/doc/salome/examples/defining_hypotheses_adaptive1d.py +++ /dev/null @@ -1,30 +0,0 @@ -import salome, math -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - - -box = geompy.MakeBoxDXDYDZ( 100, 100, 100 ) -tool = geompy.MakeTranslation( box, 50, 0, 10 ) -axis = geompy.MakeVector( geompy.MakeVertex( 100, 0, 100 ),geompy.MakeVertex( 100, 10, 100 ),) -tool = geompy.Rotate( tool, axis, math.pi * 25 / 180. ) -shape = geompy.MakeCut( box, tool ) -cyl = geompy.MakeCylinder( geompy.MakeVertex( -10,5, 95 ), geompy.MakeVectorDXDYDZ(1,0,0), 2, 90) -shape = geompy.MakeCut( shape, cyl ) -tool = geompy.MakeBoxTwoPnt( geompy.MakeVertex( -10, 2, 15 ), geompy.MakeVertex( 90, 5, 16 )) -shape = geompy.MakeCut( shape, tool, theName="shape" ) - -# Parameters of Adaptive hypothesis. minSize and maxSize are such that they do not limit -# size of segments because size of geometrical features lies within [2.-100.] range, hence -# size of segments is defined by deflection parameter and size of geometrical features only. -minSize = 0.1 -maxSize = 200 -deflection = 0.05 - -mesh = smesh.Mesh( shape ) -mesh.Segment().Adaptive( minSize, maxSize, deflection ) -mesh.Triangle().MaxElementArea( 300 ) -mesh.Compute() - diff --git a/doc/salome/examples/defining_hypotheses_ex01.py b/doc/salome/examples/defining_hypotheses_ex01.py deleted file mode 100644 index 0a2401d52..000000000 --- a/doc/salome/examples/defining_hypotheses_ex01.py +++ /dev/null @@ -1,44 +0,0 @@ -# Arithmetic Progression and Geometric Progression - -import salome -salome.salome_init_without_session() - -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBoxDXDYDZ(10., 10., 10.) -geompy.addToStudy(box, "Box") - -# create a hexahedral mesh on the box -hexa = smesh.Mesh(box, "Box : hexahedrical mesh") - -# create a Regular 1D algorithm for edges -algo1D = hexa.Segment() - -# optionally reverse node distribution on certain edges -allEdges = geompy.SubShapeAllSorted( box, geompy.ShapeType["EDGE"]) -reversedEdges = [ allEdges[0], allEdges[4] ] - -# define "Arithmetic1D" hypothesis to cut all edges in several segments with increasing arithmetic length -algo1D.Arithmetic1D(1, 4, reversedEdges) - -# define "Geometric Progression" hypothesis on one edge to cut this edge in segments with length increasing by 20% starting from 1 -gpAlgo = hexa.Segment( allEdges[1] ) -gpAlgo.GeometricProgression( 1, 1.2 ) - -# propagate distribution of nodes computed using "Geometric Progression" to parallel edges -gpAlgo.PropagationOfDistribution() - - -# create a quadrangle 2D algorithm for faces -hexa.Quadrangle() - -# create a hexahedron 3D algorithm for solids -hexa.Hexahedron() - -# compute the mesh -hexa.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex02.py b/doc/salome/examples/defining_hypotheses_ex02.py deleted file mode 100644 index c5a5ce205..000000000 --- a/doc/salome/examples/defining_hypotheses_ex02.py +++ /dev/null @@ -1,47 +0,0 @@ -# Deflection and Number of Segments - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a face from arc and straight segment -px = geompy.MakeVertex(100., 0. , 0. ) -py = geompy.MakeVertex(0. , 100., 0. ) -pz = geompy.MakeVertex(0. , 0. , 100.) - -exy = geompy.MakeEdge(px, py) -arc = geompy.MakeArc(py, pz, px) - -wire = geompy.MakeWire([exy, arc]) - -isPlanarFace = 1 -face1 = geompy.MakeFace(wire, isPlanarFace) -geompy.addToStudy(face1,"Face1") - -# get edges from the face -e_straight,e_arc = geompy.SubShapeAll(face1, geompy.ShapeType["EDGE"]) -geompy.addToStudyInFather(face1, e_arc, "Arc Edge") - -# create hexahedral mesh -hexa = smesh.Mesh(face1, "Face : triangle mesh") - -# define "NumberOfSegments" hypothesis to cut a straight edge in a fixed number of segments -algo1D = hexa.Segment() -algo1D.NumberOfSegments(6) - -# define "MaxElementArea" hypothesis -algo2D = hexa.Triangle() -algo2D.MaxElementArea(70.0) - -# define a local "Deflection1D" hypothesis on the arc -algo_local = hexa.Segment(e_arc) -algo_local.Deflection1D(1.0) - -# compute the mesh -hexa.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex03.py b/doc/salome/examples/defining_hypotheses_ex03.py deleted file mode 100644 index 14af89e19..000000000 --- a/doc/salome/examples/defining_hypotheses_ex03.py +++ /dev/null @@ -1,44 +0,0 @@ -# Start and End Length - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBoxDXDYDZ(10., 10., 10.) -geompy.addToStudy(box, "Box") - -# get one edge of the box to put local hypothesis on -p5 = geompy.MakeVertex(5., 0., 0.) -EdgeX = geompy.GetEdgeNearPoint(box, p5) -geompy.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") - -# create a hexahedral mesh on the box -hexa = smesh.Mesh(box, "Box : hexahedrical mesh") - -# set algorithms -algo1D = hexa.Segment() -hexa.Quadrangle() -hexa.Hexahedron() - -# define "NumberOfSegments" hypothesis to cut an edge in a fixed number of segments -algo1D.NumberOfSegments(4) - -# create a local hypothesis -algo_local = hexa.Segment(EdgeX) - -# define "StartEndLength" hypothesis to cut an edge in several segments with increasing geometric length -algo_local.StartEndLength(1, 6) - -# define "Propagation" hypothesis that propagates all other hypothesis -# on all edges on the opposite side in case of quadrangular faces -algo_local.Propagation() - -# compute the mesh -hexa.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex04.py b/doc/salome/examples/defining_hypotheses_ex04.py deleted file mode 100644 index bb38eeb9d..000000000 --- a/doc/salome/examples/defining_hypotheses_ex04.py +++ /dev/null @@ -1,44 +0,0 @@ -# Local Length - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBoxDXDYDZ(10., 10., 10.) -geompy.addToStudy(box, "Box") - -# get one edge of the box to put local hypothesis on -p5 = geompy.MakeVertex(5., 0., 0.) -EdgeX = geompy.GetEdgeNearPoint(box, p5) -geompy.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") - -# create a hexahedral mesh on the box -hexa = smesh.Mesh(box, "Box : hexahedrical mesh") - -# set algorithms -algo1D = hexa.Segment() -hexa.Quadrangle() -hexa.Hexahedron() - -# define "NumberOfSegments" hypothesis to cut all edges in a fixed number of segments -algo1D.NumberOfSegments(4) - -# create a sub-mesh -algo_local = hexa.Segment(EdgeX) - -# define "LocalLength" hypothesis to cut an edge in several segments with the same length -algo_local.LocalLength(2.) - -# define "Propagation" hypothesis that propagates all other hypothesis -# on all edges on the opposite side in case of quadrangular faces -algo_local.Propagation() - -# compute the mesh -hexa.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex05.py b/doc/salome/examples/defining_hypotheses_ex05.py deleted file mode 100644 index 25fe5429f..000000000 --- a/doc/salome/examples/defining_hypotheses_ex05.py +++ /dev/null @@ -1,44 +0,0 @@ -# Maximum Element Area - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a face -px = geompy.MakeVertex(100., 0. , 0. ) -py = geompy.MakeVertex(0. , 100., 0. ) -pz = geompy.MakeVertex(0. , 0. , 100.) - -vxy = geompy.MakeVector(px, py) -arc = geompy.MakeArc(py, pz, px) -wire = geompy.MakeWire([vxy, arc]) - -isPlanarFace = 1 -face = geompy.MakeFace(wire, isPlanarFace) - -# add the face in the study -id_face = geompy.addToStudy(face, "Face to be meshed") - -# create a mesh -tria_mesh = smesh.Mesh(face, "Face : triangulation") - -# define 1D meshing: -algo = tria_mesh.Segment() -algo.NumberOfSegments(20) - -# define 2D meshing: - -# assign triangulation algorithm -algo = tria_mesh.Triangle() - -# assign "Max Element Area" hypothesis -algo.MaxElementArea(100) - -# compute the mesh -tria_mesh.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex06.py b/doc/salome/examples/defining_hypotheses_ex06.py deleted file mode 100644 index 687de13f7..000000000 --- a/doc/salome/examples/defining_hypotheses_ex06.py +++ /dev/null @@ -1,37 +0,0 @@ -# Maximum Element Volume - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a cylinder -cyl = geompy.MakeCylinderRH(30., 50.) -geompy.addToStudy(cyl, "cyl") - -# create a mesh on the cylinder -tetra = smesh.Mesh(cyl, "Cylinder : tetrahedrical mesh") - -# assign algorithms -algo1D = tetra.Segment() -algo2D = tetra.Triangle() -algo3D = tetra.Tetrahedron() - -# assign 1D and 2D hypotheses -algo1D.NumberOfSegments(7) -algo2D.MaxElementArea(150.) - -# assign Max Element Volume hypothesis -algo3D.MaxElementVolume(200.) - -# compute the mesh -ret = tetra.Compute() -if ret == 0: - print("problem when computing the mesh") -else: - print("Computation succeeded") diff --git a/doc/salome/examples/defining_hypotheses_ex07.py b/doc/salome/examples/defining_hypotheses_ex07.py deleted file mode 100644 index 2beb838d2..000000000 --- a/doc/salome/examples/defining_hypotheses_ex07.py +++ /dev/null @@ -1,37 +0,0 @@ -# Length from Edges - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create sketchers -sketcher1 = geompy.MakeSketcher("Sketcher:F 0 0:TT 70 0:TT 70 70:TT 0 70:WW") -sketcher2 = geompy.MakeSketcher("Sketcher:F 20 20:TT 50 20:TT 50 50:TT 20 50:WW") - -# create a face from two wires -isPlanarFace = 1 -face1 = geompy.MakeFaces([sketcher1, sketcher2], isPlanarFace) -geompy.addToStudy(face1, "Face1") - -# create a mesh -tria = smesh.Mesh(face1, "Face : triangle 2D mesh") - -# Define 1D meshing -algo1D = tria.Segment() -algo1D.LocalLength(3.) - -# create and assign the algorithm for 2D meshing with triangles -algo2D = tria.Triangle() - -# create and assign "LengthFromEdges" hypothesis to build triangles with -# linear size close to the length of the segments generated on the face wires (3.) -algo2D.LengthFromEdges() - -# compute the mesh -tria.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex08.py b/doc/salome/examples/defining_hypotheses_ex08.py deleted file mode 100644 index ee0af3912..000000000 --- a/doc/salome/examples/defining_hypotheses_ex08.py +++ /dev/null @@ -1,65 +0,0 @@ -# Propagation - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -base = geompy.MakeSketcher("Sketcher:F 0 0:TT 10 0:TT 20 10:TT 0 10:WF", theName="F") -box = geompy.MakePrismDXDYDZ( base, 0,0,10 ) -geompy.addToStudy(box, "Box") - -# get one edge of the box to put local hypothesis on -p5 = geompy.MakeVertex(5., 0., 0.) -EdgeX = geompy.GetEdgeNearPoint(box, p5) -geompy.addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]") - -# create a hexahedral mesh on the box -hexa = smesh.Mesh(box, "Propagation of hypothesis") - -# set global algorithms and hypotheses -algo1D = hexa.Segment() -hexa.Quadrangle() -hexa.Hexahedron() -algo1D.NumberOfSegments(4) - -# create a sub-mesh with local 1D hypothesis and "Propagation of 1D Hypothesis" -algo_local = hexa.Segment(EdgeX) - -# define "Arithmetic1D" hypothesis to cut an edge in several segments with increasing length -algo_local.Arithmetic1D(1, 4) - -# define "Propagation" hypothesis that propagates "Arithmetic1D" hypothesis -# from 'EdgeX' on opposite sides of all quadilateral faces -algo_local.Propagation() - -# compute the mesh which contains prisms -hexa.Compute() - - -# create another mesh on the box -mesh = smesh.Mesh(box, "Propagation of distribution of nodes") - -# set global algorithms and hypotheses -algo1D = mesh.Segment() -mesh.Quadrangle() -mesh.Hexahedron() -algo1D.NumberOfSegments(4) - -# create a sub-mesh with local 1D hypothesis and "Propagation of Node Distribution" -algo_local = mesh.Segment(EdgeX) -algo_local.Arithmetic1D(1, 4) - -# define "Propagation Of Distribution" hypothesis that propagates -# distribution of nodes generated by "Arithmetic1D" hypothesis -# from 'EdgeX' on opposite sides of all quadilateral faces -algo_local.PropagationOfDistribution() - -# compute the mesh which contains hexahedra only -mesh.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex09.py b/doc/salome/examples/defining_hypotheses_ex09.py deleted file mode 100644 index 7ac2a0fb4..000000000 --- a/doc/salome/examples/defining_hypotheses_ex09.py +++ /dev/null @@ -1,52 +0,0 @@ -# Defining Meshing Algorithms - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBoxDXDYDZ(10., 10., 10.) -geompy.addToStudy(box, "Box") - -# Create a hexahedral mesh on the box -hexa = smesh.Mesh(box, "Box : hexahedrical mesh") - -# create a Regular 1D algorithm for edges -algo1D = hexa.Segment() - -# create a quadrangle 2D algorithm for faces -algo2D = hexa.Quadrangle() - -# create a hexahedron 3D algorithm for solids -algo3D = hexa.Hexahedron() - -# define hypotheses -algo1D.Arithmetic1D(1, 4) - -# compute the mesh -hexa.Compute() - -# 2. Create a tetrahedral mesh on the box -tetra = smesh.Mesh(box, "Box : tetrahedrical mesh") - -# create a Regular 1D algorithm for edges -algo1D = tetra.Segment() - -# create a Mefisto 2D algorithm for faces -algo2D = tetra.Triangle() - -# create a 3D algorithm for solids -algo3D = tetra.Tetrahedron() - -# define hypotheses -algo1D.Arithmetic1D(1, 4) -algo2D.LengthFromEdges() - -# compute the mesh -tetra.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex10.py b/doc/salome/examples/defining_hypotheses_ex10.py deleted file mode 100644 index 0801c2cfc..000000000 --- a/doc/salome/examples/defining_hypotheses_ex10.py +++ /dev/null @@ -1,84 +0,0 @@ -# Projection Algorithms - -# Project prisms from one meshed box to another mesh on the same box - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Prepare geometry - -# Create a parallelepiped -box = geompy.MakeBoxDXDYDZ(200, 100, 70) -geompy.addToStudy( box, "box" ) - -# Get geom faces to mesh with triangles in the 1ts and 2nd meshes -faces = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) -# 2 adjacent faces of the box -f1 = faces[2] -f2 = faces[0] -# face opposite to f2 -f2opp = geompy.GetOppositeFace( box, f2 ) - -# Get vertices used to specify how to associate sides of faces at projection -[v1F1, v2F1] = geompy.SubShapeAll(f1, geompy.ShapeType["VERTEX"])[:2] -[v1F2, v2F2] = geompy.SubShapeAll(f2, geompy.ShapeType["VERTEX"])[:2] -geompy.addToStudyInFather( box, v1F1, "v1F1" ) -geompy.addToStudyInFather( box, v2F1, "v2F1" ) -geompy.addToStudyInFather( box, v1F2, "v1F2" ) -geompy.addToStudyInFather( box, v2F2, "v2F2" ) - -# Make group of 3 edges of f1 and f2 -edgesF1 = geompy.CreateGroup(f1, geompy.ShapeType["EDGE"]) -geompy.UnionList( edgesF1, geompy.SubShapeAll(f1, geompy.ShapeType["EDGE"])[:3]) -edgesF2 = geompy.CreateGroup(f2, geompy.ShapeType["EDGE"]) -geompy.UnionList( edgesF2, geompy.SubShapeAll(f2, geompy.ShapeType["EDGE"])[:3]) -geompy.addToStudyInFather( box, edgesF1, "edgesF1" ) -geompy.addToStudyInFather( box, edgesF2, "edgesF2" ) - - -# Make the source mesh with prisms -src_mesh = smesh.Mesh(box, "Source mesh") -src_mesh.Segment().NumberOfSegments(9,10) -src_mesh.Quadrangle() -src_mesh.Hexahedron() -src_mesh.Triangle(f1) # triangular sub-mesh -src_mesh.Compute() - - -# Mesh the box using projection algorithms - -# Define the same global 1D and 2D hypotheses -tgt_mesh = smesh.Mesh(box, "Target mesh") -tgt_mesh.Segment().NumberOfSegments(9,10,UseExisting=True) -tgt_mesh.Quadrangle() - -# Define Projection 1D algorithm to project 1d mesh elements from group edgesF2 to edgesF1 -# It is actually not needed, just a demonstration -proj1D = tgt_mesh.Projection1D( edgesF1 ) -# each vertex must be at the end of a connected group of edges (or a sole edge) -proj1D.SourceEdge( edgesF2, src_mesh, v2F1, v2F2 ) - -# Define 2D hypotheses to project triangles from f1 face of the source mesh to -# f2 face in the target mesh. Vertices specify how to associate sides of faces -proj2D = tgt_mesh.Projection2D( f2 ) -proj2D.SourceFace( f1, src_mesh, v1F1, v1F2, v2F1, v2F2 ) - -# 2D hypotheses to project triangles from f2 of target mesh to the face opposite to f2. -# Association of face sides is default -proj2D = tgt_mesh.Projection2D( f2opp ) -proj2D.SourceFace( f2 ) - -# 3D hypotheses to project prisms from the source to the target mesh -proj3D = tgt_mesh.Projection3D() -proj3D.SourceShape3D( box, src_mesh, v1F1, v1F2, v2F1, v2F2 ) -tgt_mesh.Compute() - -# Move the source mesh to visually compare the two meshes -src_mesh.TranslateObject( src_mesh, smesh.MakeDirStruct( 210, 0, 0 ), Copy=False) diff --git a/doc/salome/examples/defining_hypotheses_ex11.py b/doc/salome/examples/defining_hypotheses_ex11.py deleted file mode 100644 index 5e85222ad..000000000 --- a/doc/salome/examples/defining_hypotheses_ex11.py +++ /dev/null @@ -1,40 +0,0 @@ -# Projection 1D2D - -# Project triangles from one meshed face to another mesh on the same box - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Prepare geometry - -# Create a box -box = geompy.MakeBoxDXDYDZ(100, 100, 100) - -# Get geom faces to mesh with triangles in the 1ts and 2nd meshes -faces = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) -# 2 adjacent faces of the box -Face_1 = faces[2] -Face_2 = faces[0] - -geompy.addToStudy( box, 'box' ) -geompy.addToStudyInFather( box, Face_1, 'Face_1' ) -geompy.addToStudyInFather( box, Face_2, 'Face_2' ) - - -# Make the source mesh triangulated by MEFISTO -src_mesh = smesh.Mesh(Face_1, "Source mesh") -src_mesh.Segment().NumberOfSegments(15) -src_mesh.Triangle() -src_mesh.Compute() - -# Mesh the target mesh using the algorithm Projection1D2D -tgt_mesh = smesh.Mesh(Face_2, "Target mesh") -tgt_mesh.Projection1D2D().SourceFace(Face_1,src_mesh) -tgt_mesh.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex12.py b/doc/salome/examples/defining_hypotheses_ex12.py deleted file mode 100644 index 9db644836..000000000 --- a/doc/salome/examples/defining_hypotheses_ex12.py +++ /dev/null @@ -1,42 +0,0 @@ -# 1D Mesh with Fixed Points example - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -from salome.StdMeshers import StdMeshersBuilder - -# Create face and explode it on edges -face = geompy.MakeFaceHW(100, 100, 1) -edges = geompy.SubShapeAllSorted(face, geompy.ShapeType["EDGE"]) -geompy.addToStudy( face, "Face" ) - -# get the first edge from exploded result -edge1 = geompy.GetSubShapeID(face, edges[0]) - -# Define Mesh on previously created face -Mesh_1 = smesh.Mesh(face) - -# Create Fixed Point 1D hypothesis and define parameters. -# Note: values greater than 1.0 and less than 0.0 are not taken into account; -# duplicated values are removed. Also, if not specified explicitly, values 0.0 and 1.0 -# add added automatically. -# The number of segments should correspond to the number of points (NbSeg = NbPnt-1); -# extra values of segments splitting parameter are not taken into account, -# while missing values are considered to be equal to 1. -Fixed_points_1D_1 = smesh.CreateHypothesis('FixedPoints1D') -Fixed_points_1D_1.SetPoints( [ 1.1, 0.9, 0.5, 0.0, 0.5, -0.3 ] ) -Fixed_points_1D_1.SetNbSegments( [ 3, 1, 2 ] ) -Fixed_points_1D_1.SetReversedEdges( [edge1] ) - -# Add hypothesis to mesh and define 2D parameters -Mesh_1.AddHypothesis(Fixed_points_1D_1) -Regular_1D = Mesh_1.Segment() -Quadrangle_2D = Mesh_1.Quadrangle() -# Compute mesh -Mesh_1.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex13.py b/doc/salome/examples/defining_hypotheses_ex13.py deleted file mode 100644 index c7c736cff..000000000 --- a/doc/salome/examples/defining_hypotheses_ex13.py +++ /dev/null @@ -1,42 +0,0 @@ -# Radial Quadrangle 1D-2D example - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Create face from the wire and add to study -Face = geompy.MakeSketcher("Sketcher:F 0 0:TT 20 0:R 90:C 20 90:WF", [0, 0, 0, 1, 0, 0, 0, 0, 1]) -geompy.addToStudy(Face,"Face") -circle, radius1, radius2 = geompy.SubShapeAllSorted(Face, geompy.ShapeType["EDGE"]) -geompy.addToStudyInFather(Face, radius1,"radius1") -geompy.addToStudyInFather(Face, radius2,"radius2") -geompy.addToStudyInFather(Face, circle,"circle") - - -# Define geometry for mesh, and Radial Quadrange algorithm -mesh = smesh.Mesh(Face) -radial_Quad_algo = mesh.Quadrangle(algo=smeshBuilder.RADIAL_QUAD) - -# The Radial Quadrange algorithm can work without any hypothesis -# In this case it uses "Default Nb of Segments" preferences parameter to discretize edges -# So by default there will be 15 segments in both radial and circular directions -mesh.Compute() - -# The Radial Quadrange uses global or local 1d hypotheses if it does -# not have its own hypotheses. -# Define global hypotheses to discretize radial edges and a local one for circular edge -# So that there will be 5 radial layers and 10 circular segments -global_Nb_Segments = mesh.Segment().NumberOfSegments(5) -local_Nb_Segments = mesh.Segment(circle).NumberOfSegments(10) -mesh.Compute() - -# Define own parameters of Radial Quadrange algorithm -# The number of radial layers will be 4 -radial_Quad_algo.NumberOfLayers( 4 ) -mesh.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex14.py b/doc/salome/examples/defining_hypotheses_ex14.py deleted file mode 100644 index f1e7e39f3..000000000 --- a/doc/salome/examples/defining_hypotheses_ex14.py +++ /dev/null @@ -1,32 +0,0 @@ -# Quadrangle Parameters example 1 (meshing a face with 3 edges) - -import salome -salome.salome_init_without_session() - -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Get 1/4 part from the disk face. -Box_1 = geompy.MakeBoxDXDYDZ(100, 100, 100) -Disk_1 = geompy.MakeDiskR(100, 1) -Common_1 = geompy.MakeCommon(Disk_1, Box_1) -triaVertex = geompy.GetVertexNearPoint( Common_1, geompy.MakeVertex(0,0,0) ) -geompy.addToStudy( Common_1, "Common_1" ) -geompy.addToStudyInFather( Common_1, triaVertex, "triaVertex" ) - - -# Set the Geometry for meshing -Mesh_1 = smesh.Mesh(Common_1) - -# Define 1D hypothesis -Regular_1D = Mesh_1.Segment() -Nb_Segments_1 = Regular_1D.NumberOfSegments(10) - -# Create Quadrangle parameters and define the Base Vertex. -Quadrangle_2D = Mesh_1.Quadrangle().TriangleVertex( triaVertex ) - -# Compute the mesh -Mesh_1.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex15.py b/doc/salome/examples/defining_hypotheses_ex15.py deleted file mode 100644 index 7b0cfbaa4..000000000 --- a/doc/salome/examples/defining_hypotheses_ex15.py +++ /dev/null @@ -1,41 +0,0 @@ -# Quadrangle Parameters example 2 (using different types) - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Make quadrangle face and explode it on edges. -Vertex_1 = geompy.MakeVertex(0, 0, 0) -Vertex_2 = geompy.MakeVertex(40, 0, 0) -Vertex_3 = geompy.MakeVertex(40, 30, 0) -Vertex_4 = geompy.MakeVertex(0, 30, 0) -Quadrangle_Face_1 = geompy.MakeQuad4Vertices(Vertex_1, Vertex_4, Vertex_3, Vertex_2) -[Edge_1,Edge_2,Edge_3,Edge_4] = geompy.SubShapeAllSorted(Quadrangle_Face_1, geompy.ShapeType["EDGE"]) -geompy.addToStudy( Quadrangle_Face_1, "Quadrangle Face_1" ) -geompy.addToStudyInFather( Quadrangle_Face_1, Edge_2, "Edge_2" ) - -# Set the Geometry for meshing -Mesh_1 = smesh.Mesh(Quadrangle_Face_1) - -# Create Quadrangle parameters and -# define the Type as Quadrangle Preference -Quad_algo = Mesh_1.Quadrangle() -Quadrangle_Parameters_1 = Quad_algo.QuadrangleParameters( smeshBuilder.QUAD_QUADRANGLE_PREF ) - -# Define other hypotheses and algorithms -Regular_1D = Mesh_1.Segment() -Nb_Segments_1 = Regular_1D.NumberOfSegments(4) - -# Define submesh on one edge to provide different number of segments -Regular_1D_1 = Mesh_1.Segment(geom=Edge_2) -Nb_Segments_2 = Regular_1D_1.NumberOfSegments(10) - -# Compute mesh (with Quadrangle Preference type) -isDone = Mesh_1.Compute() - -# Change type to Reduced and compute again -Quadrangle_Parameters_1.SetQuadType( smeshBuilder.QUAD_REDUCED ) -isDone = Mesh_1.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex16.py b/doc/salome/examples/defining_hypotheses_ex16.py deleted file mode 100644 index 2826aa15e..000000000 --- a/doc/salome/examples/defining_hypotheses_ex16.py +++ /dev/null @@ -1,50 +0,0 @@ -# "Import 2D Elements from Another Mesh" example - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Make a patritioned box - -box = geompy.MakeBoxDXDYDZ(100,100,100) - -N = geompy.MakeVectorDXDYDZ( 1,0,0 ) -O = geompy.MakeVertex( 50,0,0 ) -plane = geompy.MakePlane( O, N, 200 ) # plane YOZ - -shape2boxes = geompy.MakeHalfPartition( box, plane ) -boxes = geompy.SubShapeAllSorted(shape2boxes, geompy.ShapeType["SOLID"]) - -geompy.addToStudy( boxes[0], "boxes[0]") -geompy.addToStudy( boxes[1], "boxes[1]") -midFace0 = geompy.SubShapeAllSorted(boxes[0], geompy.ShapeType["FACE"])[5] -geompy.addToStudyInFather( boxes[0], midFace0, "middle Face") -midFace1 = geompy.SubShapeAllSorted(boxes[1], geompy.ShapeType["FACE"])[0] -geompy.addToStudyInFather( boxes[1], midFace1, "middle Face") - -# Mesh one of boxes with quadrangles. It is a source mesh - -srcMesh = smesh.Mesh(boxes[0], "source mesh") # box coloser to CS origin -nSeg1 = srcMesh.Segment().NumberOfSegments(4) -srcMesh.Quadrangle() -srcMesh.Compute() -srcFaceGroup = srcMesh.GroupOnGeom( midFace0, "src faces", SMESH.FACE ) - -# Import faces from midFace0 to the target mesh - -tgtMesh = smesh.Mesh(boxes[1], "target mesh") -importAlgo = tgtMesh.UseExisting2DElements(midFace1) -import2hyp = importAlgo.SourceFaces( [srcFaceGroup] ) -tgtMesh.Segment().NumberOfSegments(3) -tgtMesh.Quadrangle() -tgtMesh.Compute() - -# Import the whole source mesh with groups -import2hyp.SetCopySourceMesh(True,True) -tgtMesh.Compute() diff --git a/doc/salome/examples/defining_hypotheses_ex17.py b/doc/salome/examples/defining_hypotheses_ex17.py deleted file mode 100644 index da76f2210..000000000 --- a/doc/salome/examples/defining_hypotheses_ex17.py +++ /dev/null @@ -1,77 +0,0 @@ -# Viscous layers construction - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -X = geompy.MakeVectorDXDYDZ( 1,0,0 ) -O = geompy.MakeVertex( 100,50,50 ) -plane = geompy.MakePlane( O, X, 200 ) # plane YZ - -box = geompy.MakeBoxDXDYDZ(200,100,100) - -shape = geompy.MakeHalfPartition( box, plane ) - -faces = geompy.SubShapeAllSorted(shape, geompy.ShapeType["FACE"]) -face1 = faces[1] -ignoreFaces = [ faces[0], faces[-1]] - -geompy.addToStudy( shape, "shape" ) -geompy.addToStudyInFather( shape, face1, "face1") - -# 3D Viscous layers - -mesh = smesh.Mesh(shape, "CFD") - -mesh.Segment().NumberOfSegments( 4 ) - -mesh.Triangle() -mesh.Quadrangle(face1) -algo3D = mesh.Tetrahedron() - -thickness = 20 -numberOfLayers = 10 -stretchFactor = 1.5 -groupName = "Boundary layers" -layersHyp = algo3D.ViscousLayers(thickness,numberOfLayers,stretchFactor, - ignoreFaces, # optional - groupName = groupName) # optional - -mesh.Compute() - -# retrieve boundary prisms created by mesh.Compute() -boundaryGroup = mesh.GetGroupByName( layersHyp.GetGroupName() )[0] -print( "Nb boundary prisms", boundaryGroup.Size() ) - -mesh.MakeGroup("Tetras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_TETRA) -mesh.MakeGroup("Pyras",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_PYRAMID) -mesh.MakeGroup("Prims",SMESH.VOLUME,SMESH.FT_ElemGeomType,"=",SMESH.Geom_PENTA) - -# 2D Viscous layers - -# 3 edges of the 4 edges of face1 -edgeIds = geompy.SubShapeAllIDs( face1, geompy.ShapeType["EDGE"])[:-1] - -mesh = smesh.Mesh(face1,"VicsousLayers2D") -mesh.Segment().NumberOfSegments( 5 ) - -# viscous layers will be created on 1 edge, as we set 3 edges to ignore -vlHyp = mesh.Triangle().ViscousLayers2D( 2, 3, 1.5, - edgeIds, isEdgesToIgnore=True, # optional - groupName=groupName) # optional -mesh.Compute() - -# retrieve boundary elements created by mesh.Compute() -quadrangles = mesh.GetGroupByName( vlHyp.GetGroupName() )[0] -print( "Nb boundary quadrangles", quadrangles.Size() ) - -# viscous layers will be created on 3 edges, as we pass isEdgesToIgnore=False -vlHyp.SetEdges( edgeIds, False ) - -mesh.Compute() diff --git a/doc/salome/examples/defining_hypotheses_len_near_vertex.py b/doc/salome/examples/defining_hypotheses_len_near_vertex.py deleted file mode 100644 index 62379eb8e..000000000 --- a/doc/salome/examples/defining_hypotheses_len_near_vertex.py +++ /dev/null @@ -1,29 +0,0 @@ -# Usage of Segments around Vertex algorithm - -# for meshing a box with quadrangles with refinement near vertices - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBoxDXDYDZ( 10, 10, 10 ) - -# make a mesh -mesh = smesh.Mesh( box ) - -# define quadrangle meshing -algo1d = mesh.Segment() -algo1d.LocalLength( 1. ) -mesh.Quadrangle() - -# add Hexahedron algo to assure that there are no triangles -mesh.Hexahedron() - -# define refinement near vertices -algo1d.LengthNearVertex( 0.2 ) - -mesh.Compute() diff --git a/doc/salome/examples/ex_MakePolyLine.py b/doc/salome/examples/ex_MakePolyLine.py deleted file mode 100644 index 20919129f..000000000 --- a/doc/salome/examples/ex_MakePolyLine.py +++ /dev/null @@ -1,37 +0,0 @@ -import salome -salome.salome_init() - -### create geometry - -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) -geompy.addToStudy( Box_1, 'Box_1' ) - -### create a mesh - -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -Mesh_1 = smesh.Mesh( Box_1 ) -Mesh_1.Segment().NumberOfSegments(15) -Mesh_1.Triangle() -Mesh_1.Compute() - -# define arguments for MakePolyLine - -segments = [] -# between nodes 20 and 1, default plane -segments.append( SMESH.PolySegment( 20, 0, 1, 0, smesh.MakeDirStruct(0,0,0) )) -# between nodes 1 and 100, default plane -segments.append( SMESH.PolySegment( 1, 0, 200, 0, smesh.MakeDirStruct(0,0,0) )) -# between nodes 200 and edge (578, 577), plane includes vector (1,1,1) -segments.append( SMESH.PolySegment( 200, 0, 578, 577, smesh.MakeDirStruct(1,1,1) )) - -Mesh_1.MakePolyLine( segments, "1D group") - - -if salome.sg.hasDesktop(): - salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/filters_belong2group.py b/doc/salome/examples/filters_belong2group.py deleted file mode 100644 index b3b5b61b7..000000000 --- a/doc/salome/examples/filters_belong2group.py +++ /dev/null @@ -1,19 +0,0 @@ -# Belong to Mesh Group criterion - -# create mesh -from SMESH_mechanic import * -print() - -# create a group of all faces (quadrangles) generated on sub_face3 -quads_on_face3 = mesh.MakeGroup("quads_on_face3", SMESH.FACE, SMESH.FT_BelongToGeom,'=',sub_face3) -print("There are %s quadrangles generated on '%s' and included in the group '%s'" % ( quads_on_face3.Size(), sub_face3.GetName(), quads_on_face3.GetName() )) - -# create a group of all the rest quadrangles, generated on other faces by combining 2 criteria: -# - negated FT_BelongToMeshGroup to select elements not included in quads_on_face3 -# - FT_ElemGeomType to select quadrangles -not_on_face3 = smesh.GetCriterion( SMESH.FACE, SMESH.FT_BelongToMeshGroup,'=',quads_on_face3, SMESH.FT_LogicalNOT ) -quadrangles = smesh.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=',SMESH.Geom_QUADRANGLE ) - -rest_quads = mesh.MakeGroupByCriteria("rest_quads", [ not_on_face3, quadrangles ]) -print("'%s' group includes all the rest %s quadrangles" % ( rest_quads.GetName(), rest_quads.Size() )) - diff --git a/doc/salome/examples/filters_ex01.py b/doc/salome/examples/filters_ex01.py deleted file mode 100644 index f323ecb76..000000000 --- a/doc/salome/examples/filters_ex01.py +++ /dev/null @@ -1,44 +0,0 @@ -# Aspect ratio -# This script demonstrates various usages of filters - -# create mesh -from SMESH_mechanic import * - -# get faces with aspect ratio > 2.5 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, 2.5) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with aspect ratio > 2.5:", len(ids)) - -# get faces with aspect ratio > 1.5 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, '>', 1.5, mesh=mesh) -ids = filter.GetIDs() -print("Number of faces with aspect ratio > 1.5:", len(ids)) - -# copy the faces with aspect ratio > 1.5 to another mesh; -# this demonstrates that a filter can be used where usually a group or sub-mesh is acceptable -filter.SetMesh( mesh.GetMesh() ) # - actually non necessary as mesh is set at filter creation -mesh2 = smesh.CopyMesh( filter, "AR > 1.5" ) -print("Number of copied faces with aspect ratio > 1.5:", mesh2.NbFaces()) - -# create a group (Group on Filter) of faces with Aspect Ratio < 1.5 -group = mesh.MakeGroup("AR < 1.5", SMESH.FACE, SMESH.FT_AspectRatio, '<', 1.5) -print("Number of faces with aspect ratio < 1.5:", group.Size()) - -# combine several criteria to Create a Group of only Triangular faces with Aspect Ratio < 1.5; -# note that contents of a GroupOnFilter is dynamically updated as the mesh changes -crit = [ smesh.GetCriterion( SMESH.FACE, SMESH.FT_AspectRatio, '<', 1.5, BinaryOp=SMESH.FT_LogicalAND ), - smesh.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=', SMESH.Geom_TRIANGLE ) ] -triaGroup = mesh.MakeGroupByCriteria( "Tria AR < 1.5", crit ) -print("Number of triangles with aspect ratio < 1.5:", triaGroup.Size()) - -# get range of values of Aspect Ratio of all faces in the mesh -aspects = mesh.GetMinMax( SMESH.FT_AspectRatio ) -print("MESH: Min aspect = %s, Max aspect = %s" % ( aspects[0], aspects[1] )) - -# get max value of Aspect Ratio of faces in triaGroup -grAspects = mesh.GetMinMax( SMESH.FT_AspectRatio, triaGroup ) -print("GROUP: Max aspect = %s" % grAspects[1]) - -# get Aspect Ratio of an element -aspect = mesh.FunctorValue( SMESH.FT_AspectRatio, ids[0] ) -print("Aspect ratio of the face %s = %s" % ( ids[0], aspect )) diff --git a/doc/salome/examples/filters_ex02.py b/doc/salome/examples/filters_ex02.py deleted file mode 100644 index 6a392ce41..000000000 --- a/doc/salome/examples/filters_ex02.py +++ /dev/null @@ -1,10 +0,0 @@ -# Aspect ratio 3D - -# create mesh with volumes -from SMESH_mechanic import * -mesh.Tetrahedron() -mesh.Compute() -# get volumes with aspect ratio < 2.0 -filter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_AspectRatio3D, SMESH.FT_LessThan, 2.0) -ids = mesh.GetIdsFromFilter(filter) -print("Number of volumes with aspect ratio < 2.0:", len(ids)) diff --git a/doc/salome/examples/filters_ex03.py b/doc/salome/examples/filters_ex03.py deleted file mode 100644 index e01b60df5..000000000 --- a/doc/salome/examples/filters_ex03.py +++ /dev/null @@ -1,8 +0,0 @@ -# Warping angle - -# create mesh -from SMESH_mechanic import * -# get faces with warping angle = 2.0e-13 with tolerance 5.0e-14 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Warping, "=", 2.0e-13, Tolerance=5.0e-14) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with warping angle = 2.0e-13 (tolerance 5.0e-14):", len(ids)) diff --git a/doc/salome/examples/filters_ex04.py b/doc/salome/examples/filters_ex04.py deleted file mode 100644 index 2b274837a..000000000 --- a/doc/salome/examples/filters_ex04.py +++ /dev/null @@ -1,8 +0,0 @@ -# Minimum angle - -# create mesh -from SMESH_mechanic import * -# get faces with minimum angle > 75 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_MinimumAngle,">", 75) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with minimum angle > 75:", len(ids)) diff --git a/doc/salome/examples/filters_ex05.py b/doc/salome/examples/filters_ex05.py deleted file mode 100644 index c470db6bc..000000000 --- a/doc/salome/examples/filters_ex05.py +++ /dev/null @@ -1,8 +0,0 @@ -# Taper - -# create mesh -from SMESH_mechanic import * -# get faces with taper < 1.e-15 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Taper, SMESH.FT_LessThan, 1.e-15) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with taper < 1.e-15:", len(ids)) diff --git a/doc/salome/examples/filters_ex06.py b/doc/salome/examples/filters_ex06.py deleted file mode 100644 index 94666f70c..000000000 --- a/doc/salome/examples/filters_ex06.py +++ /dev/null @@ -1,8 +0,0 @@ -# Skew - -# create mesh -from SMESH_mechanic import * -# get faces with skew > 50 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Skew, SMESH.FT_MoreThan, 50) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with skew > 50:", len(ids)) diff --git a/doc/salome/examples/filters_ex07.py b/doc/salome/examples/filters_ex07.py deleted file mode 100644 index 7d781dc22..000000000 --- a/doc/salome/examples/filters_ex07.py +++ /dev/null @@ -1,10 +0,0 @@ -# Area - -# create mesh -from SMESH_mechanic import * -# get faces with area > 60 and < 90 -criterion1 = smesh.GetCriterion(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 60) -criterion2 = smesh.GetCriterion(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 90) -filter = smesh.GetFilterFromCriteria([criterion1,criterion2], SMESH.FT_LogicalAND) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with area in range (60,90):", len(ids)) diff --git a/doc/salome/examples/filters_ex08.py b/doc/salome/examples/filters_ex08.py deleted file mode 100644 index 479de961e..000000000 --- a/doc/salome/examples/filters_ex08.py +++ /dev/null @@ -1,10 +0,0 @@ -# Volume - -# create mesh with volumes -from SMESH_mechanic import * -mesh.Tetrahedron() -mesh.Compute() -# get volumes faces with volume > 100 -filter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_Volume3D, SMESH.FT_MoreThan, 100) -ids = mesh.GetIdsFromFilter(filter) -print("Number of volumes with volume > 100:", len(ids)) diff --git a/doc/salome/examples/filters_ex09.py b/doc/salome/examples/filters_ex09.py deleted file mode 100644 index 8e2ebfd3d..000000000 --- a/doc/salome/examples/filters_ex09.py +++ /dev/null @@ -1,21 +0,0 @@ -# Free borders - -# initialize SALOME and modules -import salome, SMESH -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create mesh -face = geompy.MakeFaceHW(100, 100, 1, theName="quadrangle") -mesh = smesh.Mesh(face) -mesh.Segment().NumberOfSegments(10) -mesh.Triangle().MaxElementArea(25) -mesh.Compute() - -# get all free borders -filter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_FreeBorders) -ids = mesh.GetIdsFromFilter(filter) -print("Number of edges on free borders:", len(ids)) diff --git a/doc/salome/examples/filters_ex10.py b/doc/salome/examples/filters_ex10.py deleted file mode 100644 index b90e5188f..000000000 --- a/doc/salome/examples/filters_ex10.py +++ /dev/null @@ -1,22 +0,0 @@ -# Free edges - -# initialize SALOME and modules -import salome, SMESH -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create mesh -face = geompy.MakeFaceHW(100, 100, 1) -geompy.addToStudy( face, "quadrangle" ) -mesh = smesh.Mesh(face) -mesh.Segment().NumberOfSegments(10) -mesh.Triangle().MaxElementArea(25) -mesh.Compute() - -# get all faces with free edges -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_FreeEdges) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with free edges:", len(ids)) diff --git a/doc/salome/examples/filters_ex11.py b/doc/salome/examples/filters_ex11.py deleted file mode 100644 index 47b62e282..000000000 --- a/doc/salome/examples/filters_ex11.py +++ /dev/null @@ -1,10 +0,0 @@ -# Free nodes - -# create mesh -from SMESH_mechanic import * -# add node -mesh.AddNode(0,0,0) -# get all free nodes -filter = smesh.GetFilter(SMESH.NODE, SMESH.FT_FreeNodes) -ids = mesh.GetIdsFromFilter(filter) -print("Number of free nodes:", len(ids)) diff --git a/doc/salome/examples/filters_ex12.py b/doc/salome/examples/filters_ex12.py deleted file mode 100644 index 5dfd81ad4..000000000 --- a/doc/salome/examples/filters_ex12.py +++ /dev/null @@ -1,8 +0,0 @@ -# Free faces - -# create mesh -from SMESH_mechanic import * -# get all free faces -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_FreeFaces) -ids = mesh.GetIdsFromFilter(filter) -print("Number of free faces:", len(ids)) diff --git a/doc/salome/examples/filters_ex13.py b/doc/salome/examples/filters_ex13.py deleted file mode 100644 index ae64b565a..000000000 --- a/doc/salome/examples/filters_ex13.py +++ /dev/null @@ -1,10 +0,0 @@ -# Bare border faces - -# create mesh -from SMESH_mechanic import * -# remove some faces to have faces with bare borders -mesh.RemoveElements( mesh.GetElementsByType(SMESH.FACE)[0:5] ) -# get all faces with bare borders -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_BareBorderFace) -ids = mesh.GetIdsFromFilter(filter) -print("Faces with bare borders:", ids) diff --git a/doc/salome/examples/filters_ex14.py b/doc/salome/examples/filters_ex14.py deleted file mode 100644 index 2e68ae8f2..000000000 --- a/doc/salome/examples/filters_ex14.py +++ /dev/null @@ -1,9 +0,0 @@ -# Coplanar faces - -# create mesh -from SMESH_mechanic import * -faceID = mesh.GetElementsByType(SMESH.FACE)[0] -# get all faces co-planar to the first face with tolerance 5 degrees -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_CoplanarFaces,faceID,Tolerance=5.0) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces coplanar with the first one:", len(ids)) diff --git a/doc/salome/examples/filters_ex15.py b/doc/salome/examples/filters_ex15.py deleted file mode 100644 index 70c8cae5c..000000000 --- a/doc/salome/examples/filters_ex15.py +++ /dev/null @@ -1,7 +0,0 @@ -# Over-constrained faces -# create mesh -from SMESH_mechanic import * -# get all over-constrained faces -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_OverConstrainedFace) -ids = mesh.GetIdsFromFilter(filter) -print("Over-constrained faces:", ids) diff --git a/doc/salome/examples/filters_ex16.py b/doc/salome/examples/filters_ex16.py deleted file mode 100644 index 4e3d27be4..000000000 --- a/doc/salome/examples/filters_ex16.py +++ /dev/null @@ -1,32 +0,0 @@ -# Double edges, Double faces, Double volumes - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - -# make a mesh on a box -box = geompy.MakeBoxDXDYDZ(100,100,100) -mesh = smesh.Mesh( box, "Box" ) -mesh.Segment().NumberOfSegments(10) -mesh.Quadrangle() -mesh.Hexahedron() -mesh.Compute() -# copy all elements with translation and Merge nodes -mesh.TranslateObject( mesh, smesh.MakeDirStruct( 10,0,0), Copy=True ) -mesh.MergeNodes( mesh.FindCoincidentNodes(1e-7) ) -# create filters to find equal elements -equalEdgesFilter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_EqualEdges) -equalFacesFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_EqualFaces) -equalVolumesFilter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_EqualVolumes) -# get equal elements -print("Number of equal edges:", len( mesh.GetIdsFromFilter( equalEdgesFilter ))) -print("Number of equal faces:", len( mesh.GetIdsFromFilter( equalFacesFilter ))) -print("Number of equal volumes:", len( mesh.GetIdsFromFilter( equalVolumesFilter ))) diff --git a/doc/salome/examples/filters_ex17.py b/doc/salome/examples/filters_ex17.py deleted file mode 100644 index 83eda322c..000000000 --- a/doc/salome/examples/filters_ex17.py +++ /dev/null @@ -1,23 +0,0 @@ -# Double nodes - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# make a mesh on a box -box = geompy.MakeBoxDXDYDZ(100,100,100) -mesh = smesh.Mesh( box, "Box" ) -mesh.Segment().NumberOfSegments(10) -mesh.Quadrangle() -mesh.Hexahedron() -mesh.Compute() -# copy all elements with translation -mesh.TranslateObject( mesh, [10,0,0], Copy=True ) -# create a filter to find nodes equal within tolerance of 1e-5 -filter = smesh.GetFilter(SMESH.NODE, SMESH.FT_EqualNodes, Tolerance=1e-5) -# get equal nodes -print("Number of equal nodes:", len( mesh.GetIdsFromFilter( filter ))) diff --git a/doc/salome/examples/filters_ex18.py b/doc/salome/examples/filters_ex18.py deleted file mode 100644 index c4ec48107..000000000 --- a/doc/salome/examples/filters_ex18.py +++ /dev/null @@ -1,25 +0,0 @@ -# Borders at multi-connection - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# make a mesh on a box -box = geompy.MakeBoxDXDYDZ(100,100,100) -mesh = smesh.Mesh( box, "Box" ) -mesh.Segment().NumberOfSegments(10) -mesh.Quadrangle() -mesh.Hexahedron() -mesh.Compute() -# copy all elements with translation and merge nodes -mesh.TranslateObject( mesh, [10,0,0], Copy=True ) -mesh.MergeNodes( mesh.FindCoincidentNodes( 1e-5 )) - -# get mesh edges with number of connected elements (faces and volumes) == 3 -filter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_MultiConnection, 3) -ids = mesh.GetIdsFromFilter(filter) -print("Number of border edges with 3 faces connected:", len(ids)) diff --git a/doc/salome/examples/filters_ex19.py b/doc/salome/examples/filters_ex19.py deleted file mode 100644 index cb1c545a3..000000000 --- a/doc/salome/examples/filters_ex19.py +++ /dev/null @@ -1,8 +0,0 @@ -# Borders at multi-connection 2D - -# create mesh -from SMESH_mechanic import * -# get faces which consist of edges belonging to 2 mesh elements -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_MultiConnection2D, 2) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces consisting of edges belonging to 2 faces:", len(ids)) diff --git a/doc/salome/examples/filters_ex20.py b/doc/salome/examples/filters_ex20.py deleted file mode 100644 index c55b56b23..000000000 --- a/doc/salome/examples/filters_ex20.py +++ /dev/null @@ -1,8 +0,0 @@ -# Length - -# create mesh -from SMESH_mechanic import * -# get edges with length > 14 -filter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_Length, SMESH.FT_MoreThan, 14) -ids = mesh.GetIdsFromFilter(filter) -print("Number of edges with length > 14:", len(ids)) diff --git a/doc/salome/examples/filters_ex21.py b/doc/salome/examples/filters_ex21.py deleted file mode 100644 index 81d408701..000000000 --- a/doc/salome/examples/filters_ex21.py +++ /dev/null @@ -1,8 +0,0 @@ -# Length 2D - -# create mesh -from SMESH_mechanic import * -# get all faces that have edges with length > 14 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Length2D, SMESH.FT_MoreThan, 14) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with maximum edge length > 14:", len(ids)) diff --git a/doc/salome/examples/filters_ex22.py b/doc/salome/examples/filters_ex22.py deleted file mode 100644 index cb7971bd6..000000000 --- a/doc/salome/examples/filters_ex22.py +++ /dev/null @@ -1,8 +0,0 @@ -# Element Diameter 2D - -# create mesh -from SMESH_mechanic import * -# get all faces that have elements with length > 10 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_MaxElementLength2D, SMESH.FT_MoreThan, 10) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces with maximum element length > 10:", len(ids)) diff --git a/doc/salome/examples/filters_ex23.py b/doc/salome/examples/filters_ex23.py deleted file mode 100644 index 8c995090b..000000000 --- a/doc/salome/examples/filters_ex23.py +++ /dev/null @@ -1,10 +0,0 @@ -# Element Diameter 3D - -# create mesh with volumes -from SMESH_mechanic import * -mesh.Tetrahedron() -mesh.Compute() -# get all volumes that have elements with length > 10 -filter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_MaxElementLength3D, SMESH.FT_MoreThan, 10) -ids = mesh.GetIdsFromFilter(filter) -print("Number of volumes with maximum element length > 10:", len(ids)) diff --git a/doc/salome/examples/filters_ex24.py b/doc/salome/examples/filters_ex24.py deleted file mode 100644 index ffe922691..000000000 --- a/doc/salome/examples/filters_ex24.py +++ /dev/null @@ -1,12 +0,0 @@ -# Bare border volumes - -# create mesh -from SMESH_mechanic import * -mesh.Tetrahedron() -mesh.Compute() -# remove some volumes to have volumes with bare borders -mesh.RemoveElements(mesh.GetElementsByType(SMESH.VOLUME)[0:5]) -# get all volumes with bare borders -filter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_BareBorderVolume) -ids = mesh.GetIdsFromFilter(filter) -print("Volumes with bare borders:", ids) diff --git a/doc/salome/examples/filters_ex25.py b/doc/salome/examples/filters_ex25.py deleted file mode 100644 index f3083f7fb..000000000 --- a/doc/salome/examples/filters_ex25.py +++ /dev/null @@ -1,10 +0,0 @@ -# Over-constrained volumes - -# create mesh -from SMESH_mechanic import * -mesh.Tetrahedron() -mesh.Compute() -# get all over-constrained volumes -filter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_OverConstrainedVolume) -ids = mesh.GetIdsFromFilter(filter) -print("Over-constrained volumes:", ids) diff --git a/doc/salome/examples/filters_ex26.py b/doc/salome/examples/filters_ex26.py deleted file mode 100644 index ea7cff8ac..000000000 --- a/doc/salome/examples/filters_ex26.py +++ /dev/null @@ -1,8 +0,0 @@ -# Belong to Geom - -# create mesh -from SMESH_mechanic import * -# get all faces which nodes lie on the face sub_face3 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_BelongToGeom, sub_face3) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces which nodes lie on sub_face3:", len(ids)) diff --git a/doc/salome/examples/filters_ex27.py b/doc/salome/examples/filters_ex27.py deleted file mode 100644 index e05ecbeff..000000000 --- a/doc/salome/examples/filters_ex27.py +++ /dev/null @@ -1,8 +0,0 @@ -# Lying on Geom - -# create mesh -from SMESH_mechanic import * -# get all faces at least one node of each lies on the face sub_face3 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_LyingOnGeom, sub_face3) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces at least one node of each lies on sub_face3:", len(ids)) diff --git a/doc/salome/examples/filters_ex28.py b/doc/salome/examples/filters_ex28.py deleted file mode 100644 index f0382ac65..000000000 --- a/doc/salome/examples/filters_ex28.py +++ /dev/null @@ -1,11 +0,0 @@ -# Belong to Plane - -# create mesh -from SMESH_mechanic import * -# create plane -plane_1 = geompy.MakePlane(p3,seg1,2000) -geompy.addToStudy(plane_1, "plane_1") -# get all nodes which lie on the plane \a plane_1 -filter = smesh.GetFilter(SMESH.NODE, SMESH.FT_BelongToPlane, plane_1) -ids = mesh.GetIdsFromFilter(filter) -print("Number of nodes which lie on the plane plane_1:", len(ids)) diff --git a/doc/salome/examples/filters_ex29.py b/doc/salome/examples/filters_ex29.py deleted file mode 100644 index e6b817a4c..000000000 --- a/doc/salome/examples/filters_ex29.py +++ /dev/null @@ -1,8 +0,0 @@ -# Belong to Cylinder - -# create mesh -from SMESH_mechanic import * -# get all faces which lie on the cylindrical face \a sub_face1 -filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_BelongToCylinder, sub_face1) -ids = mesh.GetIdsFromFilter(filter) -print("Number of faces which lie on the cylindrical surface sub_face1:", len(ids)) diff --git a/doc/salome/examples/filters_ex30.py b/doc/salome/examples/filters_ex30.py deleted file mode 100644 index 856010b9d..000000000 --- a/doc/salome/examples/filters_ex30.py +++ /dev/null @@ -1,12 +0,0 @@ -# Belong to Surface - -# create mesh -from SMESH_mechanic import * -# create b-spline -spline_1 = geompy.MakeInterpol([p4,p6,p3,p1]) -surface_1 = geompy.MakePrismVecH( spline_1, vz, 70.0 ) -geompy.addToStudy(surface_1, "surface_1") -# get all nodes which lie on the surface \a surface_1 -filter = smesh.GetFilter(SMESH.NODE, SMESH.FT_BelongToGenSurface, surface_1) -ids = mesh.GetIdsFromFilter(filter) -print("Number of nodes which lie on the surface surface_1:", len(ids)) diff --git a/doc/salome/examples/filters_ex31.py b/doc/salome/examples/filters_ex31.py deleted file mode 100644 index 209bb9f77..000000000 --- a/doc/salome/examples/filters_ex31.py +++ /dev/null @@ -1,12 +0,0 @@ -# Range of IDs - -# create mesh -from SMESH_mechanic import * -# get nodes with identifiers [5-10] and [15-30] -criterion1 = smesh.GetCriterion(SMESH.NODE, SMESH.FT_RangeOfIds, Threshold="5-10",\ - BinaryOp=SMESH.FT_LogicalOR) -criterion2 = smesh.GetCriterion(SMESH.NODE, SMESH.FT_RangeOfIds, Threshold="15-30") -filter = smesh.CreateFilterManager().CreateFilter() -filter.SetCriteria([criterion1,criterion2]) -ids = mesh.GetIdsFromFilter(filter) -print("Number of nodes in ranges [5-10] and [15-30]:", len(ids)) diff --git a/doc/salome/examples/filters_ex32.py b/doc/salome/examples/filters_ex32.py deleted file mode 100644 index 5630f7812..000000000 --- a/doc/salome/examples/filters_ex32.py +++ /dev/null @@ -1,10 +0,0 @@ -# Badly oriented volume - -# create mesh with volumes -from SMESH_mechanic import * -mesh.Tetrahedron() -mesh.Compute() -# get all badly oriented volumes -filter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_BadOrientedVolume) -ids = mesh.GetIdsFromFilter(filter) -print("Number of badly oriented volumes:", len(ids)) diff --git a/doc/salome/examples/filters_ex33.py b/doc/salome/examples/filters_ex33.py deleted file mode 100644 index 4e54e55a7..000000000 --- a/doc/salome/examples/filters_ex33.py +++ /dev/null @@ -1,20 +0,0 @@ -# Linear / quadratic - -# create mesh -from SMESH_mechanic import * - -# get linear and quadratic edges -filter_linear = smesh.GetFilter(SMESH.EDGE, SMESH.FT_LinearOrQuadratic) -filter_quadratic = smesh.GetFilter(SMESH.EDGE, SMESH.FT_LinearOrQuadratic, SMESH.FT_LogicalNOT) -ids_linear = mesh.GetIdsFromFilter(filter_linear) -ids_quadratic = mesh.GetIdsFromFilter(filter_quadratic) -print("Number of linear edges:", len(ids_linear), "; number of quadratic edges:", len(ids_quadratic)) - -# convert mesh to quadratic -print("Convert to quadratic...") -mesh.ConvertToQuadratic() - -# get linear and quadratic edges -ids_linear = mesh.GetIdsFromFilter(filter_linear) -ids_quadratic = mesh.GetIdsFromFilter(filter_quadratic) -print("Number of linear edges:", len(ids_linear), "; number of quadratic edges:", len(ids_quadratic)) diff --git a/doc/salome/examples/filters_ex34.py b/doc/salome/examples/filters_ex34.py deleted file mode 100644 index 9e29e97d3..000000000 --- a/doc/salome/examples/filters_ex34.py +++ /dev/null @@ -1,14 +0,0 @@ -# Group color - -# create mesh -from SMESH_mechanic import * -# create group of edges -all_edges = mesh.GetElementsByType(SMESH.EDGE) -grp = mesh.MakeGroupByIds("edges group", SMESH.EDGE, all_edges[:len(all_edges) // 4]) -import SALOMEDS -c = SALOMEDS.Color(0.1, 0.5, 1.0) -grp.SetColor(c) -# get number of the edges not belonging to the group with the given color -filter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_GroupColor, c, SMESH.FT_LogicalNOT) -ids = mesh.GetIdsFromFilter(filter) -print ("Number of edges not belonging to the group with color (0.1, 0.5, 1.0):", len(ids)) diff --git a/doc/salome/examples/filters_ex35.py b/doc/salome/examples/filters_ex35.py deleted file mode 100644 index fea0902b9..000000000 --- a/doc/salome/examples/filters_ex35.py +++ /dev/null @@ -1,19 +0,0 @@ -# Geometry type - -# create mesh with volumes -from SMESH_mechanic import * -mesh.Tetrahedron() -mesh.Compute() -# get all triangles, quadrangles, tetrahedrons, pyramids -filter_tri = smesh.GetFilter(SMESH.FACE, SMESH.FT_ElemGeomType, SMESH.Geom_TRIANGLE) -filter_qua = smesh.GetFilter(SMESH.FACE, SMESH.FT_ElemGeomType, SMESH.Geom_QUADRANGLE) -filter_tet = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ElemGeomType, SMESH.Geom_TETRA) -filter_pyr = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ElemGeomType, SMESH.Geom_PYRAMID) -ids_tri = mesh.GetIdsFromFilter(filter_tri) -ids_qua = mesh.GetIdsFromFilter(filter_qua) -ids_tet = mesh.GetIdsFromFilter(filter_tet) -ids_pyr = mesh.GetIdsFromFilter(filter_pyr) -print("Number of triangles:", len(ids_tri)) -print("Number of quadrangles:", len(ids_qua)) -print("Number of tetrahedrons:", len(ids_tet)) -print("Number of pyramids:", len(ids_pyr)) diff --git a/doc/salome/examples/filters_ex36.py b/doc/salome/examples/filters_ex36.py deleted file mode 100644 index ec1e2b4fb..000000000 --- a/doc/salome/examples/filters_ex36.py +++ /dev/null @@ -1,17 +0,0 @@ -# Combine several criteria into a filter - -# create mesh -from SMESH_mechanic import * - -# get all the quadrangle faces ... -criterion1 = smesh.GetCriterion(SMESH.FACE, SMESH.FT_ElemGeomType, SMESH.Geom_QUADRANGLE, SMESH.FT_LogicalAND) -# ... but those from sub_face3 -criterion2 = smesh.GetCriterion(SMESH.FACE, SMESH.FT_BelongToGeom, sub_face3, SMESH.FT_LogicalNOT) - -quadFilter = smesh.GetFilterFromCriteria([criterion1,criterion2]) - -# get faces satisfying the criteria -ids = mesh.GetIdsFromFilter(quadFilter) - -# create a group of faces satisfying the criteria -myGroup = mesh.GroupOnFilter(SMESH.FACE,"Quads_on_cylindrical_faces",quadFilter) diff --git a/doc/salome/examples/filters_ex37.py b/doc/salome/examples/filters_ex37.py deleted file mode 100644 index 0f1a0a8ff..000000000 --- a/doc/salome/examples/filters_ex37.py +++ /dev/null @@ -1,15 +0,0 @@ -# Entity type - -# create a mesh -from SMESH_mechanic import * - -# make the mesh quadratic -mesh.ConvertToQuadratic() -# make some elements bi-quadratic -for face in SubFaceL[: len(SubFaceL) // 2]: - mesh.ConvertToQuadratic( theSubMesh=mesh.Group( face ), theToBiQuad=True ) - -# get triangles with 7 nodes -filter_tri = smesh.GetFilter(SMESH.FACE, SMESH.FT_EntityType,'=', SMESH.Entity_BiQuad_Triangle ) -ids_tri = mesh.GetIdsFromFilter(filter_tri) -print("Number of bi-quadratic triangles:", len(ids_tri)) diff --git a/doc/salome/examples/filters_ex38.py b/doc/salome/examples/filters_ex38.py deleted file mode 100644 index 2193c6615..000000000 --- a/doc/salome/examples/filters_ex38.py +++ /dev/null @@ -1,15 +0,0 @@ -# Ball diameter - -# create a mesh -from SMESH_mechanic import * - -# create several balls with increasing diameter -for i in range(1,10): - diameter = float( i ) - mesh.AddBall( i, diameter ) - pass - -# get balls with diameter > 5. -diam_filter = smesh.GetFilter(SMESH.BALL, SMESH.FT_BallDiameter,'>', 5. ) -ids = mesh.GetIdsFromFilter( diam_filter ) -print("Number of balls with diameter > 5:", len(ids)) diff --git a/doc/salome/examples/filters_ex39.py b/doc/salome/examples/filters_ex39.py deleted file mode 100644 index 52de1c3d7..000000000 --- a/doc/salome/examples/filters_ex39.py +++ /dev/null @@ -1,53 +0,0 @@ -# "Elements of a domain" filter and "Renumber" hypothesis - -import salome, SMESH -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create two boxes to have two domains in the mesh - -box1 = geompy.MakeBoxDXDYDZ( 100,100,100 ) -box2 = geompy.MakeTranslation( box1, 200, 0, 0 ) -boxes = geompy.MakeCompound( [box1, box2] ) -box1, box2 = geompy.SubShapeAll( boxes, geompy.ShapeType["SHAPE"], "box") - -vertex = geompy.SubShape( box1, geompy.ShapeType["VERTEX"], [1] ) - -# create a mesh - -mesh = smesh.Mesh( boxes ) -mesh.Segment(box1).NumberOfSegments( 5 ) # to have different nb of elements on the boxes -mesh.Segment(box2).NumberOfSegments( 10 ) -mesh.Quadrangle() -ijkAlgo = mesh.Hexahedron() - -# Use Renumber hypothesis to get hexahedra and nodes numbered like in a structured mesh. -# k axis of box1 will be ( 100,100,0 ) - ( 100,100,100 ) -# k axis of box2 will be ( 0,0,0 ) - (0,0,100), by default -v000 = geompy.MakeVertex( 100,100,0, theName='v000' ) # can use box sub-vertex or standalone one -v001 = geompy.GetVertexNearPoint( box1, geompy.MakeVertex(100,100,100), theName='v001') -ijkAlgo.Renumber([ smeshBuilder.BlockCS( box1, v000, v001 ) ]) - -mesh.Compute() - -# Create filters with FT_ConnectedElements criterion by pointing a domain in different ways: - -# using point coordinates in box_1 -nodeFilter = smesh.GetFilter( SMESH.NODE, SMESH.FT_ConnectedElements, "=", "1.,2,10", mesh=mesh ) -print("Nb. nodes in box_1:", len( nodeFilter.GetIDs())) - -# using point coordinates in box_2 -edgeFilter = smesh.GetFilter( SMESH.EDGE, SMESH.FT_ConnectedElements, "=", [202,1,1 ], mesh=mesh ) -print("Nb. segments in box_2:", len( edgeFilter.GetIDs())) - -# using a geom vertex of box_1 -faceFilter = smesh.GetFilter( SMESH.FACE, SMESH.FT_ConnectedElements, "=", vertex, mesh=mesh ) -print("Nb. faces in box_1:", len( edgeFilter.GetIDs())) - -# using node ID in box_2 -voluFilter = smesh.GetFilter( SMESH.VOLUME, SMESH.FT_ConnectedElements, "=", 10, mesh=mesh ) -print("Nb. volumes in box_2:", len( voluFilter.GetIDs())) - diff --git a/doc/salome/examples/filters_node_nb_conn.py b/doc/salome/examples/filters_node_nb_conn.py deleted file mode 100644 index dc7ce0ea1..000000000 --- a/doc/salome/examples/filters_node_nb_conn.py +++ /dev/null @@ -1,9 +0,0 @@ -# Number of connectivities of a node - -# create a mesh -from SMESH_mechanic import * - -# get nodes connected to more than 6 tetrahedra -conn_nb_filter = smesh.GetFilter(SMESH.NODE, SMESH.FT_NodeConnectivityNumber,'>', 6 ) -ids = mesh.GetIdsFromFilter( conn_nb_filter ) -print("Number of nodes connected to more than 6 tetrahedra:", len(ids)) diff --git a/doc/salome/examples/generate_flat_elements.py b/doc/salome/examples/generate_flat_elements.py deleted file mode 100644 index d14cb0495..000000000 --- a/doc/salome/examples/generate_flat_elements.py +++ /dev/null @@ -1,65 +0,0 @@ -# Double nodes on groups boundaries - -# This example represents an iron cable (a thin cylinder) in a concrete block (a big cylinder). -# The big cylinder is defined by two geometric volumes. - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - - -# geometry - -O = geompy.MakeVertex(0, 0, 0) -OX = geompy.MakeVectorDXDYDZ(1, 0, 0) -OY = geompy.MakeVectorDXDYDZ(0, 1, 0) -OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) -Vertex_1 = geompy.MakeVertex(50, 0, 0) -Cylinder_1 = geompy.MakeCylinder(O, OX, 10, 500) -Cylinder_2 = geompy.MakeCylinder(Vertex_1, OX, 100, 400) -Vertex_2 = geompy.MakeVertex(-200, -200, -200) -Vertex_3 = geompy.MakeVertex(250, 200, 200) -Box_1 = geompy.MakeBoxTwoPnt(Vertex_2, Vertex_3) -Fuse_1 = geompy.MakeFuse(Cylinder_1, Cylinder_2) -Partition_1 = geompy.MakePartition([Fuse_1], [Cylinder_1, Box_1], [], [], geompy.ShapeType["SOLID"], 0, [], 0) -[Solid_1,Solid_2] = geompy.GetShapesOnShape(Cylinder_1, Partition_1, geompy.ShapeType["SOLID"], GEOM.ST_IN) -[Solid_3,Solid_4] = geompy.GetShapesOnShape(Cylinder_2, Partition_1, geompy.ShapeType["SOLID"], GEOM.ST_IN) -Vertex_4 = geompy.MakeVertex(450, 0, 0) -Vertex_5 = geompy.MakeVertex(500, 0, 0) -Vertex_6 = geompy.MakeVertex(550, 0, 0) -vec1 = geompy.MakeVector(Vertex_4, Vertex_5) -vec2 = geompy.MakeVector(Vertex_5, Vertex_6) -[Face_1] = geompy.GetShapesOnPlane(Partition_1, geompy.ShapeType["FACE"], vec1, GEOM.ST_ON) -[Face_2] = geompy.GetShapesOnPlane(Partition_1, geompy.ShapeType["FACE"], vec2, GEOM.ST_ON) - -# meshing (we have linear tetrahedrons here, but other elements are OK) - -Mesh_1 = smesh.Mesh(Partition_1) -Regular_1D = Mesh_1.Segment() -Nb_Segments_1 = Regular_1D.NumberOfSegments(15) -MEFISTO_2D = Mesh_1.Triangle(algo=smeshBuilder.MEFISTO) -Length_From_Edges_2D = MEFISTO_2D.LengthFromEdges() -ALGO3D = Mesh_1.Tetrahedron() -isDone = Mesh_1.Compute() - -# relevant groups of volumes and faces - -Solid_1_1 = Mesh_1.GroupOnGeom(Solid_1,'Solid_1',SMESH.VOLUME) -Solid_2_1 = Mesh_1.GroupOnGeom(Solid_2,'Solid_2',SMESH.VOLUME) -Solid_3_1 = Mesh_1.GroupOnGeom(Solid_3,'Solid_3',SMESH.VOLUME) -Solid_4_1 = Mesh_1.GroupOnGeom(Solid_4,'Solid_4',SMESH.VOLUME) -Face_1_1 = Mesh_1.GroupOnGeom(Face_1,'Face_1',SMESH.FACE) -Face_2_1 = Mesh_1.GroupOnGeom(Face_2,'Face_2',SMESH.FACE) - -# Building of flat elements - -Mesh_1.DoubleNodesOnGroupBoundaries([Solid_1_1, Solid_2_1, Solid_3_1, Solid_4_1], 1) - -Mesh_1.CreateFlatElementsOnFacesGroups([Face_1_1, Face_2_1]) diff --git a/doc/salome/examples/grouping_elements_ex01.py b/doc/salome/examples/grouping_elements_ex01.py deleted file mode 100644 index c35de336b..000000000 --- a/doc/salome/examples/grouping_elements_ex01.py +++ /dev/null @@ -1,80 +0,0 @@ -# Create a Standalone Group - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Get ids of all faces with area > 100 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 100.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# create a group consisting of faces with area > 100 -aGroup1 = mesh.MakeGroupByIds("Area > 100", SMESH.FACE, anIds) - -# create a group that contains all nodes from the mesh -aGroup2 = mesh.CreateEmptyGroup(SMESH.NODE, "all nodes") -aGroup2.AddFrom(mesh.mesh) - - -# ==================================== -# Various methods of the Group object -# ==================================== - -aGroup = mesh.CreateEmptyGroup(SMESH.NODE, "aGroup") - -# set/get group name -aGroup.SetName( "new name" ) -print("name", aGroup.GetName()) - -# get group type (type of entities in the group, SMESH.NODE in our case) -print("type", aGroup.GetType()) - -# get number of entities (nodes in our case) in the group -print("size", aGroup.Size()) - -# check of emptiness -print("is empty", aGroup.IsEmpty()) - -# check of presence of an entity in the group -aGroup.Add([1,2]) # Add() method is specific to the standalone group -print("contains node 2", aGroup.Contains(2)) - -# get an entity by index -print("1st node", aGroup.GetID(1)) - -# get all entities -print("all", aGroup.GetIDs()) - -# get number of nodes (actual for groups of elements) -print("nb nodes", aGroup.GetNumberOfNodes()) - -# get underlying nodes (actual for groups of elements) -print("nodes", aGroup.GetNodeIDs()) - -# set/get color -import SALOMEDS -aGroup.SetColor( SALOMEDS.Color(1.,1.,0.)); -print("color", aGroup.GetColor()) - -# ---------------------------------------------------------------------------- -# methods specific to the standalone group and not present in GroupOnGeometry -# and GroupOnFilter -# ---------------------------------------------------------------------------- - -# clear the group's contents -aGroup.Clear() - -# add contents of other object (group, sub-mesh, filter) -aGroup.AddFrom( aGroup2 ) - -# removes entities -aGroup.Remove( [2,3,4] ) - - - - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/grouping_elements_ex02.py b/doc/salome/examples/grouping_elements_ex02.py deleted file mode 100644 index 16feda41f..000000000 --- a/doc/salome/examples/grouping_elements_ex02.py +++ /dev/null @@ -1,46 +0,0 @@ -# Create a Group on Geometry - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBox(0., 0., 0., 100., 100., 100.) -geompy.addToStudy(box, "box") - -# add the first face of the box to the study -subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) -face = subShapeList[0] -geompy.addToStudyInFather(box, face, "face 1") - -# create group of edges on the face -aGeomGroupE = geompy.CreateGroup(face, geompy.ShapeType["EDGE"]) -geompy.AddObject(aGeomGroupE, 3) -geompy.AddObject(aGeomGroupE, 6) -geompy.AddObject(aGeomGroupE, 8) -geompy.AddObject(aGeomGroupE, 10) -geompy.addToStudyInFather(face, aGeomGroupE, "Group of Edges") - -# create quadrangle 2D mesh on the box -quadra = smesh.Mesh(box, "Box : quadrangle 2D mesh") -algo1D = quadra.Segment() -quadra.Quadrangle() -algo1D.NumberOfSegments(7) - -# compute the mesh -quadra.Compute() - -# create SMESH group on the face with name "SMESHGroup1" -aSmeshGroup1 = quadra.GroupOnGeom(face, "SMESHGroup1") - -# create SMESH group on with default name -aSmeshGroup2 = quadra.GroupOnGeom(aGeomGroupE) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/grouping_elements_ex03.py b/doc/salome/examples/grouping_elements_ex03.py deleted file mode 100644 index d6d6e83d9..000000000 --- a/doc/salome/examples/grouping_elements_ex03.py +++ /dev/null @@ -1,49 +0,0 @@ -# Create a Group on Filter - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -box = geompy.MakeBoxDXDYDZ(10,10,10) - -# make a mesh with quadrangles of different area in range [1,16] -mesh = smesh.Mesh(box,"Quad mesh") -hyp1D = mesh.Segment().StartEndLength( 1, 4 ) -mesh.Quadrangle() -mesh.Compute() - -# create a group on filter selecting faces of medium size -critaria = [ \ - smesh.GetCriterion(SMESH.FACE, SMESH.FT_Area, ">", 1.1, BinaryOp=SMESH.FT_LogicalAND ), - smesh.GetCriterion(SMESH.FACE, SMESH.FT_Area, "<", 15.0 ) - ] -filt = smesh.GetFilterFromCriteria( critaria ) -filtGroup = mesh.GroupOnFilter( SMESH.FACE, "group on filter", filt ) -print("Group on filter contains %s elements" % filtGroup.Size()) - -# group on filter is updated if the mesh is modified -hyp1D.SetStartLength( 2.5 ) -hyp1D.SetEndLength( 2.5 ) -mesh.Compute() -print("After mesh change, group on filter contains %s elements" % filtGroup.Size()) - -# set a new filter defining the group -filt2 = smesh.GetFilter( SMESH.FACE, SMESH.FT_RangeOfIds, "1-50" ) -filtGroup.SetFilter( filt2 ) -print("With a new filter, group on filter contains %s elements" % filtGroup.Size()) - -# group is updated at modification of the filter -filt2.SetCriteria( [ smesh.GetCriterion( SMESH.FACE, SMESH.FT_RangeOfIds, "1-70" )]) -filtIDs3 = filtGroup.GetIDs() -print("After filter modification, group on filter contains %s elements" % filtGroup.Size()) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/grouping_elements_ex04.py b/doc/salome/examples/grouping_elements_ex04.py deleted file mode 100644 index e0e58acc9..000000000 --- a/doc/salome/examples/grouping_elements_ex04.py +++ /dev/null @@ -1,45 +0,0 @@ -# Edit a Group - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Get ids of all faces with area > 35 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 35.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area > 35, Nb = ", len(anIds)) - -# create a group by adding elements with area > 35 -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 35") -aGroup.Add(anIds) - -# Get ids of all faces with area > 40 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 40.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area > 40, Nb = ", len(anIds)) - -# create a group of elements with area [35; 40] by removing elements with area > 40 from group aGroup -aGroup.Remove(anIds) -aGroup.SetName("35 < Area < 40") - -# print the result -aGroupElemIDs = aGroup.GetListOfID() - -print("Criterion: 35 < Area < 40, Nb = ", len(aGroupElemIDs)) - -j = 1 -for i in range(len(aGroupElemIDs)): - if j > 20: j = 1; print("") - print(aGroupElemIDs[i], end=' ') - j = j + 1 - pass -print("") - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/grouping_elements_ex05.py b/doc/salome/examples/grouping_elements_ex05.py deleted file mode 100644 index 96aa7fa56..000000000 --- a/doc/salome/examples/grouping_elements_ex05.py +++ /dev/null @@ -1,55 +0,0 @@ -# Union of groups - -import SMESH_mechanic -import SMESH, SALOMEDS - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : AREA > 20 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 20.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area > 20, Nb = ", len( anIds )) - -# create a group by adding elements with area > 20 -aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 20") -aGroup1.Add(anIds) - -# Criterion : AREA = 20 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_EqualTo, 20.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area = 20, Nb = ", len( anIds )) - -# create a group by adding elements with area = 20 -aGroup2 = mesh.CreateEmptyGroup( SMESH.FACE, "Area = 20" ) - -aGroup2.Add(anIds) - -# create union group : area >= 20 -aGroup3 = mesh.UnionListOfGroups([aGroup1, aGroup2], "Area >= 20") -aGroup3.SetColor( SALOMEDS.Color(1.,1.,0.)); -print("Criterion: Area >= 20, Nb = ", len(aGroup3.GetListOfID())) -# Please note that also there is UnionGroups() method which works with two groups only - -# Criterion : AREA < 20 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 20.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area < 20, Nb = ", len(anIds)) - -# create a group by adding elements with area < 20 -aGroup4 = mesh.CreateEmptyGroup(SMESH.FACE, "Area < 20") -aGroup4.Add(anIds) -aGroup4.SetColor( SALOMEDS.Color(1.,0.,0.)); - -# create union group : area >= 20 and area < 20 -aGroup5 = mesh.UnionListOfGroups([aGroup3, aGroup4], "Any Area") -print("Criterion: Any Area, Nb = ", len(aGroup5.GetListOfID())) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/grouping_elements_ex06.py b/doc/salome/examples/grouping_elements_ex06.py deleted file mode 100644 index 9423cf7d4..000000000 --- a/doc/salome/examples/grouping_elements_ex06.py +++ /dev/null @@ -1,37 +0,0 @@ -# Intersection of groups - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : AREA > 20 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 20.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area > 20, Nb = ", len(anIds)) - -# create a group by adding elements with area > 20 -aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 20") -aGroup1.Add(anIds) - -# Criterion : AREA < 60 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 60.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area < 60, Nb = ", len(anIds)) - -# create a group by adding elements with area < 60 -aGroup2 = mesh.CreateEmptyGroup(SMESH.FACE, "Area < 60") -aGroup2.Add(anIds) - -# create an intersection of groups : 20 < area < 60 -aGroup3 = mesh.IntersectListOfGroups([aGroup1, aGroup2], "20 < Area < 60") -print("Criterion: 20 < Area < 60, Nb = ", len(aGroup3.GetListOfID())) -# Please note that also there is IntersectGroups() method which works with two groups only - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/grouping_elements_ex07.py b/doc/salome/examples/grouping_elements_ex07.py deleted file mode 100644 index 800e8e80a..000000000 --- a/doc/salome/examples/grouping_elements_ex07.py +++ /dev/null @@ -1,35 +0,0 @@ -# Cut of groups - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : AREA > 20 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 20.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area > 20, Nb = ", len(anIds)) - -# create a group by adding elements with area > 20 -aGroupMain = mesh.MakeGroupByIds("Area > 20", SMESH.FACE, anIds) - -# Criterion : AREA < 60 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 60.) - -anIds = mesh.GetIdsFromFilter(aFilter) - -print("Criterion: Area < 60, Nb = ", len(anIds)) - -# create a group by adding elements with area < 60 -aGroupTool = mesh.MakeGroupByIds("Area < 60", SMESH.FACE, anIds) - -# create a cut of groups : area >= 60 -aGroupRes = mesh.CutGroups(aGroupMain, aGroupTool, "Area >= 60") -print("Criterion: Area >= 60, Nb = ", len(aGroupRes.GetListOfID())) -# Please note that also there is CutListOfGroups() method which works with lists of groups of any lengths - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/grouping_elements_ex08.py b/doc/salome/examples/grouping_elements_ex08.py deleted file mode 100644 index 76dc93fcc..000000000 --- a/doc/salome/examples/grouping_elements_ex08.py +++ /dev/null @@ -1,33 +0,0 @@ -# Creating groups of entities basing on nodes of other groups - -import SMESH_mechanic -import SMESH, SALOMEDS - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : AREA > 100 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, 100.) - -# create a group by adding elements with area > 100 -aSrcGroup1 = mesh.GroupOnFilter(SMESH.FACE, "Area > 100", aFilter) -aSrcGroup1.SetColor( SALOMEDS.Color(1.,1.,0.)) -print("Criterion: Area > 100, Nb = ", aSrcGroup1.Size()) - -# Criterion : AREA < 30 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, 30.) - -# create a group by adding elements with area < 30 -aSrcGroup2 = mesh.GroupOnFilter(SMESH.FACE, "Area < 30", aFilter) -aSrcGroup2.SetColor( SALOMEDS.Color(1.,0.,0.)) -print("Criterion: Area < 30, Nb = ", aSrcGroup2.Size()) - - -# Create group of edges using source groups of faces -aGrp = mesh.CreateDimGroup( [aSrcGroup1, aSrcGroup2], SMESH.EDGE, "Edges" ) - -# Create group of nodes using source groups of faces -aGrp = mesh.CreateDimGroup( [aSrcGroup1, aSrcGroup2], SMESH.NODE, "Nodes" ) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/grouping_elements_ex09.py b/doc/salome/examples/grouping_elements_ex09.py deleted file mode 100644 index 988dad3cf..000000000 --- a/doc/salome/examples/grouping_elements_ex09.py +++ /dev/null @@ -1,16 +0,0 @@ -# Creating groups of faces separated by sharp edges - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -from salome.smesh import smeshBuilder -geompy = geomBuilder.New() -smesh = smeshBuilder.New() - -# create a mesh on a box -box = geompy.MakeBoxDXDYDZ( 10,10,10, theName="Box" ) -mesh = smesh.Mesh(box,"Mesh") -mesh.AutomaticHexahedralization() - -# create groups of faces of each side of the box -groups = mesh.FaceGroupsSeparatedByEdges( 89 ) diff --git a/doc/salome/examples/measurements_ex01.py b/doc/salome/examples/measurements_ex01.py deleted file mode 100644 index b8ccae02a..000000000 --- a/doc/salome/examples/measurements_ex01.py +++ /dev/null @@ -1,58 +0,0 @@ -# Minimum Distance - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - -from SMESH_mechanic import mesh as mesh1 -from SMESH_test1 import mesh as mesh2 - -mesh1.Compute() -mesh2.Compute() - -# compute min distance from mesh1 to the origin (not available yet) -smesh.MinDistance(mesh1) - -# compute min distance from node 10 of mesh1 to the origin -smesh.MinDistance(mesh1, id1=10) -# ... or -mesh1.MinDistance(10) - -# compute min distance between nodes 10 and 20 of mesh1 -smesh.MinDistance(mesh1, id1=10, id2=20) -# ... or -mesh1.MinDistance(10, 20) - -# compute min distance from element 100 of mesh1 to the origin (not available yet) -smesh.MinDistance(mesh1, id1=100, isElem1=True) -# ... or -mesh1.MinDistance(100, isElem1=True) - -# compute min distance between elements 100 and 200 of mesh1 (not available yet) -smesh.MinDistance(mesh1, id1=100, id2=200, isElem1=True, isElem2=True) -# ... or -mesh1.MinDistance(100, 200, True, True) - -# compute min distance from element 100 to node 20 of mesh1 (not available yet) -smesh.MinDistance(mesh1, id1=100, id2=20, isElem1=True) -# ... or -mesh1.MinDistance(100, 20, True) - -# compute min distance from mesh1 to mesh2 (not available yet) -smesh.MinDistance(mesh1, mesh2) - -# compute min distance from node 10 of mesh1 to node 20 of mesh2 -smesh.MinDistance(mesh1, mesh2, 10, 20) - -# compute min distance from node 10 of mesh1 to element 200 of mesh2 (not available yet) -smesh.MinDistance(mesh1, mesh2, 10, 200, isElem2=True) - -# etc... - diff --git a/doc/salome/examples/measurements_ex02.py b/doc/salome/examples/measurements_ex02.py deleted file mode 100644 index 20c04bcc8..000000000 --- a/doc/salome/examples/measurements_ex02.py +++ /dev/null @@ -1,33 +0,0 @@ -# Bounding Box - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - -from SMESH_mechanic import mesh as mesh1 -from SMESH_test1 import mesh as mesh2 - -mesh1.Compute() -mesh2.Compute() - -# compute bounding box for mesh1 -mesh1.BoundingBox() - -# compute bounding box for list of nodes of mesh1 -mesh1.BoundingBox([363, 364, 370, 371, 372, 373, 379, 380, 381]) - -# compute bounding box for list of elements of mesh1 -mesh1.BoundingBox([363, 364, 370, 371, 372, 373, 379, 380, 381], isElem=True) - -# compute common bounding box of mesh1 and mesh2 -smesh.BoundingBox([mesh1, mesh2]) - -# etc... diff --git a/doc/salome/examples/measurements_ex03.py b/doc/salome/examples/measurements_ex03.py deleted file mode 100644 index 217d9cb23..000000000 --- a/doc/salome/examples/measurements_ex03.py +++ /dev/null @@ -1,79 +0,0 @@ -# Basic Properties - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBoxDXDYDZ(100,100,100) -face = geompy.SubShapeAllSorted(box, geompy.ShapeType['FACE'])[0] - -# mesh a box -mesh = smesh.Mesh(box) -submesh_1d = mesh.Segment().NumberOfSegments(5) -submesh_2d = mesh.Quadrangle() -submesh_3d = mesh.Hexahedron() -submesh_2d_face = mesh.Triangle(face) -mesh.Compute() - -# create a group - -group_2d = mesh.Group(face) - -# compute basic properties - -print("Get basic properties: approach 1 (via measurements tool) ----") - -measure = smesh.CreateMeasurements() - -print("* for mesh:") -print(" length:", measure.Length(mesh.mesh)) -print(" area:", measure.Area(mesh.mesh)) -print(" volume:", measure.Volume(mesh.mesh)) - -print("* for group (2d):") -print(" length:", measure.Length(group_2d)) -print(" area:", measure.Area(group_2d)) -print(" volume:", measure.Volume(group_2d)) - -print("* for submesh (2d):") -print(" length:", measure.Length(submesh_2d_face.GetSubMesh())) -print(" area:", measure.Area(submesh_2d_face.GetSubMesh())) -print(" volume:", measure.Volume(submesh_2d_face.GetSubMesh())) - -measure.UnRegister() - -print("Get basic properties: approach 2 (via smeshBuilder) ----") - -print("* for mesh:") -print(" length:", smesh.GetLength(mesh)) -print(" area:", smesh.GetArea(mesh)) -print(" volume:", smesh.GetVolume(mesh)) - -print("* for group (2d):") -print(" length:", smesh.GetLength(group_2d)) -print(" area:", smesh.GetArea(group_2d)) -print(" volume:", smesh.GetVolume(group_2d)) - -print("* for submesh (2d):") -print(" length:", smesh.GetLength(submesh_2d_face)) -print(" area:", smesh.GetArea(submesh_2d_face)) -print(" volume:", smesh.GetVolume(submesh_2d_face)) - -print("Get basic properties: approach 3 (via smeshBuilder.Mesh) ----") - -print("* for mesh:") -print(" length:", mesh.GetLength()) -print(" area:", mesh.GetArea()) -print(" volume:", mesh.GetVolume()) - -print("* for group (2d): unsupported") - -print("* for submesh (2d): unsupported") diff --git a/doc/salome/examples/measurements_ex04.py b/doc/salome/examples/measurements_ex04.py deleted file mode 100644 index b143267ba..000000000 --- a/doc/salome/examples/measurements_ex04.py +++ /dev/null @@ -1,26 +0,0 @@ -# Angle measurement - - -import salome -salome.salome_init_without_session() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# use smeshBuilder.GetAngle() to compute angle between 3 arbitrary points - -p0 = [1,0,0] -p1 = [0,0,0] -p2 = [0,1,0] - -a1 = smesh.GetAngle(p0, p1, p2) -print("Right angle measure", a1 ) - -# use Mesh.GetAngle() to compute angle between 3 nodes of a mesh - -mesh = smesh.Mesh() -n0 = mesh.AddNode( *p0 ) -n1 = mesh.AddNode( *p1 ) -n2 = mesh.AddNode( *p2 ) - -a2 = mesh.GetAngle( n0,n1,n2 ) - diff --git a/doc/salome/examples/modifying_meshes_cut_triangles.py b/doc/salome/examples/modifying_meshes_cut_triangles.py deleted file mode 100644 index 250b55952..000000000 --- a/doc/salome/examples/modifying_meshes_cut_triangles.py +++ /dev/null @@ -1,36 +0,0 @@ -# Cutting Triangles - -import salome -salome.salome_init_without_session() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create 3 triangles and 1 segment all sharing edge 1-2 -mesh = smesh.Mesh() -n1 = mesh.AddNode( 0, 0, 0) -n2 = mesh.AddNode( 0, 0, -10) -n3 = mesh.AddNode( 10, 0, 0) -n4 = mesh.AddNode( 0, 10, 0) -n5 = mesh.AddNode( 0, -10, 0) -mesh.AddFace([ n1, n2, n3]) -mesh.AddFace([ n1, n2, n4]) -mesh.AddFace([ n1, n2, n5]) -mesh.AddEdge([ n1, n2] ) - -# =========================================================================== -# cut all the triangles and the segment by setting a new node on the segment -# =========================================================================== - -mesh.AddNodeOnSegment( n1, n2, 0.6 ) -assert mesh.NbNodes() == 6 # one new node created -assert mesh.NbTriangles() == 6 # each of the 3 triangles is split into two -assert mesh.NbEdges() == 2 # a segment is split into two - -# =============================================================== -# cut a triangle into three by adding a new node on the triangle -# =============================================================== - -triangleID = 1 -mesh.AddNodeOnFace( triangleID, 2, 0, -6 ) -assert mesh.NbNodes() == 7 # one new node created -assert mesh.NbTriangles() == 8 # the triangles is split into three diff --git a/doc/salome/examples/modifying_meshes_ex01.py b/doc/salome/examples/modifying_meshes_ex01.py deleted file mode 100644 index 2214610cb..000000000 --- a/doc/salome/examples/modifying_meshes_ex01.py +++ /dev/null @@ -1,16 +0,0 @@ -# Add Node - -import salome -salome.salome_init_without_session() - -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - - -mesh = smesh.Mesh() - -# add node -new_id = mesh.AddNode(50, 10, 0) -print("") -if new_id == 0: print("KO node addition.") -else: print("New Node has been added with ID ", new_id) diff --git a/doc/salome/examples/modifying_meshes_ex02.py b/doc/salome/examples/modifying_meshes_ex02.py deleted file mode 100644 index 7b0b9f348..000000000 --- a/doc/salome/examples/modifying_meshes_ex02.py +++ /dev/null @@ -1,20 +0,0 @@ -# Add 0D Element - -import salome -salome.salome_init_without_session() - -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - - -mesh = smesh.Mesh() - -# add node -node_id = mesh.AddNode(50, 10, 0) - -# add 0D Element -new_id = mesh.Add0DElement(node_id) - -print("") -if new_id == 0: print("KO node addition.") -else: print("New 0D Element has been added with ID ", new_id) diff --git a/doc/salome/examples/modifying_meshes_ex03.py b/doc/salome/examples/modifying_meshes_ex03.py deleted file mode 100644 index 59198ccd6..000000000 --- a/doc/salome/examples/modifying_meshes_ex03.py +++ /dev/null @@ -1,52 +0,0 @@ -# Add 0D Element on Element Nodes - - -import salome -salome.salome_init_without_session() - -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - - -# create a geometry -box = geompy.MakeBoxDXDYDZ( 10, 10, 10 ) -face = geompy.SubShapeAll( box, geompy.ShapeType["FACE"])[0] - -# make 3D mesh -mesh = smesh.Mesh( box ) -mesh.AutomaticHexahedralization(0) - -# create 0D elements on all nodes of the mesh -res = mesh.Add0DElementsToAllNodes( mesh ) - -# find 0D elements on all nodes of the mesh, all found nodes are added to a new group -groupName = "0Dmesh" -res = mesh.Add0DElementsToAllNodes( mesh, groupName ) -mesh.RemoveGroupWithContents( res ) # remove all found 0D elements - -# create 0D elements on all nodes of a sub-mesh, with group creation -groupName = "0Dsubmesh" -submesh = mesh.GetSubMesh( face, "faceSM") -res = mesh.Add0DElementsToAllNodes( submesh, groupName ) - -# create 0D elements on all nodes of a group -group = mesh.Group( face, "faceGroup" ) -res = mesh.Add0DElementsToAllNodes( group ) - -# remove all 0D elements -mesh.RemoveElements( mesh.GetIdsFromFilter( smesh.GetFilter( SMESH.ELEM0D, - SMESH.FT_ElemGeomType, - "=",SMESH.Geom_POINT ))) - -# create 0D elements on all nodes of some elements -res = mesh.Add0DElementsToAllNodes( mesh.GetElementsId() ) - -mesh.RemoveElements( mesh.GetElementsByType( SMESH.ELEM0D )) - -# create 0D elements on some nodes -nodes = list(range(1,10)) -res = mesh.Add0DElementsToAllNodes( mesh.GetIDSource( nodes, SMESH.NODE )) diff --git a/doc/salome/examples/modifying_meshes_ex04.py b/doc/salome/examples/modifying_meshes_ex04.py deleted file mode 100644 index ad8d151b0..000000000 --- a/doc/salome/examples/modifying_meshes_ex04.py +++ /dev/null @@ -1,15 +0,0 @@ -# Add Edge - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh -print("") - -# add node -n1 = mesh.AddNode(50, 10, 0) -if n1 == 0: print("KO node addition.") - -# add edge -e1 = mesh.AddEdge([n1, 38]) -if e1 == 0: print("KO edge addition.") -else: print("New Edge has been added with ID ", e1) diff --git a/doc/salome/examples/modifying_meshes_ex05.py b/doc/salome/examples/modifying_meshes_ex05.py deleted file mode 100644 index c48042a6f..000000000 --- a/doc/salome/examples/modifying_meshes_ex05.py +++ /dev/null @@ -1,15 +0,0 @@ -# Add Triangle - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh -print("") - -# add node -n1 = mesh.AddNode(50, 10, 0) -if n1 == 0: print("KO node addition.") - -# add triangle -t1 = mesh.AddFace([n1, 38, 39]) -if t1 == 0: print("KO triangle addition.") -else: print("New Triangle has been added with ID ", t1) diff --git a/doc/salome/examples/modifying_meshes_ex06.py b/doc/salome/examples/modifying_meshes_ex06.py deleted file mode 100644 index ff568e0f1..000000000 --- a/doc/salome/examples/modifying_meshes_ex06.py +++ /dev/null @@ -1,18 +0,0 @@ -# Add Quadrangle - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh -print("") - -# add node -n1 = mesh.AddNode(50, 10, 0) -if n1 == 0: print("KO node addition.") - -n2 = mesh.AddNode(40, 20, 0) -if n2 == 0: print("KO node addition.") - -# add quadrangle -q1 = mesh.AddFace([n2, n1, 38, 39]) -if q1 == 0: print("KO quadrangle addition.") -else: print("New Quadrangle has been added with ID ", q1) diff --git a/doc/salome/examples/modifying_meshes_ex07.py b/doc/salome/examples/modifying_meshes_ex07.py deleted file mode 100644 index 93fa2d1cc..000000000 --- a/doc/salome/examples/modifying_meshes_ex07.py +++ /dev/null @@ -1,15 +0,0 @@ -# Add Tetrahedron - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh -print("") - -# add node -n1 = mesh.AddNode(50, 10, 0) -if n1 == 0: print("KO node addition.") - -# add tetrahedron -t1 = mesh.AddVolume([n1, 38, 39, 246]) -if t1 == 0: print("KO tetrahedron addition.") -else: print("New Tetrahedron has been added with ID ", t1) diff --git a/doc/salome/examples/modifying_meshes_ex08.py b/doc/salome/examples/modifying_meshes_ex08.py deleted file mode 100644 index 1cf27c5df..000000000 --- a/doc/salome/examples/modifying_meshes_ex08.py +++ /dev/null @@ -1,19 +0,0 @@ -# Add Hexahedron - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh -print("") - -# add nodes -nId1 = mesh.AddNode(50, 10, 0) -nId2 = mesh.AddNode(47, 12, 0) -nId3 = mesh.AddNode(50, 10, 10) -nId4 = mesh.AddNode(47, 12, 10) - -if nId1 == 0 or nId2 == 0 or nId3 == 0 or nId4 == 0: print("KO node addition.") - -# add hexahedron -vId = mesh.AddVolume([nId2, nId1, 38, 39, nId4, nId3, 245, 246]) -if vId == 0: print("KO Hexahedron addition.") -else: print("New Hexahedron has been added with ID ", vId) diff --git a/doc/salome/examples/modifying_meshes_ex09.py b/doc/salome/examples/modifying_meshes_ex09.py deleted file mode 100644 index 914e91b5b..000000000 --- a/doc/salome/examples/modifying_meshes_ex09.py +++ /dev/null @@ -1,36 +0,0 @@ -# Add Polygon - -import salome -salome.salome_init_without_session() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create an empty mesh structure -mesh = smesh.Mesh() - -# a method to build a polygonal mesh element with angles: -def MakePolygon (a_mesh, x0, y0, z0, radius, nb_vert, smesh_builder): - import math - - al = 2.0 * math.pi / nb_vert - node_ids = [] - - # Create nodes for a polygon - for ii in range(nb_vert): - nid = smesh_builder.AddNode(x0 + radius * math.cos(ii*al), - y0 + radius * math.sin(ii*al), - z0) - node_ids.append(nid) - pass - - # Create a polygon - return smesh_builder.AddPolygonalFace(node_ids) - -# Create three polygons -f1 = MakePolygon(mesh, 0, 0, 0, 30, 13, smesh_builder=mesh) -f2 = MakePolygon(mesh, 0, 0, 10, 21, 9, smesh_builder=mesh) -f3 = MakePolygon(mesh, 0, 0, 20, 13, 6, smesh_builder=mesh) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex10.py b/doc/salome/examples/modifying_meshes_ex10.py deleted file mode 100644 index ed49c4fa6..000000000 --- a/doc/salome/examples/modifying_meshes_ex10.py +++ /dev/null @@ -1,63 +0,0 @@ -# Add Polyhedron - - -import salome -salome.salome_init_without_session() - -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -import math - -# create an empty mesh structure -mesh = smesh.Mesh() - -# Create nodes for 12-hedron with pentagonal faces -al = 2 * math.pi / 5.0 -cosal = math.cos(al) -aa = 13 -rr = aa / (2.0 * math.sin(al/2.0)) -dr = 2.0 * rr * cosal -r1 = rr + dr -dh = rr * math.sqrt(2.0 * (1.0 - cosal * (1.0 + 2.0 * cosal))) -hh = 2.0 * dh - dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh - -dd = [] # top -cc = [] # below top -bb = [] # above bottom -aa = [] # bottom - -for i in range(5): - cos_bot = math.cos(i*al) - sin_bot = math.sin(i*al) - - cos_top = math.cos(i*al + al/2.0) - sin_top = math.sin(i*al + al/2.0) - - nd = mesh.AddNode(rr * cos_top, rr * sin_top, hh ) # top - nc = mesh.AddNode(r1 * cos_top, r1 * sin_top, hh - dh) # below top - nb = mesh.AddNode(r1 * cos_bot, r1 * sin_bot, dh) # above bottom - na = mesh.AddNode(rr * cos_bot, rr * sin_bot, 0) # bottom - dd.append(nd) # top - cc.append(nc) # below top - bb.append(nb) # above bottom - aa.append(na) # bottom - pass - -# Create a polyhedral volume (12-hedron with pentagonal faces) -mesh.AddPolyhedralVolume([dd[0], dd[1], dd[2], dd[3], dd[4], # top - dd[0], cc[0], bb[1], cc[1], dd[1], # - - dd[1], cc[1], bb[2], cc[2], dd[2], # - - dd[2], cc[2], bb[3], cc[3], dd[3], # - below top - dd[3], cc[3], bb[4], cc[4], dd[4], # - - dd[4], cc[4], bb[0], cc[0], dd[0], # - - aa[4], bb[4], cc[4], bb[0], aa[0], # . - aa[3], bb[3], cc[3], bb[4], aa[4], # . - aa[2], bb[2], cc[2], bb[3], aa[3], # . above bottom - aa[1], bb[1], cc[1], bb[2], aa[2], # . - aa[0], bb[0], cc[0], bb[1], aa[1], # . - aa[0], aa[1], aa[2], aa[3], aa[4]], # bottom - [5,5,5,5,5,5,5,5,5,5,5,5]) - -if salome.sg.hasDesktop(): - salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex11.py b/doc/salome/examples/modifying_meshes_ex11.py deleted file mode 100644 index 16ffe8777..000000000 --- a/doc/salome/examples/modifying_meshes_ex11.py +++ /dev/null @@ -1,18 +0,0 @@ -# Removing Nodes - -import SMESH_mechanic -mesh = SMESH_mechanic.mesh - -# remove nodes #246 and #255 - -res = mesh.RemoveNodes([246, 255]) -if res == 1: print("Nodes removing is OK!") -else: print("KO nodes removing.") - - -# Removing a Node with Reconnection -# ================================== - -print("Before RemoveNodeWithReconnection(): %s nodes, %s faces" % ( mesh.NbNodes(), mesh.NbFaces())) -mesh.RemoveNodeWithReconnection( 600 ) -print("After RemoveNodeWithReconnection(): %s nodes, %s faces" % ( mesh.NbNodes(), mesh.NbFaces())) diff --git a/doc/salome/examples/modifying_meshes_ex12.py b/doc/salome/examples/modifying_meshes_ex12.py deleted file mode 100644 index 8ef8356f0..000000000 --- a/doc/salome/examples/modifying_meshes_ex12.py +++ /dev/null @@ -1,10 +0,0 @@ -# Removing Elements - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh - -# remove three elements: #850, #859 and #814 -res = mesh.RemoveElements([850, 859, 814]) -if res == 1: print("Elements removing is OK!") -else: print("KO Elements removing.") diff --git a/doc/salome/examples/modifying_meshes_ex13.py b/doc/salome/examples/modifying_meshes_ex13.py deleted file mode 100644 index 3c2e4e0bf..000000000 --- a/doc/salome/examples/modifying_meshes_ex13.py +++ /dev/null @@ -1,13 +0,0 @@ -# Removing Orphan Nodes - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh - -# add orphan nodes -mesh.AddNode(0,0,0) -mesh.AddNode(1,1,1) -# remove just created orphan nodes -res = mesh.RemoveOrphanNodes() -if res == 1: print("Removed %d nodes!" % res) -else: print("KO nodes removing.") diff --git a/doc/salome/examples/modifying_meshes_ex14.py b/doc/salome/examples/modifying_meshes_ex14.py deleted file mode 100644 index 7bb10fd9f..000000000 --- a/doc/salome/examples/modifying_meshes_ex14.py +++ /dev/null @@ -1,9 +0,0 @@ -# Renumbering Nodes and Elements - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh - -mesh.RenumberNodes() - -mesh.RenumberElements() diff --git a/doc/salome/examples/modifying_meshes_ex15.py b/doc/salome/examples/modifying_meshes_ex15.py deleted file mode 100644 index 7d62245e8..000000000 --- a/doc/salome/examples/modifying_meshes_ex15.py +++ /dev/null @@ -1,52 +0,0 @@ -# Moving Nodes - - -import salome -salome.salome_init_without_session() - -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - - -box = geompy.MakeBoxDXDYDZ(200, 200, 200) - -mesh = smesh.Mesh( box ) -mesh.Segment().AutomaticLength(0.1) -mesh.Quadrangle() -mesh.Compute() - -# find node at (0,0,0) which is located on a geom vertex -node000 = None -for vId in geompy.SubShapeAllIDs( box, geompy.ShapeType["VERTEX"]): - if node000: break - nodeIds = mesh.GetSubMeshNodesId( vId, True ) - for node in nodeIds: - xyz = mesh.GetNodeXYZ( node ) - if xyz[0] == 0 and xyz[1] == 0 and xyz[2] == 0 : - node000 = node - pass - pass - pass - -if not node000: - raise Exception("node000 not found") - -# find node000 using a dedicated function -n = mesh.FindNodeClosestTo( -1,-1,-1 ) -if not n == node000: - raise Exception("FindNodeClosestTo() returns " + str( n ) + " != " + str( node000 )) - -# move node000 to a new location -x,y,z = -10, -10, -10 -n = mesh.MoveNode( n,x,y,z ) -if not n: - raise Exception("MoveNode() returns " + n) - -# check the coordinates of the node000 -xyz = mesh.GetNodeXYZ( node000 ) -if not ( xyz[0] == x and xyz[1] == y and xyz[2] == z) : - raise Exception("Wrong coordinates: " + str( xyz ) + " != " + str( [x,y,z] )) diff --git a/doc/salome/examples/modifying_meshes_ex16.py b/doc/salome/examples/modifying_meshes_ex16.py deleted file mode 100644 index 82bd0e0cf..000000000 --- a/doc/salome/examples/modifying_meshes_ex16.py +++ /dev/null @@ -1,54 +0,0 @@ -# Diagonal Inversion - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -# create an empty mesh structure -mesh = smesh.Mesh() - -# create the following mesh: -# .----.----.----. -# | /| /| /| -# | / | / | / | -# | / | / | / | -# |/ |/ |/ | -# .----.----.----. - -bb = [0, 0, 0, 0] -tt = [0, 0, 0, 0] -ff = [0, 0, 0, 0, 0, 0] - -bb[0] = mesh.AddNode( 0., 0., 0.) -bb[1] = mesh.AddNode(10., 0., 0.) -bb[2] = mesh.AddNode(20., 0., 0.) -bb[3] = mesh.AddNode(30., 0., 0.) - -tt[0] = mesh.AddNode( 0., 15., 0.) -tt[1] = mesh.AddNode(10., 15., 0.) -tt[2] = mesh.AddNode(20., 15., 0.) -tt[3] = mesh.AddNode(30., 15., 0.) - -ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]]) -ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]]) -ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]]) -ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]]) -ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]]) -ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]]) - -# inverse the diagonal bb[1] - tt[2] -print("\nDiagonal inversion ... ", end=' ') -res = mesh.InverseDiag(bb[1], tt[2]) -if not res: print("failed!") -else: print("done.") - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex17.py b/doc/salome/examples/modifying_meshes_ex17.py deleted file mode 100644 index 833c5027f..000000000 --- a/doc/salome/examples/modifying_meshes_ex17.py +++ /dev/null @@ -1,54 +0,0 @@ -# Uniting two Triangles - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -# create an empty mesh structure -mesh = smesh.Mesh() - -# create the following mesh: -# .----.----.----. -# | /| /| /| -# | / | / | / | -# | / | / | / | -# |/ |/ |/ | -# .----.----.----. - -bb = [0, 0, 0, 0] -tt = [0, 0, 0, 0] -ff = [0, 0, 0, 0, 0, 0] - -bb[0] = mesh.AddNode( 0., 0., 0.) -bb[1] = mesh.AddNode(10., 0., 0.) -bb[2] = mesh.AddNode(20., 0., 0.) -bb[3] = mesh.AddNode(30., 0., 0.) - -tt[0] = mesh.AddNode( 0., 15., 0.) -tt[1] = mesh.AddNode(10., 15., 0.) -tt[2] = mesh.AddNode(20., 15., 0.) -tt[3] = mesh.AddNode(30., 15., 0.) - -ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]]) -ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]]) -ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]]) -ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]]) -ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]]) -ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]]) - -# delete the diagonal bb[1] - tt[2] -print("\nUnite two triangles ... ", end=' ') -res = mesh.DeleteDiag(bb[1], tt[2]) -if not res: print("failed!") -else: print("done.") - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex18.py b/doc/salome/examples/modifying_meshes_ex18.py deleted file mode 100644 index 738e8d213..000000000 --- a/doc/salome/examples/modifying_meshes_ex18.py +++ /dev/null @@ -1,54 +0,0 @@ -# Uniting a Set of Triangles - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -# create an empty mesh structure -mesh = smesh.Mesh() - -# create the following mesh: -# .----.----.----. -# | /| /| /| -# | / | / | / | -# | / | / | / | -# |/ |/ |/ | -# .----.----.----. - -bb = [0, 0, 0, 0] -tt = [0, 0, 0, 0] -ff = [0, 0, 0, 0, 0, 0] - -bb[0] = mesh.AddNode( 0., 0., 0.) -bb[1] = mesh.AddNode(10., 0., 0.) -bb[2] = mesh.AddNode(20., 0., 0.) -bb[3] = mesh.AddNode(30., 0., 0.) - -tt[0] = mesh.AddNode( 0., 15., 0.) -tt[1] = mesh.AddNode(10., 15., 0.) -tt[2] = mesh.AddNode(20., 15., 0.) -tt[3] = mesh.AddNode(30., 15., 0.) - -ff[0] = mesh.AddFace([bb[0], bb[1], tt[1]]) -ff[1] = mesh.AddFace([bb[0], tt[1], tt[0]]) -ff[2] = mesh.AddFace([bb[1], bb[2], tt[2]]) -ff[3] = mesh.AddFace([bb[1], tt[2], tt[1]]) -ff[4] = mesh.AddFace([bb[2], bb[3], tt[3]]) -ff[5] = mesh.AddFace([bb[2], tt[3], tt[2]]) - -# unite a set of triangles -print("\nUnite a set of triangles ... ", end=' ') -res = mesh.TriToQuad([ff[2], ff[3], ff[4], ff[5]], SMESH.FT_MinimumAngle, 60.) -if not res: print("failed!") -else: print("done.") - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex19.py b/doc/salome/examples/modifying_meshes_ex19.py deleted file mode 100644 index 386a3cb56..000000000 --- a/doc/salome/examples/modifying_meshes_ex19.py +++ /dev/null @@ -1,45 +0,0 @@ -# Orientation - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -# create an empty mesh structure -mesh = smesh.Mesh() - -# build five quadrangles: -dx = 10 -dy = 20 - -n1 = mesh.AddNode(0.0 * dx, 0, 0) -n2 = mesh.AddNode(1.0 * dx, 0, 0) -n3 = mesh.AddNode(2.0 * dx, 0, 0) -n4 = mesh.AddNode(3.0 * dx, 0, 0) -n5 = mesh.AddNode(4.0 * dx, 0, 0) -n6 = mesh.AddNode(5.0 * dx, 0, 0) -n7 = mesh.AddNode(0.0 * dx, dy, 0) -n8 = mesh.AddNode(1.0 * dx, dy, 0) -n9 = mesh.AddNode(2.0 * dx, dy, 0) -n10 = mesh.AddNode(3.0 * dx, dy, 0) -n11 = mesh.AddNode(4.0 * dx, dy, 0) -n12 = mesh.AddNode(5.0 * dx, dy, 0) - -f1 = mesh.AddFace([n1, n2, n8 , n7 ]) -f2 = mesh.AddFace([n2, n3, n9 , n8 ]) -f3 = mesh.AddFace([n3, n4, n10, n9 ]) -f4 = mesh.AddFace([n4, n5, n11, n10]) -f5 = mesh.AddFace([n5, n6, n12, n11]) - -# Change the orientation of the second and the fourth faces. -mesh.Reorient([2, 4]) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex20.py b/doc/salome/examples/modifying_meshes_ex20.py deleted file mode 100644 index ffbff360a..000000000 --- a/doc/salome/examples/modifying_meshes_ex20.py +++ /dev/null @@ -1,10 +0,0 @@ -# Cutting Quadrangles - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh - -# cut two quadrangles: 405 and 406 -mesh.QuadToTri([405, 406], SMESH.FT_MinimumAngle) diff --git a/doc/salome/examples/modifying_meshes_ex21.py b/doc/salome/examples/modifying_meshes_ex21.py deleted file mode 100644 index 6aa3f230d..000000000 --- a/doc/salome/examples/modifying_meshes_ex21.py +++ /dev/null @@ -1,35 +0,0 @@ -# Smoothing - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -import SMESH_mechanic - -#smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh - -# select the top face -faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, geompy.ShapeType["FACE"]) -face = faces[3] -geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, face, "face planar with hole") - -# create a group of faces to be smoothed -GroupSmooth = mesh.GroupOnGeom(face, "Group of faces (smooth)", SMESH.FACE) - -# perform smoothing - -# boolean SmoothObject(Object, IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method) -res = mesh.SmoothObject(GroupSmooth, [], 20, 2., smesh.CENTROIDAL_SMOOTH) -print("\nSmoothing ... ", end=' ') -if not res: print("failed!") -else: print("done.") - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex22.py b/doc/salome/examples/modifying_meshes_ex22.py deleted file mode 100644 index 94ce7561d..000000000 --- a/doc/salome/examples/modifying_meshes_ex22.py +++ /dev/null @@ -1,83 +0,0 @@ -# Extrusion - -# There is a series of Extrusion Along Line methods added at different times; -# a fully functional method is ExtrusionSweepObjects() - -import salome, math -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create an empty mesh -mesh = smesh.Mesh() - -# add a node -mesh.AddNode( 0.,0.,0. ) - -# extrude a node into a line of 10 segments along the X axis -ids = mesh.GetNodesId() -stepVector = [1.,0.,0.] -nbSteps = 10 -mesh.ExtrusionSweep( ids, stepVector, nbSteps, IsNodes=True ) - -# create some groups -lastNode = mesh.GetNodesId()[-1] -lastNodeGroup = mesh.MakeGroupByIds( "node %s"% lastNode, SMESH.NODE, [lastNode]) -lineGroup = mesh.MakeGroupByIds( "line", SMESH.EDGE, mesh.GetElementsId() ) - -# rotate the segments around the first node to get a mesh of a disk quarter -axisZ = [0.,0.,0., 0.,0.,1.] -groups = mesh.RotationSweepObject( lineGroup, axisZ, math.pi/2., 10, 1e-3, MakeGroups=True, TotalAngle=True ) - -# extrude all faces into volumes -obj = mesh -stepVector = [0.,0.,-1.] -nbSteps = 5 -groups = mesh.ExtrusionSweepObject2D( obj, stepVector, nbSteps, MakeGroups=True ) - -# remove all segments created by the last command -for g in groups: - if g.GetType() == SMESH.EDGE: - mesh.RemoveGroupWithContents( g ) - -# extrude all segments into faces along Z -obj = mesh -stepVector = [0.,0.,1.] -mesh.ExtrusionSweepObject1D( obj, stepVector, nbSteps ) - -# extrude a group -obj = mesh.GetGroupByName( "line_extruded", SMESH.FACE )[0] -stepVector = [0,-5.,0.] -nbSteps = 1 -mesh.ExtrusionSweepObject( obj, stepVector, nbSteps ) - -# extrude all nodes and triangle faces of the disk quarter, applying a scale factor -diskGroup = mesh.GetGroupByName( "line_rotated", SMESH.FACE )[0] -crit = [ smesh.GetCriterion( SMESH.FACE, SMESH.FT_ElemGeomType,'=',SMESH.Geom_TRIANGLE ), - smesh.GetCriterion( SMESH.FACE, SMESH.FT_BelongToMeshGroup,'=', diskGroup )] -trianglesFilter = smesh.GetFilterFromCriteria( crit ) - -nodes = [ diskGroup ] -edges = [] -faces = [ trianglesFilter ] -stepVector = [0,0,1] -nbSteps = 10 -mesh.ExtrusionSweepObjects( nodes, edges, faces, stepVector, nbSteps, scaleFactors=[0.5], linearVariation=True ) - -# extrude a cylindrical group of faces by normal -cylGroup = None -for g in mesh.GetGroups( SMESH.FACE ): - if g.GetName().startswith("node "): - cylGroup = g - break - -elements = cylGroup -stepSize = 5. -nbSteps = 2 -mesh.ExtrusionByNormal( elements, stepSize, nbSteps ) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex23.py b/doc/salome/examples/modifying_meshes_ex23.py deleted file mode 100644 index d2f52b229..000000000 --- a/doc/salome/examples/modifying_meshes_ex23.py +++ /dev/null @@ -1,180 +0,0 @@ -# Extrusion along a Path - -import math - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# 1. Create points -points = [[0, 0], [50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [-130, -20]] - -iv = 1 -vertices = [] -for point in points: - vert = geompy.MakeVertex(point[0], point[1], 0) - #geompy.addToStudy(vert, "Vertex_" + repr(iv)) - vertices.append(vert) - iv += 1 - pass - -# 2. Create edges and wires -Edge_straight = geompy.MakeEdge(vertices[0], vertices[4]) -Edge_bezierrr = geompy.MakeBezier(vertices) -Wire_polyline = geompy.MakePolyline(vertices) -Edge_Circle = geompy.MakeCircleThreePnt(vertices[0], vertices[1], vertices[2]) - -geompy.addToStudy(Edge_straight, "Edge_straight") -geompy.addToStudy(Edge_bezierrr, "Edge_bezierrr") -geompy.addToStudy(Wire_polyline, "Wire_polyline") -geompy.addToStudy(Edge_Circle , "Edge_Circle") - -# 3. Explode wire on edges, as they will be used for mesh extrusion -Wire_polyline_edges = geompy.SubShapeAll(Wire_polyline, geompy.ShapeType["EDGE"]) -for ii in range(len(Wire_polyline_edges)): - geompy.addToStudyInFather(Wire_polyline, Wire_polyline_edges[ii], "Edge_" + repr(ii + 1)) - pass - -# Mesh - -# Mesh the given shape with the given 1d hypothesis -def Mesh1D(shape1d, nbSeg, name, smesh_builder): - mesh1d_tool = smesh_builder.Mesh(shape1d, name) - algo = mesh1d_tool.Segment() - hyp = algo.NumberOfSegments(nbSeg) - isDone = mesh1d_tool.Compute() - if not isDone: print('Mesh ', name, ': computation failed') - return mesh1d_tool - -# Create a mesh with six nodes, seven edges and two quadrangle faces -def MakeQuadMesh2(mesh_name, smesh_builder): - quad_1 = smesh_builder.Mesh(name = mesh_name) - - # six nodes - n1 = quad_1.AddNode(0, 20, 10) - n2 = quad_1.AddNode(0, 40, 10) - n3 = quad_1.AddNode(0, 40, 30) - n4 = quad_1.AddNode(0, 20, 30) - n5 = quad_1.AddNode(0, 0, 30) - n6 = quad_1.AddNode(0, 0, 10) - - # seven edges - quad_1.AddEdge([n1, n2]) # 1 - quad_1.AddEdge([n2, n3]) # 2 - quad_1.AddEdge([n3, n4]) # 3 - quad_1.AddEdge([n4, n1]) # 4 - quad_1.AddEdge([n4, n5]) # 5 - quad_1.AddEdge([n5, n6]) # 6 - quad_1.AddEdge([n6, n1]) # 7 - - # two quadrangle faces - quad_1.AddFace([n1, n2, n3, n4]) # 8 - quad_1.AddFace([n1, n4, n5, n6]) # 9 - return [quad_1, [1,2,3,4,5,6,7], [8,9]] - -# Path meshes -Edge_straight_mesh = Mesh1D(Edge_straight, 7, "Edge_straight", smesh_builder=smesh) -Edge_bezierrr_mesh = Mesh1D(Edge_bezierrr, 7, "Edge_bezierrr", smesh_builder=smesh) -Wire_polyline_mesh = Mesh1D(Wire_polyline, 3, "Wire_polyline", smesh_builder=smesh) -Edge_Circle_mesh = Mesh1D(Edge_Circle , 8, "Edge_Circle" , smesh_builder=smesh) - -# Initial meshes (to be extruded) -[quad_1, ee_1, ff_1] = MakeQuadMesh2("quad_1", smesh_builder=smesh) -[quad_2, ee_2, ff_2] = MakeQuadMesh2("quad_2", smesh_builder=smesh) -[quad_3, ee_3, ff_3] = MakeQuadMesh2("quad_3", smesh_builder=smesh) -[quad_4, ee_4, ff_4] = MakeQuadMesh2("quad_4", smesh_builder=smesh) -[quad_5, ee_5, ff_5] = MakeQuadMesh2("quad_5", smesh_builder=smesh) -[quad_6, ee_6, ff_6] = MakeQuadMesh2("quad_6", smesh_builder=smesh) -[quad_7, ee_7, ff_7] = MakeQuadMesh2("quad_7", smesh_builder=smesh) - -# ExtrusionAlongPath -# IDsOfElements, PathMesh, PathShape, NodeStart, -# HasAngles, Angles, HasRefPoint, RefPoint -refPoint = SMESH.PointStruct(0, 0, 0) -a10 = math.radians( 10.0 ) -a45 = math.radians( 45.0 ) - -# 1. Extrusion of two mesh edges along a straight path -error = quad_1.ExtrusionAlongPath([1,2], Edge_straight_mesh, Edge_straight, 1, - 0, [], 0, refPoint) - -# 2. Extrusion of one mesh edge along a curved path -error = quad_2.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1, - 0, [], 0, refPoint) - -# 3. Extrusion of one mesh edge along a curved path with usage of angles -error = quad_3.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1, - 1, [a45, a45, a45, 0, -a45, -a45, -a45], 0, refPoint) - -# 4. Extrusion of one mesh edge along the path, which is a part of a meshed wire -error = quad_4.ExtrusionAlongPath([4], Wire_polyline_mesh, Wire_polyline_edges[0], 1, - 1, [a10, a10, a10], 0, refPoint) - -# 5. Extrusion of two mesh faces along the path, which is a part of a meshed wire -error = quad_5.ExtrusionAlongPath(ff_5 , Wire_polyline_mesh, Wire_polyline_edges[2], 4, - 0, [], 0, refPoint) - -# 6. Extrusion of two mesh faces along a closed path -error = quad_6.ExtrusionAlongPath(ff_6 , Edge_Circle_mesh, Edge_Circle, 1, - 0, [], 0, refPoint) - -# 7. Extrusion of two mesh faces along a closed path with usage of angles -error = quad_7.ExtrusionAlongPath(ff_7, Edge_Circle_mesh, Edge_Circle, 1, - 1, [a45, -a45, a45, -a45, a45, -a45, a45, -a45], 0, refPoint) - - - -# Make the same meshes using a fully functional method ExtrusionAlongPathObjects() having -# the following arguments: -# Nodes, Edges, Faces, PathObject, PathShape=None, -# NodeStart=1, HasAngles=False, Angles=[], LinearVariation=False, -# HasRefPoint=False, RefPoint=[0,0,0], MakeGroups=False, -# ScaleFactors=[], ScalesVariation=False - -quad_1 = MakeQuadMesh2("quad_1", smesh_builder=smesh)[0] -quad_2 = MakeQuadMesh2("quad_2", smesh_builder=smesh)[0] -quad_3 = MakeQuadMesh2("quad_3", smesh_builder=smesh)[0] -quad_4 = MakeQuadMesh2("quad_4", smesh_builder=smesh)[0] -quad_5 = MakeQuadMesh2("quad_5", smesh_builder=smesh)[0] -quad_6 = MakeQuadMesh2("quad_6", smesh_builder=smesh)[0] -quad_7 = MakeQuadMesh2("quad_7", smesh_builder=smesh)[0] - -# 1. Extrusion of two mesh edges along a straight path -nn, ee, ff = [], [1,2], [] -error = quad_1.ExtrusionAlongPathObjects( nn, ee, ff, Edge_straight_mesh ) - -# 2. Extrusion of one mesh edge along a curved path -nn, ee, ff = [], [2], [] -error = quad_2.ExtrusionAlongPathObjects( nn, ee, ff, Edge_bezierrr_mesh ) - -# 3. Extrusion of one mesh edge along a curved path with usage of angles -error = quad_3.ExtrusionAlongPathObjects( nn, ee, ff, Edge_bezierrr_mesh, - Angles=[a45, a45, a45, 0, -a45, -a45, -a45]) - -# 4. Extrusion of one mesh edge along the path, which is a part of a meshed wire -nn, ee, ff = [], [4], [] -error = quad_4.ExtrusionAlongPathObjects( nn, ee, ff, Wire_polyline_mesh, Wire_polyline_edges[0], - Angles=[a10, a10, a10]) - -# 5. Extrusion of two mesh faces along the path, which is a part of a meshed wire -nn, ee, ff = [], [], quad_5 -error = quad_5.ExtrusionAlongPathObjects( nn, ee, ff, Wire_polyline_mesh, Wire_polyline_edges[2], - NodeStart=4 ) - -# 6. Extrusion of two mesh faces along a closed path -nn, ee, ff = [], [], quad_6 -error = quad_6.ExtrusionAlongPathObjects( nn, ee, ff, Edge_Circle_mesh ) - -# 7. Extrusion of two mesh faces along a closed path with usage of angles -nn, ee, ff = [], [], quad_7 -error = quad_7.ExtrusionAlongPathObjects( nn, ee, ff, Edge_Circle_mesh, Edge_Circle, - Angles=[a45, -a45, a45, -a45, a45, -a45, a45, -a45]) - - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/modifying_meshes_ex24.py b/doc/salome/examples/modifying_meshes_ex24.py deleted file mode 100644 index d07a7ca5b..000000000 --- a/doc/salome/examples/modifying_meshes_ex24.py +++ /dev/null @@ -1,21 +0,0 @@ -# Revolution - -import math -import SMESH - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh -smesh = SMESH_mechanic.smesh - -# create a group of faces to be revolved -FacesRotate = [492, 493, 502, 503] -GroupRotate = mesh.CreateEmptyGroup(SMESH.FACE,"Group of faces (rotate)") -GroupRotate.Add(FacesRotate) - -# define revolution angle and axis -angle45 = 45 * math.pi / 180 -axisXYZ = SMESH.AxisStruct(-38.3128, -73.3658, -23.321, -13.3402, -13.3265, 6.66632) - -# perform revolution of an object -mesh.RotationSweepObject(GroupRotate, axisXYZ, angle45, 4, 1e-5) diff --git a/doc/salome/examples/modifying_meshes_ex25.py b/doc/salome/examples/modifying_meshes_ex25.py deleted file mode 100644 index 7a6804b06..000000000 --- a/doc/salome/examples/modifying_meshes_ex25.py +++ /dev/null @@ -1,138 +0,0 @@ -# Pattern Mapping - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# define the geometry -Box_1 = geompy.MakeBoxDXDYDZ(200., 200., 200.) -geompy.addToStudy(Box_1, "Box_1") - -faces = geompy.SubShapeAll(Box_1, geompy.ShapeType["FACE"]) -Face_1 = faces[0] -Face_2 = faces[1] - -geompy.addToStudyInFather(Box_1, Face_1, "Face_1") -geompy.addToStudyInFather(Box_1, Face_2, "Face_2") - -# build a quadrangle mesh 3x3 on Face_1 -Mesh_1 = smesh.Mesh(Face_1) -algo1D = Mesh_1.Segment() -algo1D.NumberOfSegments(3) -Mesh_1.Quadrangle() - -isDone = Mesh_1.Compute() -if not isDone: print('Mesh Mesh_1 : computation failed') - -# build a triangle mesh on Face_2 -Mesh_2 = smesh.Mesh(Face_2) - -algo1D = Mesh_2.Segment() -algo1D.NumberOfSegments(1) -algo2D = Mesh_2.Triangle() -algo2D.MaxElementArea(240) - -isDone = Mesh_2.Compute() -if not isDone: print('Mesh Mesh_2 : computation failed') - -# create a 2d pattern -pattern = smesh.GetPattern() - -isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), Face_2, 0) -if (isDone != 1): print('LoadFromFace :', pattern.GetErrorCode()) - -# apply the pattern to a face of the first mesh -facesToSplit = Mesh_1.GetElementsByType(SMESH.FACE) -print("Splitting %d rectangular face(s) to %d triangles..."%(len(facesToSplit), 2*len(facesToSplit))) -pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), facesToSplit, 0, 0) -isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 0, 0) -if (isDone != 1): print('MakeMesh :', pattern.GetErrorCode()) - -# create quadrangle mesh -Mesh_3 = smesh.Mesh(Box_1) -Mesh_3.Segment().NumberOfSegments(1) -Mesh_3.Quadrangle() -Mesh_3.Hexahedron() -isDone = Mesh_3.Compute() -if not isDone: print('Mesh Mesh_3 : computation failed') - -# create a 3d pattern (hexahedrons) -pattern_hexa = smesh.GetPattern() - -smp_hexa = """!!! Nb of points: -15 - 0 0 0 !- 0 - 1 0 0 !- 1 - 0 1 0 !- 2 - 1 1 0 !- 3 - 0 0 1 !- 4 - 1 0 1 !- 5 - 0 1 1 !- 6 - 1 1 1 !- 7 - 0.5 0 0.5 !- 8 - 0.5 0 1 !- 9 - 0.5 0.5 0.5 !- 10 - 0.5 0.5 1 !- 11 - 1 0 0.5 !- 12 - 1 0.5 0.5 !- 13 - 1 0.5 1 !- 14 - !!! Indices of points of 4 elements: - 8 12 5 9 10 13 14 11 - 0 8 9 4 2 10 11 6 - 2 10 11 6 3 13 14 7 - 0 1 12 8 2 3 13 10""" - -pattern_hexa.LoadFromFile(smp_hexa) - -# apply the pattern to a mesh -volsToSplit = Mesh_3.GetElementsByType(SMESH.VOLUME) -print("Splitting %d hexa volume(s) to %d hexas..."%(len(volsToSplit), 4*len(volsToSplit))) -pattern_hexa.ApplyToHexahedrons(Mesh_3.GetMesh(), volsToSplit,0,3) -isDone = pattern_hexa.MakeMesh(Mesh_3.GetMesh(), True, True) -if (isDone != 1): print('MakeMesh :', pattern_hexa.GetErrorCode()) - -# create one more quadrangle mesh -Mesh_4 = smesh.Mesh(Box_1) -Mesh_4.Segment().NumberOfSegments(1) -Mesh_4.Quadrangle() -Mesh_4.Hexahedron() -isDone = Mesh_4.Compute() -if not isDone: print('Mesh Mesh_4 : computation failed') - -# create another 3d pattern (pyramids) -pattern_pyra = smesh.GetPattern() - -smp_pyra = """!!! Nb of points: -9 - 0 0 0 !- 0 - 1 0 0 !- 1 - 0 1 0 !- 2 - 1 1 0 !- 3 - 0 0 1 !- 4 - 1 0 1 !- 5 - 0 1 1 !- 6 - 1 1 1 !- 7 - 0.5 0.5 0.5 !- 8 - !!! Indices of points of 6 elements: - 0 1 5 4 8 - 7 5 1 3 8 - 3 2 6 7 8 - 2 0 4 6 8 - 0 2 3 1 8 - 4 5 7 6 8""" - -pattern_pyra.LoadFromFile(smp_pyra) - -# apply the pattern to a face mesh -volsToSplit = Mesh_4.GetElementsByType(SMESH.VOLUME) -print("Splitting %d hexa volume(s) to %d hexas..."%(len(volsToSplit), 6*len(volsToSplit))) -pattern_pyra.ApplyToHexahedrons(Mesh_4.GetMesh(), volsToSplit,1,0) -isDone = pattern_pyra.MakeMesh(Mesh_4.GetMesh(), True, True) -if (isDone != 1): print('MakeMesh :', pattern_pyra.GetErrorCode()) diff --git a/doc/salome/examples/modifying_meshes_ex26.py b/doc/salome/examples/modifying_meshes_ex26.py deleted file mode 100644 index defd6ba1d..000000000 --- a/doc/salome/examples/modifying_meshes_ex26.py +++ /dev/null @@ -1,53 +0,0 @@ -# Convert mesh to/from quadratic - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create sphere of radius 100 - -Sphere = geompy.MakeSphereR( 100 ) -geompy.addToStudy( Sphere, "Sphere" ) - -# create simple trihedral mesh - -Mesh = smesh.Mesh(Sphere) -Regular_1D = Mesh.Segment() -Nb_Segments = Regular_1D.NumberOfSegments(5) -MEFISTO_2D = Mesh.Triangle() -Tetrahedron = Mesh.Tetrahedron() - -# compute mesh - -isDone = Mesh.Compute() - -# convert to quadratic -# theForce3d = 1; this results in the medium node lying at the -# middle of the line segments connecting start and end node of a mesh -# element - -Mesh.ConvertToQuadratic( theForce3d=1 ) - -# revert back to the non-quadratic mesh - -Mesh.ConvertFromQuadratic() - -# convert to quadratic -# theForce3d = 0; this results in the medium node lying at the -# geometrical edge from which the mesh element is built - -Mesh.ConvertToQuadratic( theForce3d=0 ) - -# to convert not the whole mesh but a sub-mesh, provide it as -# an additional argument to the functions: -# Mesh.ConvertToQuadratic( 0, subMesh ) -# Mesh.ConvertFromQuadratic( subMesh ) -# -# Note that the mesh becomes non-conformal at conversion of sub-mesh. diff --git a/doc/salome/examples/modifying_meshes_split_vol.py b/doc/salome/examples/modifying_meshes_split_vol.py deleted file mode 100644 index 35eea6aab..000000000 --- a/doc/salome/examples/modifying_meshes_split_vol.py +++ /dev/null @@ -1,19 +0,0 @@ -# Split volumic elements into tetrahedrons - -import salome -salome.salome_init_without_session() - -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# mesh a hexahedral mesh -box = geompy.MakeBoxDXDYDZ (1, 1, 1 ) -mesh = smesh.Mesh( box ) -mesh.AutomaticHexahedralization(0) -print("Nb volumes mesh: %s" % mesh.NbHexas()) - -# split each hexahedron into 6 tetrahedra -mesh.SplitVolumesIntoTetra( mesh, smesh.Hex_6Tet ) -print("Nb volumes mesh: %s" % mesh.NbTetras()) diff --git a/doc/salome/examples/notebook_smesh.py b/doc/salome/examples/notebook_smesh.py deleted file mode 100644 index 959cc20bd..000000000 --- a/doc/salome/examples/notebook_smesh.py +++ /dev/null @@ -1,47 +0,0 @@ -# Using SALOME NoteBook - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - -# set variables -notebook = salome_notebook.notebook -notebook.set("Length", 100) -notebook.set("Width", 200) -notebook.set("Offset", 50) - -notebook.set("NbSegments", 7) -notebook.set("MaxElementArea", 800) -notebook.set("MaxElementVolume", 900) - -# create a box -box = geompy.MakeBoxDXDYDZ("Length", "Width", 300) -idbox = geompy.addToStudy(box, "Box") - -# create a mesh -tetra = smesh.Mesh(box, "MeshBox") - -algo1D = tetra.Segment() -algo1D.NumberOfSegments("NbSegments") - -algo2D = tetra.Triangle() -algo2D.MaxElementArea("MaxElementArea") - -algo3D = tetra.Tetrahedron() -algo3D.MaxElementVolume("MaxElementVolume") - -# compute the mesh -ret = tetra.Compute() - -# translate the mesh -point = SMESH.PointStruct("Offset", 0., 0.) -vector = SMESH.DirStruct(point) -tetra.TranslateObject(tetra, vector, 0) diff --git a/doc/salome/examples/prism_3d_algo.py b/doc/salome/examples/prism_3d_algo.py deleted file mode 100644 index 06a2c5cc2..000000000 --- a/doc/salome/examples/prism_3d_algo.py +++ /dev/null @@ -1,78 +0,0 @@ -# Usage of Extrusion 3D meshing algorithm - -import salome -salome.salome_init_without_session() - -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -OX = geompy.MakeVectorDXDYDZ(1,0,0) -OY = geompy.MakeVectorDXDYDZ(0,1,0) -OZ = geompy.MakeVectorDXDYDZ(0,0,1) - -# Y ^ Make geometry of a "pipe" with the following base (cross section). -# | Big central quadrangles will be meshed with triangles, walls -# of the pipe will be meshed with quadrilaterals -# +--+--+--+--+--+--+ -# | | | | | | | -# +--+--+--+--+--+--+ -# | | | | | -# +--+ | +--+ -# | | | | | -# +--+-----+-----+--+ -# | | | | | -# +--+ | +--+ -# | | | | | -# +--+--+--+--+--+--+ -# | | | | | | | --> -# +--+--+--+--+--+--+ X - -quadBig = geompy.MakeFaceHW( 20,20, 1 ) -quadBig = geompy.MakeTranslation( quadBig, 15,15,0 ) -quadSmall = geompy.MakeFaceHW( 10,10, 1 ) -smallQuads1 = geompy.MakeMultiTranslation1D( quadSmall, OX, 10, 3 ) -smallQuads2 = geompy.MakeMultiTranslation1D( quadSmall, OY, 10, 3 ) -smallQuads2 = geompy.SubShapeAllSortedCentres( smallQuads2, geompy.ShapeType["FACE"])[1:] - -base = geompy.MakeCompound( smallQuads2 + [smallQuads1, quadBig]) -axis = geompy.MakeLine( geompy.MakeVertex( 25,25,0), OZ ) -base = geompy.MultiRotate1DNbTimes( base, axis, 4) -base = geompy.MakePartition( [base], theName="base") -path = geompy.MakeSketcher("Sketcher:F 0 0:TT 0 100:R 0:C -90 180:T 0 -150",[0,0,0, 0,-1,0, 1,0,0]) - -# Make the pipe, each quadrangle of the base turns into a prism with composite wall faces -pipe = geompy.MakePipe( base, path ) -prisms = geompy.MakePartition( [pipe], theName="prisms") - - -# get base faces of the prism to define sub-mesh on them -smallQuad = geompy.GetFaceNearPoint( prisms, geompy.MakeVertex( 0,0,0 ), "smallQuad") -bigQuad = geompy.GetFaceNearPoint( prisms, geompy.MakeVertex( 15,15,0 ), "bigQuad") - - -mesh = smesh.Mesh( prisms ) - -# assign Global hypotheses - -# 1D algorithm and hypothesis for division along the pipe -mesh.Segment().NumberOfSegments(15) - -# Extrusion 3D algo -mesh.Prism() - -# assign Local hypotheses - -# 1D and 2D algos and hyps to mesh smallQuad with quadrilaterals -mesh.Segment(smallQuad).LocalLength( 3 ) -mesh.Quadrangle(smallQuad) - -# 1D and 2D algos and hyps to mesh bigQuad with triangles -mesh.Segment(bigQuad).LocalLength( 3 ) -mesh.Triangle(bigQuad) - -# compute the mesh -mesh.Compute() diff --git a/doc/salome/examples/quad_medial_axis_algo.py b/doc/salome/examples/quad_medial_axis_algo.py deleted file mode 100644 index 5937d03ac..000000000 --- a/doc/salome/examples/quad_medial_axis_algo.py +++ /dev/null @@ -1,30 +0,0 @@ -# Usage of Medial Axis Projection algorithm - -# for meshing a ring face with quadrangles - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a ring face -circleEdge1 = geompy.MakeCircleR( 3 ) -circleEdge2 = geompy.MakeCircleR( 7 ) -ring = geompy.MakeFaceWires( [ circleEdge1, circleEdge2 ], True, theName='Ring' ) -circleLen1 = geompy.BasicProperties( circleEdge1 )[0] -circleLen2 = geompy.BasicProperties( circleEdge2 )[0] - -# make a mesh - -mesh = smesh.Mesh( ring ) - -circNbSeg = 60 -algo1d = mesh.Segment() -algo1d.NumberOfSegments( circNbSeg ) # division of circle edges - -algo2d = mesh.Quadrangle( smeshBuilder.QUAD_MA_PROJ ) -algo2d.StartEndLength( circleLen2 / circNbSeg, circleLen1 / circNbSeg ) # radial division - -mesh.Compute() diff --git a/doc/salome/examples/quality_controls_defl.py b/doc/salome/examples/quality_controls_defl.py deleted file mode 100644 index 97553e02f..000000000 --- a/doc/salome/examples/quality_controls_defl.py +++ /dev/null @@ -1,45 +0,0 @@ -# Deflection 2D - - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# fuse a box and a sphere -Sphere_1 = geompy.MakeSphereR(100) -Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) -Fuse = geompy.MakeFuse( Sphere_1, Box_1, theName="box + sphere" ) - -# create a mesh -mesh = smesh.Mesh( Fuse, "Deflection_2D") -algo = mesh.Segment() -algo.LocalLength(35) -algo = mesh.Triangle() -mesh.Compute() - -# get min and max deflection -minMax = mesh.GetMinMax( SMESH.FT_Deflection2D ) -print("min and max deflection: ", minMax) - -# get deflection of a certain face -faceID = mesh.NbEdges() + mesh.NbFaces() -defl = mesh.FunctorValue( SMESH.FT_Deflection2D, faceID ) -print("deflection of face %s = %s" % ( faceID, defl )) - -margin = minMax[1] / 2 - -# get all faces with deflection LESS than the margin -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Deflection2D, '<', margin, mesh=mesh) -anIds = aFilter.GetIDs() -print("%s faces have deflection less than %s" %( len(anIds), margin )) - -# create a group of faces with deflection MORE than the margin -aGroup = mesh.MakeGroup("Deflection > " + repr(margin), SMESH.FACE, SMESH.FT_Deflection2D,'>',margin) -print("%s faces have deflection more than %s: %s ..." %( aGroup.Size(), margin, aGroup.GetIDs()[:10] )) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex01.py b/doc/salome/examples/quality_controls_ex01.py deleted file mode 100644 index 2cb3c97fc..000000000 --- a/doc/salome/examples/quality_controls_ex01.py +++ /dev/null @@ -1,47 +0,0 @@ -# Free Borders - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create open shell: a box without one plane -box = geompy.MakeBox(0., 0., 0., 20., 20., 15.) -FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) -FaceList.remove(FaceList[5]) -box = geompy.MakeShell(FaceList) -idbox = geompy.addToStudy(box, "box") - -# create a mesh -mesh = smesh.Mesh(box, "Mesh_free_borders") -algo = mesh.Segment() -algo.NumberOfSegments(5) -algo = mesh.Triangle() -algo.MaxElementArea(20.) -mesh.Compute() - -# criterion : free borders -aFilter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_FreeBorders) -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Free borders Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.GetMesh().CreateGroup(SMESH.EDGE, "Free borders") -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex02.py b/doc/salome/examples/quality_controls_ex02.py deleted file mode 100644 index c03942010..000000000 --- a/doc/salome/examples/quality_controls_ex02.py +++ /dev/null @@ -1,49 +0,0 @@ -# Borders at Multiconnection - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create open shell: a box without one plane -box = geompy.MakeBox(0., 0., 0., 20., 20., 15.) -FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) -FaceList.remove(FaceList[5]) -box = geompy.MakeShell(FaceList) -idbox = geompy.addToStudy(box, "box") - -# create a mesh -mesh = smesh.Mesh(box, "Mesh_borders_at_multi-connections") -algo = mesh.Segment() -algo.NumberOfSegments(5) -algo = mesh.Triangle() -algo.MaxElementArea(20.) -mesh.Compute() - -# Criterion : Borders at multi-connection -nb_conn = 2 - -aFilter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_MultiConnection, SMESH.FT_EqualTo, nb_conn) -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Borders at multi-connections Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.GetMesh().CreateGroup(SMESH.EDGE, "Borders at multi-connections") -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex03.py b/doc/salome/examples/quality_controls_ex03.py deleted file mode 100644 index 65db46bbf..000000000 --- a/doc/salome/examples/quality_controls_ex03.py +++ /dev/null @@ -1,49 +0,0 @@ -# Length 1D - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create open shell: a box without one plane -box = geompy.MakeBox(0., 0., 0., 20., 20., 15.) -FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) -FaceList.remove(FaceList[5]) -box = geompy.MakeShell(FaceList) -idbox = geompy.addToStudy(box, "box") - -# create a mesh -mesh = smesh.Mesh(box, "Mesh_Length_1D") -algo = mesh.Segment() -algo.NumberOfSegments(5) -algo = mesh.Triangle() -algo.MaxElementArea(20.) -mesh.Compute() - -# Criterion : Length > 3. -length_margin = 3. - -aFilter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_Length, SMESH.FT_MoreThan, length_margin) -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Edges length > ", length_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.GetMesh().CreateGroup(SMESH.EDGE, "Edges with length > " + repr(length_margin)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex04.py b/doc/salome/examples/quality_controls_ex04.py deleted file mode 100644 index 07867cc2f..000000000 --- a/doc/salome/examples/quality_controls_ex04.py +++ /dev/null @@ -1,40 +0,0 @@ -# Free Edges - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -aFilterMgr = smesh.CreateFilterManager() - -# Remove some elements to obtain free edges -# Criterion : AREA > 95. -area_margin = 95. - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, area_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -mesh.RemoveElements(anIds) - -# Criterion : Free Edges -aBorders = mesh.GetFreeBorders() - -# create groups -aGroupF = mesh.CreateEmptyGroup(SMESH.FACE, "Faces with free edges") -aGroupN = mesh.CreateEmptyGroup(SMESH.NODE, "Nodes on free edges") - -# fill groups with elements, corresponding to the criterion -print("") -print("Criterion: Free edges Nb = ", len(aBorders)) -for i in range(len(aBorders)): - aBorder = aBorders[i] - print("Face # ", aBorder.myElemId, " : Edge between nodes (", end=' ') - print(aBorder.myPnt1, ", ", aBorder.myPnt2, ")") - - aGroupF.Add([aBorder.myElemId]) - aGroupN.Add([aBorder.myPnt1, aBorder.myPnt2]) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex05.py b/doc/salome/examples/quality_controls_ex05.py deleted file mode 100644 index b01e35cae..000000000 --- a/doc/salome/examples/quality_controls_ex05.py +++ /dev/null @@ -1,54 +0,0 @@ -# Free Nodes - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create box -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) -idbox = geompy.addToStudy(box, "box") - -# create a mesh -mesh = smesh.Mesh(box, "Mesh_free_nodes") -algo = mesh.Segment() -algo.NumberOfSegments(10) -algo = mesh.Triangle(smeshBuilder.MEFISTO) -algo.MaxElementArea(150.) -mesh.Compute() - -# Remove some elements to obtain free nodes -# Criterion : AREA < 80. -area_margin = 80. - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_LessThan, area_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -mesh.RemoveElements(anIds) - -# criterion : free nodes -aFilter = smesh.GetFilter(SMESH.NODE, SMESH.FT_FreeNodes) -anNodeIds = mesh.GetIdsFromFilter(aFilter) - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.NODE, "Free_nodes") -aGroup.Add(anNodeIds) - -# print the result -print("Criterion: Free nodes Nb = ", len(anNodeIds)) -j = 1 -for i in range(len(anNodeIds)): - if j > 20: j = 1; print("") - print(anNodeIds[i], end=' ') - j = j + 1 - pass -print("") - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex06.py b/doc/salome/examples/quality_controls_ex06.py deleted file mode 100644 index c0cecd4b0..000000000 --- a/doc/salome/examples/quality_controls_ex06.py +++ /dev/null @@ -1,78 +0,0 @@ -# Free Faces - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -####### GEOM part ######## - -Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) -Box_1_vertex_6 = geompy.GetSubShape(Box_1, [6]) -Box_1 = geompy.GetMainShape(Box_1_vertex_6) -Box_1_vertex_16 = geompy.GetSubShape(Box_1, [16]) -Box_1 = geompy.GetMainShape(Box_1_vertex_16) -Box_1_vertex_11 = geompy.GetSubShape(Box_1, [11]) -Box_1 = geompy.GetMainShape(Box_1_vertex_11) -Plane_1 = geompy.MakePlaneThreePnt(Box_1_vertex_6, Box_1_vertex_16, Box_1_vertex_11, 2000) -Partition_1 = geompy.MakePartition([Box_1], [Plane_1], [], [], geompy.ShapeType["SOLID"], 0, [], 0) - -Box_1_vertex_19 = geompy.GetSubShape(Box_1, [19]) -Box_1_vertex_21 = geompy.GetSubShape(Box_1, [21]) -Plane_2 = geompy.MakePlaneThreePnt(Box_1_vertex_16, Box_1_vertex_19, Box_1_vertex_21, 2000) - -geompy.addToStudy( Box_1, "Box_1" ) -geompy.addToStudyInFather( Box_1, Box_1_vertex_6, "Box_1:vertex_6" ) -geompy.addToStudyInFather( Box_1, Box_1_vertex_16, "Box_1:vertex_16" ) -geompy.addToStudyInFather( Box_1, Box_1_vertex_11, "Box_1:vertex_11" ) -geompy.addToStudy( Plane_1, "Plane_1" ) -geompy.addToStudy( Partition_1, "Partition_1" ) -geompy.addToStudyInFather( Box_1, Box_1_vertex_19, "Box_1:vertex_19" ) -geompy.addToStudyInFather( Box_1, Box_1_vertex_21, "Box_1:vertex_21" ) -geompy.addToStudy( Plane_2, "Plane_2" ) - -###### SMESH part ###### - -Mesh_1 = smesh.Mesh(Partition_1) -Regular_1D = Mesh_1.Segment() -Max_Size_1 = Regular_1D.MaxSize(34.641) -MEFISTO_2D = Mesh_1.Triangle() -Tetrahedronn = Mesh_1.Tetrahedron() -isDone = Mesh_1.Compute() - -# create a group of free faces -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_FreeFaces ) -aFaceIds = Mesh_1.GetIdsFromFilter(aFilter) - -aGroup = Mesh_1.CreateEmptyGroup(SMESH.FACE, "Free_faces") -aGroup.Add(aFaceIds) - -# print the result -print("Criterion: Free faces Nb = ", len(aFaceIds)) -j = 1 -for i in range(len(aFaceIds)): - if j > 20: j = 1; print("") - print(aFaceIds[i], end=' ') - j = j + 1 - pass -print("") - -#filter faces from plane 2 -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_BelongToPlane, Plane_2) -aFaceIds = Mesh_1.GetIdsFromFilter(aFilter) -aGroup.Remove(aFaceIds) - -# create a group of shared faces (located on partition boundary inside box) -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_BelongToPlane, Plane_1) -aFaceIds = Mesh_1.GetIdsFromFilter(aFilter) - -aGroup = Mesh_1.CreateEmptyGroup(SMESH.FACE, "Shared_faces") -aGroup.Add(aFaceIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex07.py b/doc/salome/examples/quality_controls_ex07.py deleted file mode 100644 index d7f296546..000000000 --- a/doc/salome/examples/quality_controls_ex07.py +++ /dev/null @@ -1,29 +0,0 @@ -# Bare border faces - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -box = geompy.MakeBoxDXDYDZ(100, 100, 100) -geompy.addToStudy( box, "box" ) - -mesh = smesh.Mesh(box) -mesh.Segment().NumberOfSegments(3) -mesh.Quadrangle() -mesh.Compute() - -# remove 2 faces -allFaces = mesh.GetElementsByType(SMESH.FACE) -mesh.RemoveElements( allFaces[0:2]) - -bareGroup = mesh.MakeGroup("bare faces", SMESH.FACE, SMESH.FT_BareBorderFace) -assert(bareGroup.Size() == 3) diff --git a/doc/salome/examples/quality_controls_ex08.py b/doc/salome/examples/quality_controls_ex08.py deleted file mode 100644 index 8fc367ea0..000000000 --- a/doc/salome/examples/quality_controls_ex08.py +++ /dev/null @@ -1,33 +0,0 @@ -# Bare border volumes - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -box = geompy.MakeBoxDXDYDZ(100, 30, 10) -# the smallest face of the box -face = geompy.SubShapeAllSorted( box, geompy.ShapeType["FACE"])[0] - -geompy.addToStudy( box, "box" ) -geompy.addToStudyInFather( box, face, "face" ) - -mesh = smesh.Mesh(box) -mesh.AutomaticHexahedralization(); - -# remove half of mesh faces from the smallest face -faceFaces = mesh.GetSubMeshElementsId(face) -faceToRemove = faceFaces[: len(faceFaces) // 2] -mesh.RemoveElements( faceToRemove ) - -# make a group of volumes missing the removed faces -bareGroup = mesh.MakeGroup("bare volumes", SMESH.VOLUME, SMESH.FT_BareBorderVolume) -assert(bareGroup.Size() == len( faceToRemove)) diff --git a/doc/salome/examples/quality_controls_ex09.py b/doc/salome/examples/quality_controls_ex09.py deleted file mode 100644 index 92a8f052f..000000000 --- a/doc/salome/examples/quality_controls_ex09.py +++ /dev/null @@ -1,27 +0,0 @@ -# Over-constrained faces - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -mesh = smesh.Mesh() -faceFilter = smesh.GetFilter(SMESH.FACE,SMESH.FT_OverConstrainedFace) - -#make an edge -n1 = mesh.AddNode(0,0,0) -n2 = mesh.AddNode(10,0,0) -edge = mesh.AddEdge([n1,n2]) -assert( not mesh.GetIdsFromFilter( faceFilter )) - -# make faces -mesh.ExtrusionSweep([edge], smesh.MakeDirStruct(0,7,0), 5) -assert( 5 == len( mesh.GetIdsFromFilter( faceFilter ))) diff --git a/doc/salome/examples/quality_controls_ex10.py b/doc/salome/examples/quality_controls_ex10.py deleted file mode 100644 index b71b5d6da..000000000 --- a/doc/salome/examples/quality_controls_ex10.py +++ /dev/null @@ -1,25 +0,0 @@ -# Over-constrained volumes - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -mesh = smesh.Mesh() -volumeFilter = smesh.GetFilter(SMESH.VOLUME,SMESH.FT_OverConstrainedVolume) - -# make volumes by extrusion of one face -n1 = mesh.AddNode(0,0,0) -n2 = mesh.AddNode(10,0,0) -edge = mesh.AddEdge([n1,n2]) -mesh.ExtrusionSweep([edge], smesh.MakeDirStruct(0,7,0), 1) -mesh.ExtrusionSweep( mesh.GetElementsByType(SMESH.FACE), smesh.MakeDirStruct(0,0,5), 7) -assert( 7 == len( mesh.GetIdsFromFilter( volumeFilter ))) diff --git a/doc/salome/examples/quality_controls_ex11.py b/doc/salome/examples/quality_controls_ex11.py deleted file mode 100644 index fbc2b7c5f..000000000 --- a/doc/salome/examples/quality_controls_ex11.py +++ /dev/null @@ -1,50 +0,0 @@ -# Length 2D - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create open shell: a box without one plane -box = geompy.MakeBox(0., 0., 0., 20., 20., 15.) -FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) -FaceList.remove(FaceList[5]) -box = geompy.MakeShell(FaceList) -idbox = geompy.addToStudy(box, "box") - -# create a mesh -mesh = smesh.Mesh(box, "Mesh_Length_2D") -algo = mesh.Segment() -algo.NumberOfSegments(5) -algo = mesh.Triangle() -algo.MaxElementArea(20.) -mesh.Compute() - -# Criterion : Length 2D > 5.7 -length_margin = 5.7 - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Length2D, SMESH.FT_MoreThan, length_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Edges length 2D > ", length_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Faces with length 2D > " + repr(length_margin)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex12.py b/doc/salome/examples/quality_controls_ex12.py deleted file mode 100644 index f6227793c..000000000 --- a/doc/salome/examples/quality_controls_ex12.py +++ /dev/null @@ -1,50 +0,0 @@ -# Borders at Multiconnection 2D - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a compound of two glued boxes -box1 = geompy.MakeBox(0., 0., 0., 20., 20., 15.) -box2 = geompy.MakeTranslation(box1, 0., 20., 0) -comp = geompy.MakeCompound([box1, box2]) -box = geompy.MakeGlueFaces(comp, 0.000001) -idbox = geompy.addToStudy(box, "box") - -# create a mesh -mesh = smesh.Mesh(box, "Box compound : 2D triangle mesh") -algo = mesh.Segment() -algo.NumberOfSegments(5) -algo = mesh.Triangle() -algo.MaxElementArea(20.) -mesh.Compute() - -# Criterion : MULTI-CONNECTION 2D = 3 -nb_conn = 3 - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_MultiConnection2D, SMESH.FT_EqualTo, nb_conn) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Borders at multi-connection 2D = ", nb_conn, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Borders at multi-connection 2D = " + repr(nb_conn)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex13.py b/doc/salome/examples/quality_controls_ex13.py deleted file mode 100644 index 5cee2a8dd..000000000 --- a/doc/salome/examples/quality_controls_ex13.py +++ /dev/null @@ -1,31 +0,0 @@ -# Area - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : AREA > 100. -area_margin = 100. - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Area, SMESH.FT_MoreThan, area_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Area > ", area_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Area > " + repr(area_margin)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex14.py b/doc/salome/examples/quality_controls_ex14.py deleted file mode 100644 index ab939bae8..000000000 --- a/doc/salome/examples/quality_controls_ex14.py +++ /dev/null @@ -1,31 +0,0 @@ -# Taper - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : Taper > 3e-20 -taper_margin = 3e-20 - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Taper, SMESH.FT_MoreThan, taper_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Taper > ", taper_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Taper > " + repr(taper_margin)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex15.py b/doc/salome/examples/quality_controls_ex15.py deleted file mode 100644 index d7cb29071..000000000 --- a/doc/salome/examples/quality_controls_ex15.py +++ /dev/null @@ -1,31 +0,0 @@ -# Aspect Ratio - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : ASPECT RATIO > 1.8 -ar_margin = 1.8 - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_AspectRatio, SMESH.FT_MoreThan, ar_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Aspect Ratio > ", ar_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Aspect Ratio > " + repr(ar_margin)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex16.py b/doc/salome/examples/quality_controls_ex16.py deleted file mode 100644 index 645b2cd23..000000000 --- a/doc/salome/examples/quality_controls_ex16.py +++ /dev/null @@ -1,32 +0,0 @@ -# Minimum Angle - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : MINIMUM ANGLE < 35. -min_angle = 35. - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_MinimumAngle, SMESH.FT_LessThan, min_angle) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Minimum Angle < ", min_angle, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Minimum Angle < " + repr(min_angle)) - -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex17.py b/doc/salome/examples/quality_controls_ex17.py deleted file mode 100644 index a22f5e5ff..000000000 --- a/doc/salome/examples/quality_controls_ex17.py +++ /dev/null @@ -1,32 +0,0 @@ -# Warping - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : WARP ANGLE > 1e-15 -wa_margin = 1e-15 - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Warping, SMESH.FT_MoreThan, wa_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Warp > ", wa_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Warp > " + repr(wa_margin)) - -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex18.py b/doc/salome/examples/quality_controls_ex18.py deleted file mode 100644 index 9f6f7a3f3..000000000 --- a/doc/salome/examples/quality_controls_ex18.py +++ /dev/null @@ -1,31 +0,0 @@ -# Skew - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : Skew > 38. -skew_margin = 38. - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_Skew, SMESH.FT_MoreThan, skew_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Skew > ", skew_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Skew > " + repr(skew_margin)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex19.py b/doc/salome/examples/quality_controls_ex19.py deleted file mode 100644 index 62ef71030..000000000 --- a/doc/salome/examples/quality_controls_ex19.py +++ /dev/null @@ -1,31 +0,0 @@ -# Element Diameter 2D - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh -salome = SMESH_mechanic.salome - -# Criterion : ELEMENT DIAMETER 2D > 10 -mel_2d_margin = 10 - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_MaxElementLength2D, SMESH.FT_MoreThan, mel_2d_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Element Diameter 2D Ratio > ", mel_2d_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Element Diameter 2D > " + repr(mel_2d_margin)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex20.py b/doc/salome/examples/quality_controls_ex20.py deleted file mode 100644 index dd594c193..000000000 --- a/doc/salome/examples/quality_controls_ex20.py +++ /dev/null @@ -1,32 +0,0 @@ -# Aspect Ratio 3D - -import SMESH_mechanic_tetra -import SMESH - -smesh = SMESH_mechanic_tetra.smesh -mesh = SMESH_mechanic_tetra.mesh -salome = SMESH_mechanic_tetra.salome - -# Criterion : ASPECT RATIO 3D > 4.5 -ar_margin = 4.5 - -aFilter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_AspectRatio3D, SMESH.FT_MoreThan, ar_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Aspect Ratio 3D > ", ar_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.VOLUME, "Aspect Ratio 3D > " + repr(ar_margin)) - -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex21.py b/doc/salome/examples/quality_controls_ex21.py deleted file mode 100644 index 683e314b7..000000000 --- a/doc/salome/examples/quality_controls_ex21.py +++ /dev/null @@ -1,33 +0,0 @@ -# Volume - -import SMESH_mechanic_tetra -import SMESH - -smesh = SMESH_mechanic_tetra.smesh -mesh = SMESH_mechanic_tetra.mesh -salome = SMESH_mechanic_tetra.salome - -# Criterion : VOLUME < 7. -volume_margin = 7. - -aFilter = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_Volume3D, SMESH.FT_LessThan, volume_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("") -print("Criterion: Volume < ", volume_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.VOLUME, "Volume < " + repr(volume_margin)) - -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/quality_controls_ex22.py b/doc/salome/examples/quality_controls_ex22.py deleted file mode 100644 index 131091f8c..000000000 --- a/doc/salome/examples/quality_controls_ex22.py +++ /dev/null @@ -1,31 +0,0 @@ -# Element Diameter 3D - -import SMESH_mechanic_tetra -import SMESH - -smesh = SMESH_mechanic_tetra.smesh -mesh = SMESH_mechanic_tetra.mesh -salome = SMESH_mechanic_tetra.salome - -# Criterion : ELEMENT DIAMETER 3D > 10 -mel_3d_margin = 10 - -aFilter = smesh.GetFilter(SMESH.FACE, SMESH.FT_MaxElementLength3D, SMESH.FT_MoreThan, mel_3d_margin) - -anIds = mesh.GetIdsFromFilter(aFilter) - -# print the result -print("Criterion: Element Diameter 3D Ratio > ", mel_3d_margin, " Nb = ", len(anIds)) -j = 1 -for i in range(len(anIds)): - if j > 20: j = 1; print("") - print(anIds[i], end=' ') - j = j + 1 - pass -print("") - -# create a group -aGroup = mesh.CreateEmptyGroup(SMESH.FACE, "Element Diameter 3D > " + repr(mel_3d_margin)) -aGroup.Add(anIds) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/radial_prism_3d_algo.py b/doc/salome/examples/radial_prism_3d_algo.py deleted file mode 100644 index fe29e52dc..000000000 --- a/doc/salome/examples/radial_prism_3d_algo.py +++ /dev/null @@ -1,36 +0,0 @@ -# Usage of Radial Prism 3D meshing algorithm - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Create geometry: hollow sphere - -sphere_1 = geompy.MakeSphereR( 100 ) -sphere_2 = geompy.MakeSphereR( 50 ) - -hollow_sphere = geompy.MakeCut( sphere_1, sphere_2, theName="hollow sphere") - -faces = geompy.ExtractShapes( hollow_sphere, geompy.ShapeType["FACE"] ) - - -# Create mesh - -mesh = smesh.Mesh( hollow_sphere, "Mesh of hollow sphere" ) - -# assign Global Radial Prism algorithm -prism_algo = mesh.Prism() - -# define projection between the inner and outer spheres -mesh.Triangle( smeshBuilder.NETGEN_1D2D, faces[0] ) # NETGEN on faces[0] -mesh.Projection1D2D( faces[1] ).SourceFace( faces[0] ) # projection faces[0] -> faces[1] - -# define distribution of layers using Number of Segments hypothesis in logarithmic mode -prism_algo.NumberOfSegments( 4, 5. ) - -# compute the mesh -mesh.Compute() diff --git a/doc/salome/examples/split_biquad.py b/doc/salome/examples/split_biquad.py deleted file mode 100644 index f9d97b31a..000000000 --- a/doc/salome/examples/split_biquad.py +++ /dev/null @@ -1,37 +0,0 @@ -# Split bi-quadratic to linear - -import salome -salome.salome_init_without_session() - -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# make a shape consisting of two quadranges -OY = geompy.MakeVectorDXDYDZ(0, 1, 0) -OY1 = geompy.MakeTranslation( OY, 1, 0, 0 ) -OY2 = geompy.MakeTranslation( OY, 2, 0, 0 ) -q1 = geompy.MakeQuad2Edges( OY, OY1 ) -q2 = geompy.MakeQuad2Edges( OY1, OY2 ) - -shape = geompy.Partition( [q1,q2], theName='shape' ) -ff = geompy.SubShapeAll( shape, geompy.ShapeType["FACE"], theName="quad" ) - -# mesh one quadrange with quadrangless and the other with triangles -mesh = smesh.Mesh( shape ) -mesh.Segment().NumberOfSegments(1) -mesh.Quadrangle() -mesh.Triangle( ff[1] ) -mesh.Compute() - -# make group of quadrangles and extrude them into a hexahedron -quadGroup = mesh.Group( ff[0], "quads") -mesh.ExtrusionSweepObject2D( quadGroup, [0,0,1], 1 ) - -# make the mesh bi-quadratic -mesh.ConvertToQuadratic( theToBiQuad=True ) - -# split all elements into linear ones -mesh.SplitBiQuadraticIntoLinear() diff --git a/doc/salome/examples/ssl_hdf5_symbols_conflicts.py b/doc/salome/examples/ssl_hdf5_symbols_conflicts.py deleted file mode 100644 index c88863890..000000000 --- a/doc/salome/examples/ssl_hdf5_symbols_conflicts.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python - -""" -tuleap26358 : Non regression test pointing to an incompatibiliy between hdf5 symbols in CGNS and hdf5 symbols -in hdf5 library. -""" - -import salome -salome.standalone() -salome.salome_init() -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder - -smesh = smeshBuilder.New() - -inputMED="Mesh_tri.med" - -([Mesh_tri_1], status) = smesh.CreateMeshesFromMED(inputMED) -import SMESH -if status != SMESH.DRS_OK: - raise RuntimeError("Test failed") diff --git a/doc/salome/examples/test_homard_adapt.py b/doc/salome/examples/test_homard_adapt.py deleted file mode 100644 index 030bb6f62..000000000 --- a/doc/salome/examples/test_homard_adapt.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python3 - - - -import salome -salome.salome_init_without_session() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -import SMESHHOMARD - -smesh = smeshBuilder.New() - -import os, inspect, tempfile, shutil - -data_dir = os.path.abspath(os.path.dirname(inspect.getfile(lambda: None))) -working_dir = tempfile.mkdtemp() - -input_med = os.path.join (data_dir, "test_homard_adapt.med") -output_med_1 = os.path.join (working_dir, "test_1.00_Uniform_R_01.med") -output_med_2 = os.path.join (working_dir, "test_1.00_Uniform_R_02.med") -log_file_1 = os.path.join (working_dir, "test_1.00_Uniform_R_01.med.log") -log_file_2 = os.path.join (working_dir, "test_1.00_Uniform_R_02.med.log") - -# Case 1: input: med file -# output: med file, log file, published mesh -if os.path.isfile(output_med_1): - os.remove(output_med_1) -if os.path.isfile(log_file_1): - os.remove(log_file_1) - -smeshhomard = smesh.Adaptation("Uniform") -smeshhomard.CreateCase("MAILL", input_med, working_dir) -smeshhomard.SetConfType(0) -smeshhomard.SetKeepMedOUT(True) -smeshhomard.SetPublishMeshOUT(True) -smeshhomard.SetMeshNameOUT("MAILL_Uniform_R_01") -smeshhomard.SetMeshFileOUT(output_med_1) -smeshhomard.SetKeepWorkingFiles(False) -smeshhomard.SetLogInFile(True) -smeshhomard.SetLogFile(log_file_1) -smeshhomard.SetRemoveLogOnSuccess(False) -smeshhomard.SetVerboseLevel(3) -smeshhomard.Compute() - -if os.path.isfile(output_med_1): - os.remove(output_med_1) -else: - print("Test Uniform refinement Case 1: Error: no output med file") - assert(False) - -if os.path.isfile(log_file_1): - os.remove(log_file_1) -else: - print("Test Uniform refinement Case 1: Error: no log file") - assert(False) - -# Case 2: input: mesh, boundaries -# output: published mesh -if os.path.isfile(output_med_2): - os.remove(output_med_2) -if os.path.isfile(log_file_2): - os.remove(log_file_2) - -# prepare input mesh -([MAILL], status) = smesh.CreateMeshesFromMED( input_med ) - -#smeshhomard = smesh.Adaptation("Uniform") -Boun_1 = smeshhomard.CreateBoundaryCylinder("Boun_1", 0.5, 0.5, 0.5, 0, 0, 1, 0.25) -smeshhomard.CreateCaseOnMesh("MAILL", MAILL.GetMesh(), working_dir) -smeshhomard.SetConfType(0) -smeshhomard.AddBoundaryGroup("Boun_1", "BORD_EXT") -smeshhomard.AddBoundaryGroup("Boun_1", "MOITIE1") -smeshhomard.SetKeepMedOUT(False) -smeshhomard.SetPublishMeshOUT(True) -smeshhomard.SetMeshNameOUT("MAILL_Uniform_R_02") -smeshhomard.SetMeshFileOUT(output_med_2) -smeshhomard.SetKeepWorkingFiles(False) -smeshhomard.SetLogInFile(True) -smeshhomard.SetLogFile(log_file_2) -smeshhomard.SetRemoveLogOnSuccess(True) -smeshhomard.SetVerboseLevel(0) -smeshhomard.Compute() - -if os.path.isfile(output_med_2): - print("Test Uniform refinement Case 2: Error: output med file has not been removed") - assert(False) - -if os.path.isfile(log_file_2): - print("Test Uniform refinement Case 2: Error: log file has not been removed") - assert(False) - -shutil.rmtree(working_dir) - -if salome.sg.hasDesktop(): - salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/test_uniform_refinement.py b/doc/salome/examples/test_uniform_refinement.py deleted file mode 100644 index 9ce353477..000000000 --- a/doc/salome/examples/test_uniform_refinement.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env python3 - -import salome -salome.salome_init_without_session() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -import SMESHHOMARD - -smesh = smeshBuilder.New() - -import os, inspect, tempfile, shutil - -data_dir = os.path.abspath(os.path.dirname(inspect.getfile(lambda: None))) -working_dir = tempfile.mkdtemp() - -input_med_1 = os.path.join (data_dir, "tutorial_4.00.med") -input_xao_1 = os.path.join (data_dir, "tutorial_4.xao") -output_med_1 = os.path.join (working_dir, "tutorial_4.00_Uniform_R.med") -log_file_1 = os.path.join (working_dir, "tutorial_4.00_Uniform_R.log") - -# Case 1: input: med file -# output: med file, log file, published mesh -if os.path.isfile(output_med_1): - os.remove(output_med_1) -if os.path.isfile(log_file_1): - os.remove(log_file_1) - -cao_name = "CAO_PIQUAGE" -smeshhomard = smesh.Adaptation("Uniform") -smeshhomard.CreateBoundaryCAO(cao_name, input_xao_1) -smeshhomard.CreateCase("PIQUAGE", input_med_1, working_dir) -smeshhomard.AddBoundary(cao_name) -smeshhomard.SetConfType(0) -smeshhomard.SetKeepMedOUT(True) -smeshhomard.SetPublishMeshOUT(True) -smeshhomard.SetMeshNameOUT("PIQUAGE_Uniform_R_01") -smeshhomard.SetMeshFileOUT(output_med_1) -smeshhomard.SetKeepWorkingFiles(False) -smeshhomard.SetLogInFile(True) -smeshhomard.SetLogFile(log_file_1) -smeshhomard.SetRemoveLogOnSuccess(False) -smeshhomard.SetVerboseLevel(3) -smeshhomard.Compute() - -if os.path.isfile(output_med_1): - os.remove(output_med_1) -else: - print("Test Uniform refinement Case 1: Error: no output med file") - assert(False) - -if os.path.isfile(log_file_1): - os.remove(log_file_1) -else: - print("Test Uniform refinement Case 1: Error: no log file") - assert(False) - -# Case 2: input: mesh, boundaries -# output: published mesh -input_med_2 = os.path.join (data_dir, "tutorial_5.00.med") -input_fr = os.path.join (data_dir, "tutorial_5.fr.med") -output_med_2 = os.path.join (working_dir, "tutorial_5.00_Uniform_R.med") -log_file_2 = os.path.join (working_dir, "tutorial_5.00_Uniform_R.log") - -if os.path.isfile(output_med_2): - os.remove(output_med_2) -if os.path.isfile(log_file_2): - os.remove(log_file_2) - -# prepare input mesh -([MAILL], status) = smesh.CreateMeshesFromMED( input_med_2 ) - -smeshhomard = smesh.Adaptation("Uniform") -smeshhomard.CreateBoundaryDi("Boun_5_1", "MAIL_EXT", input_fr) -smeshhomard.CreateCaseOnMesh("COEUR_2D", MAILL.GetMesh(), working_dir) -smeshhomard.AddBoundary("Boun_5_1") -smeshhomard.SetConfType(1) -smeshhomard.SetKeepMedOUT(False) -smeshhomard.SetPublishMeshOUT(True) -smeshhomard.SetMeshNameOUT("COEUR_2D_Uniform_R") -smeshhomard.SetMeshFileOUT(output_med_2) -smeshhomard.SetKeepWorkingFiles(False) -smeshhomard.SetLogInFile(True) -smeshhomard.SetLogFile(log_file_2) -smeshhomard.SetRemoveLogOnSuccess(True) -smeshhomard.SetVerboseLevel(0) -smeshhomard.Compute() - -if os.path.isfile(output_med_2): - print("Test Uniform refinement Case 2: Error: output med file has not been removed") - assert(False) - -if os.path.isfile(log_file_2): - print("Test Uniform refinement Case 2: Error: log file has not been removed") - assert(False) - -shutil.rmtree(working_dir) - -if salome.sg.hasDesktop(): - salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/tests.py.in b/doc/salome/examples/tests.py.in deleted file mode 100644 index cd8917419..000000000 --- a/doc/salome/examples/tests.py.in +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (C) 2018-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# 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, or (at your option) any later version. -# -# 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 -# - -DIR='@CMAKE_CURRENT_SOURCE_DIR@' -TESTS='@GOOD_TESTS@' -REINIT_SALOME=@TEST_REINIT_SALOME@ - -import os -import unittest -import salome - -class MyTest(unittest.TestCase): - def setUp(self): - if REINIT_SALOME: - salome.salome_init() - def tearDown(self): - if REINIT_SALOME: - salome.salome_close() - pass - -if __name__ == "__main__": - tests = TESTS.split(';') - for test in tests: - file_name = os.path.basename(test) - if os.path.isabs(test): - file_path = file_name - else: - file_path = os.path.join(DIR, file_name) - case_name = 'test_' + file_name[:-3] - code = """ -def func(self): - with open('{}') as f: - exec(f.read()) -""" - exec(code.format(file_path)) - setattr(MyTest, case_name, func) - - unittest.main() diff --git a/doc/salome/examples/tests.set b/doc/salome/examples/tests.set deleted file mode 100644 index 449620fc2..000000000 --- a/doc/salome/examples/tests.set +++ /dev/null @@ -1,216 +0,0 @@ -# Copyright (C) 2015-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# 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, or (at your option) any later version. -# -# 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 -# - -# examples that can't be used for testing because they use external mesher plug-ins -SET(BAD_TESTS - 3dmesh.py - a3DmeshOnModified2Dmesh.py - creating_meshes_ex01.py - creating_meshes_ex03.py - creating_meshes_ex05.py - defining_hypotheses_ex06.py - defining_hypotheses_ex09.py - defining_hypotheses_ex17.py - filters_ex02.py - filters_ex08.py - filters_ex23.py - filters_ex24.py - filters_ex25.py - filters_ex32.py - filters_ex35.py - generate_flat_elements.py - modifying_meshes_ex26.py - notebook_smesh.py - quality_controls_ex06.py - quality_controls_ex20.py - quality_controls_ex21.py - quality_controls_ex22.py - viewing_meshes_ex01.py - radial_prism_3d_algo.py - test_smeshplugins.py - blocFissure_01_without_session.py - blocFissure_02_without_session.py - blocFissure_03_without_session.py - blocFissure_04_without_session.py - blocFissure_05_without_session.py - blocFissure_06_without_session.py - blocFissure_07_without_session.py - ) - -IF(NOT WIN32) - LIST(APPEND BAD_TESTS - MGAdaptTests_without_session.py - test_smeshplugin_mg_tetra_parallele.py - ) - IF(MED_INT_IS_LONG) - LIST(APPEND BAD_TESTS - test_homard_adapt.py - test_uniform_refinement.py - ) - ENDIF(MED_INT_IS_LONG) -ENDIF(NOT WIN32) - -SET(GOOD_TESTS - cartesian_algo.py - create_penta_biquad.py - creating_meshes_ex02.py - creating_meshes_ex04.py - creating_meshes_ex06.py - creating_meshes_ex07.py - creating_meshes_ex08.py - defining_hypotheses_ex01.py - defining_hypotheses_ex02.py - defining_hypotheses_ex03.py - defining_hypotheses_ex04.py - defining_hypotheses_ex05.py - defining_hypotheses_ex07.py - defining_hypotheses_ex08.py - defining_hypotheses_ex10.py - defining_hypotheses_ex11.py - defining_hypotheses_ex12.py - defining_hypotheses_ex13.py - defining_hypotheses_ex14.py - defining_hypotheses_ex15.py - defining_hypotheses_ex16.py - defining_hypotheses_adaptive1d.py - extrusion_penta_biquad.py - filters_ex01.py - filters_ex03.py - filters_ex04.py - filters_ex05.py - filters_ex06.py - filters_ex07.py - filters_ex09.py - filters_ex10.py - filters_ex11.py - filters_ex12.py - filters_ex13.py - filters_ex14.py - filters_ex15.py - filters_ex16.py - filters_ex17.py - filters_ex18.py - filters_ex19.py - filters_ex20.py - filters_ex21.py - filters_ex22.py - filters_ex26.py - filters_ex27.py - filters_ex28.py - filters_ex29.py - filters_ex30.py - filters_ex31.py - filters_ex33.py - filters_ex34.py - filters_ex36.py - filters_ex37.py - filters_ex38.py - filters_ex39.py - filters_node_nb_conn.py - filters_belong2group.py - grouping_elements_ex01.py - grouping_elements_ex02.py - grouping_elements_ex03.py - grouping_elements_ex04.py - grouping_elements_ex05.py - grouping_elements_ex06.py - grouping_elements_ex07.py - grouping_elements_ex08.py - grouping_elements_ex09.py - measurements_ex01.py - measurements_ex02.py - measurements_ex03.py - measurements_ex04.py - modifying_meshes_ex01.py - modifying_meshes_ex02.py - modifying_meshes_ex03.py - modifying_meshes_ex04.py - modifying_meshes_ex05.py - modifying_meshes_ex06.py - modifying_meshes_ex07.py - modifying_meshes_ex08.py - modifying_meshes_ex09.py - modifying_meshes_ex10.py - modifying_meshes_ex11.py - modifying_meshes_ex12.py - modifying_meshes_ex13.py - modifying_meshes_ex14.py - modifying_meshes_ex15.py - modifying_meshes_ex16.py - modifying_meshes_ex17.py - modifying_meshes_ex18.py - modifying_meshes_ex19.py - modifying_meshes_ex20.py - modifying_meshes_ex21.py - modifying_meshes_ex22.py - modifying_meshes_ex23.py - modifying_meshes_ex24.py - modifying_meshes_ex25.py - modifying_meshes_split_vol.py - prism_3d_algo.py - quality_controls_ex01.py - quality_controls_ex02.py - quality_controls_ex03.py - quality_controls_ex04.py - quality_controls_ex05.py - quality_controls_ex07.py - quality_controls_ex08.py - quality_controls_ex09.py - quality_controls_ex10.py - quality_controls_ex11.py - quality_controls_ex12.py - quality_controls_ex13.py - quality_controls_ex14.py - quality_controls_ex15.py - quality_controls_ex16.py - quality_controls_ex17.py - quality_controls_ex18.py - quality_controls_ex19.py - quality_controls_defl.py - transforming_meshes_ex01.py - transforming_meshes_ex02.py - transforming_meshes_ex03.py - transforming_meshes_ex04.py - transforming_meshes_ex05.py - transforming_meshes_ex06.py - transforming_meshes_ex07.py - transforming_meshes_ex08.py - transforming_meshes_ex09.py - transforming_meshes_ex10.py - transforming_meshes_ex11.py - transforming_meshes_ex12.py - transforming_meshes_ex13.py - use_existing_faces.py - viewing_meshes_ex02.py - split_biquad.py - quad_medial_axis_algo.py - defining_hypotheses_len_near_vertex.py - test_polyhedron_per_solid.py -) - -set(SESSION_FREE_TESTS - basic_geom_smesh_without_session.py - basic_shaper_smesh_without_session.py - shaper_smesh_groups_without_session.py - basic_smesh_output_with_mc_field.py - ssl_hdf5_symbols_conflicts.py - doublenodes_polyhedra.py -) - -SET(EXAMPLES_TESTS ${BAD_TESTS} ${GOOD_TESTS} ${SESSION_FREE_TESTS} testme.py) diff --git a/doc/salome/examples/transforming_meshes_ex01.py b/doc/salome/examples/transforming_meshes_ex01.py deleted file mode 100644 index 93f5196c0..000000000 --- a/doc/salome/examples/transforming_meshes_ex01.py +++ /dev/null @@ -1,11 +0,0 @@ -# Translation - -import SMESH_mechanic - -mesh = SMESH_mechanic.mesh - -# define translation vector -vector = [-150., -150., 0.] - -# make a translated copy of all elements of the mesh -mesh.TranslateObject(mesh, vector, Copy=True) diff --git a/doc/salome/examples/transforming_meshes_ex02.py b/doc/salome/examples/transforming_meshes_ex02.py deleted file mode 100644 index 5b3ff287e..000000000 --- a/doc/salome/examples/transforming_meshes_ex02.py +++ /dev/null @@ -1,16 +0,0 @@ -# Rotation - -import math - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh - -# define rotation axis and angle -axisXYZ = SMESH.AxisStruct(0., 0., 0., 5., 5., 20.) -angle270 = 1.5 * math.pi - -# rotate a mesh -mesh.Rotate([], axisXYZ, angle270, 1) diff --git a/doc/salome/examples/transforming_meshes_ex03.py b/doc/salome/examples/transforming_meshes_ex03.py deleted file mode 100644 index edd4cb438..000000000 --- a/doc/salome/examples/transforming_meshes_ex03.py +++ /dev/null @@ -1,33 +0,0 @@ -# Scale - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -Box = geompy.MakeBoxDXDYDZ(200, 200, 200) -f = geompy.SubShapeAllSorted(Box, geompy.ShapeType["FACE"]) - -Mesh1 = smesh.Mesh(f[0]) -Regular_1D = Mesh1.Segment() -Nb_Segments_1 = Regular_1D.NumberOfSegments(3) -Nb_Segments_1.SetDistrType( 0 ) -Quadrangle_2D = Mesh1.Quadrangle() -isDone = Mesh1.Compute() - -#Perform scale operation for the whole mesh and creation of a new mesh -newMesh = Mesh1.ScaleMakeMesh(Mesh1,SMESH.PointStruct(100,100,200),[0.5,0.3,0.7],True,"ScaledMesh") - -#Perform scale operation for the whole mesh and copy elements -Mesh1.Scale(Mesh1,SMESH.PointStruct(200,100,100),[0.5,0.5,0.5],True,True) - -#Perform scale operation for two edges and move elements -Mesh1.Scale([1,2],SMESH.PointStruct(-100,100,100),[0.8,1.0,0.7],False) - -#Perform scale operation for one face and move elements -Mesh1.Scale([21],SMESH.PointStruct(0,200,200),[0.7,0.7,0.7],False) diff --git a/doc/salome/examples/transforming_meshes_ex04.py b/doc/salome/examples/transforming_meshes_ex04.py deleted file mode 100644 index 910035521..000000000 --- a/doc/salome/examples/transforming_meshes_ex04.py +++ /dev/null @@ -1,14 +0,0 @@ -# Symmetry - -import math - -import SMESH_mechanic -import SMESH - -smesh = SMESH_mechanic.smesh -mesh = SMESH_mechanic.mesh - -# create a symmetrical copy of the mesh mirrored through a point -axis = SMESH.AxisStruct(0, 0, 0, 0, 0, 0) - -mesh.Mirror([], axis, smesh.POINT, 1) diff --git a/doc/salome/examples/transforming_meshes_ex05.py b/doc/salome/examples/transforming_meshes_ex05.py deleted file mode 100644 index 0adf0247c..000000000 --- a/doc/salome/examples/transforming_meshes_ex05.py +++ /dev/null @@ -1,24 +0,0 @@ -# Merging Nodes - -import SMESH_mechanic, SMESH -mesh = SMESH_mechanic.mesh -smesh = SMESH_mechanic.smesh - -# criterion of coincidence -Tolerance = 4.0 - -# find close nodes of triangle elements only -triangleFilter = smesh.GetFilter( SMESH.FACE, SMESH.FT_ElemGeomType,'=', SMESH.Geom_TRIANGLE ) -GroupsOfNodesOfTriangles = mesh.FindCoincidentNodesOnPart([triangleFilter],Tolerance) - -# prevent nodes located on geom edges from removal during merge: -# create a group including all nodes on edges -allSegs = mesh.MakeGroup( "all segments", SMESH.EDGE, SMESH.FT_ElemGeomType,'=', SMESH.Geom_EDGE ) - -mesh.MergeNodes(GroupsOfNodesOfTriangles, NodesToKeep=allSegs) - - -# find close nodes in the whole mesh -GroupsOfNodes = mesh.FindCoincidentNodes(Tolerance) - -mesh.MergeNodes(GroupsOfNodes, NodesToKeep=allSegs) diff --git a/doc/salome/examples/transforming_meshes_ex06.py b/doc/salome/examples/transforming_meshes_ex06.py deleted file mode 100644 index 964449fe3..000000000 --- a/doc/salome/examples/transforming_meshes_ex06.py +++ /dev/null @@ -1,86 +0,0 @@ -# Merging Elements - - -import salome -salome.salome_init_without_session() -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a face to be meshed -px = geompy.MakeVertex(100., 0. , 0. ) -py = geompy.MakeVertex(0. , 100., 0. ) -pz = geompy.MakeVertex(0. , 0. , 100.) - -vxy = geompy.MakeVector(px, py) -arc = geompy.MakeArc(py, pz, px) - -wire = geompy.MakeWire([vxy, arc]) -isPlanarFace = 1 - -face1 = geompy.MakeFace(wire, isPlanarFace) -id_face1 = geompy.addToStudy(face1, "Face1") - -# create a circle to be an extrusion path -px1 = geompy.MakeVertex( 100., 100., 0.) -py1 = geompy.MakeVertex(-100., -100., 0.) -pz1 = geompy.MakeVertex( 0., 0., 50.) - -circle = geompy.MakeCircleThreePnt(py1, pz1, px1) -id_circle = geompy.addToStudy(circle, "Path") - -# create a 2D mesh on the face -trias = smesh.Mesh(face1, "Face : 2D mesh") - -algo1D = trias.Segment() -algo1D.NumberOfSegments(6) -algo2D = trias.Triangle() -algo2D.LengthFromEdges() - -trias.Compute() - -# create a group of all triangles currently present in the mesh -faceTriGroup = trias.Group( face1, "face triangles" ) - -# create a path mesh -circlemesh = smesh.Mesh(circle, "Path mesh") -algo = circlemesh.Segment() -algo.NumberOfSegments(10) -circlemesh.Compute() - -# extrusion of the mesh -trias.ExtrusionAlongPath([], circlemesh, circle, 1, MakeGroups=True ) - -# get a group "opposite" to faceTriGroup within the generated prismatic mesh -oppositeGroup = trias.GetGroupByName( faceTriGroup.GetName() + "_top" )[0] - -# get edges of the groups -edgeGroup = trias.CreateDimGroup([ faceTriGroup, oppositeGroup ], SMESH.EDGE, "face edges") - -# merge nodes of the groups only -print("Number of nodes before MergeNodes:", end=' ') -trias.NbNodes() -tolerance = 0.001 -array_of_nodes_groups = trias.FindCoincidentNodesOnPart([faceTriGroup, oppositeGroup], tolerance) - -trias.MergeNodes(array_of_nodes_groups) - -print("Number of nodes after MergeNodes:", trias.NbNodes()) -print("") -print("Number of elements before MergeEqualElements:") -print("Edges : ", trias.NbEdges()) -print("Faces : ", trias.NbFaces()) -print("Volumes : ", trias.NbVolumes()) - -# merge elements of the groups -equalFaces = trias.FindEqualElements( [faceTriGroup, oppositeGroup, edgeGroup] ) -trias.MergeElements( equalFaces ) -print("Number of elements after MergeEqualElements:") -print("Edges : ", trias.NbEdges()) -print("Faces : ", trias.NbFaces()) -print("Volumes : ", trias.NbVolumes()) - -salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/transforming_meshes_ex07.py b/doc/salome/examples/transforming_meshes_ex07.py deleted file mode 100644 index 65865aca5..000000000 --- a/doc/salome/examples/transforming_meshes_ex07.py +++ /dev/null @@ -1,46 +0,0 @@ -# Sew Meshes Border to Side - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create two faces of a box -box1 = geompy.MakeBox(0., 0., -10., 30., 20., 25.) -facesList1 = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"]) -face1 = facesList1[2] - -box2 = geompy.MakeBox(0., 5., 0., 20., 20., 15.) -facesList2 = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"]) -face2 = facesList2[1] - -edgesList = geompy.SubShapeAll(face2, geompy.ShapeType["EDGE"]) -edge1 = edgesList[2] - -aComp = geompy.MakeCompound([face1, face2]) -geompy.addToStudy(aComp, "Two faces") - -# create a mesh on two faces -mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh") - -algo1D = mesh.Segment() -algo1D.NumberOfSegments(9) -algo2D = mesh.Quadrangle() - -algo_local = mesh.Segment(edge1) -algo_local.Arithmetic1D(1, 4) -algo_local.Propagation() - -mesh.Compute() - -# sew border to side -# FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder, -# FirstNodeIDOnSide, LastNodeIDOnSide, -# CreatePolygons, CreatePolyedrs -mesh.SewBorderToSide(5, 45, 6, 113, 109, 0, 0) diff --git a/doc/salome/examples/transforming_meshes_ex08.py b/doc/salome/examples/transforming_meshes_ex08.py deleted file mode 100644 index 542bb5f54..000000000 --- a/doc/salome/examples/transforming_meshes_ex08.py +++ /dev/null @@ -1,46 +0,0 @@ -# Sew Conform Free Borders - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -# create two faces of the box -box1 = geompy.MakeBox(0., 0., -10., 20., 20., 15.) -facesList1 = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"]) -face1 = facesList1[2] - -box2 = geompy.MakeBox(0., 5., 0., 20., 20., 15.) -facesList2 = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"]) -face2 = facesList2[1] - -edgesList = geompy.SubShapeAll(face2, geompy.ShapeType["EDGE"]) -edge1 = edgesList[2] - -aComp = geompy.MakeCompound([face1, face2]) -geompy.addToStudy(aComp, "Two faces") - -# create a mesh on two faces -mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh") - -algo1D = mesh.Segment() -algo1D.NumberOfSegments(9) -algo2D = mesh.Quadrangle() - -algo_local = mesh.Segment(edge1) -algo_local.Arithmetic1D(1, 4) -algo_local.Propagation() - -mesh.Compute() - -# sew conform free borders -# FirstNodeID1, SecondNodeID1, LastNodeID1, FirstNodeID2, SecondNodeID2 -mesh.SewConformFreeBorders(5, 45, 6, 3, 24) diff --git a/doc/salome/examples/transforming_meshes_ex09.py b/doc/salome/examples/transforming_meshes_ex09.py deleted file mode 100644 index bbc76691c..000000000 --- a/doc/salome/examples/transforming_meshes_ex09.py +++ /dev/null @@ -1,50 +0,0 @@ -# Sew Free Borders - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# make two not sewed quadranges -OY0 = geompy.MakeVectorDXDYDZ(0, 1, 0) -OY1 = geompy.MakeTranslation( OY0, 1, 0, 0, theName="OY1" ) -OY2 = geompy.MakeTranslation( OY0, 1.01, 0, 0, theName="OY2" ) -OY3 = geompy.MakeTranslation( OY0, 2, 0, 0 ) -q1 = geompy.MakeQuad2Edges( OY0, OY1 ) -q2 = geompy.MakeQuad2Edges( OY2, OY3 ) - -shape = geompy.MakeCompound( [q1,q2], theName='shape' ) - -# make a non-uniform quadrangle mesh on two faces -mesh = smesh.Mesh(shape, "Two faces : quadrangle mesh") -mesh.Segment().Arithmetic1D( 0.1, 0.4 ) -mesh.Segment(q1).NumberOfSegments( 5 ) -mesh.Quadrangle() -mesh.Compute() - -# sew free borders - -segs1 = mesh.GetSubMeshElementsId( OY1 ) # mesh segments generated on borders -segs2 = mesh.GetSubMeshElementsId( OY2 ) - -FirstNodeID1 = mesh.GetElemNode( segs1[0], 0 ) -SecondNodeID1 = mesh.GetElemNode( segs1[0], 1 ) -LastNodeID1 = mesh.GetElemNode( segs1[-1], 1 ) -FirstNodeID2 = mesh.GetElemNode( segs2[0], 0 ) -SecondNodeID2 = mesh.GetElemNode( segs2[0], 1 ) -LastNodeID2 = mesh.GetElemNode( segs2[-1], 1 ) -CreatePolygons = True -CreatePolyedrs = False - -res = mesh.SewFreeBorders(FirstNodeID1, SecondNodeID1, LastNodeID1, - FirstNodeID2, SecondNodeID2, LastNodeID2, - CreatePolygons, CreatePolyedrs ) -print(res) -print("nb polygons:", mesh.NbPolygons()) - diff --git a/doc/salome/examples/transforming_meshes_ex10.py b/doc/salome/examples/transforming_meshes_ex10.py deleted file mode 100644 index f3de43d21..000000000 --- a/doc/salome/examples/transforming_meshes_ex10.py +++ /dev/null @@ -1,63 +0,0 @@ -# Sew Side Elements - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create two boxes -box1 = geompy.MakeBox(0., 0., 0., 10., 10., 10.) -box2 = geompy.MakeBox(0., 15., 0., 20., 25., 10.) - -EdgesList = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"]) - -aComp = geompy.MakeCompound([box1, box2]) -geompy.addToStudy(aComp, "Two boxes") - -# create a mesh on two boxes -mesh = smesh.Mesh(aComp, "Sew Side Elements") - -algo1D = mesh.Segment() -algo1D.NumberOfSegments(2) -algo2D = mesh.Quadrangle() - -algo_local = mesh.Segment(EdgesList[8]) -algo_local.NumberOfSegments(4) -algo_local.Propagation() - -mesh.Compute() - -# sew side elements - -# find elements to sew -face1 = geompy.GetFaceNearPoint( aComp, geompy.MakeVertex( 5, 10, 5 )) -IDsOfSide1Elements = mesh.GetSubMeshElementsId( face1 ) -print("side faces 1:",IDsOfSide1Elements) - -face1Translated = geompy.MakeTranslation( face1, 0,5,0 ) -faceFilter = smesh.GetFilter( SMESH.FACE, SMESH.FT_BelongToGeom,'=', face1Translated ) -IDsOfSide2Elements = mesh.GetIdsFromFilter( faceFilter ) -print("side faces 2:",IDsOfSide2Elements) - -# find corresponding nodes on sides -edge1 = geompy.GetEdgeNearPoint( aComp, geompy.MakeVertex( 0, 10, 5 )) -segs1 = mesh.GetSubMeshElementsId( edge1 ) # mesh segments generated on edge1 -NodeID1OfSide1ToMerge = mesh.GetElemNode( segs1[0], 0 ) -NodeID2OfSide1ToMerge = mesh.GetElemNode( segs1[0], 1 ) -print("nodes of side1:", [NodeID1OfSide1ToMerge,NodeID2OfSide1ToMerge]) - -edge2 = geompy.GetEdgeNearPoint( aComp, geompy.MakeVertex( 0, 15, 5 )) -segs2 = mesh.GetSubMeshElementsId( edge2 ) # mesh segments generated on edge2 -NodeID1OfSide2ToMerge = mesh.GetElemNode( segs2[0], 0 ) -NodeID2OfSide2ToMerge = mesh.GetElemNode( segs2[0], 1 ) -print("nodes of side2:", [NodeID1OfSide2ToMerge,NodeID2OfSide2ToMerge]) - -res = mesh.SewSideElements(IDsOfSide1Elements, IDsOfSide2Elements, - NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge, - NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge) -print(res) diff --git a/doc/salome/examples/transforming_meshes_ex11.py b/doc/salome/examples/transforming_meshes_ex11.py deleted file mode 100644 index d4137e41d..000000000 --- a/doc/salome/examples/transforming_meshes_ex11.py +++ /dev/null @@ -1,95 +0,0 @@ -# Duplicate nodes or/and elements - - -import salome -salome.salome_init_without_session() - -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Create a box - -box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) - -# Define hexa mesh on a box -mesh = smesh.Mesh(box, "Mesh") -mesh.Segment().NumberOfSegments(7) -mesh.Quadrangle() -mesh.Hexahedron() - -# Compute mesh -mesh.Compute() - -# Duplicate nodes only - -# Nodes to duplicate -nodes1 = mesh.CreateEmptyGroup( SMESH.NODE, 'nodes1' ) -nodes1.Add( [ 119, 125, 131, 137 ] ) - -# Group of faces to replace nodes with new ones -faces1 = mesh.CreateEmptyGroup( SMESH.FACE, 'faces1' ) -faces1.Add( [ 144, 151, 158 ] ) - -# Duplicate nodes -print("\nMesh before the first nodes duplication:") -print("Nodes : ", mesh.NbNodes()) -print("Edges : ", mesh.NbEdges()) -print("Quadrangles : ", mesh.NbQuadrangles()) - -groupOfCreatedNodes = mesh.DoubleNodeGroup(nodes1, faces1, theMakeGroup=True) -print("New nodes:", groupOfCreatedNodes.GetIDs()) - -print("\nMesh after the first nodes duplication:") -print("Nodes : ", mesh.NbNodes()) -print("Edges : ", mesh.NbEdges()) -print("Quadrangles : ", mesh.NbQuadrangles()) - -# Duplicate nodes and border elements - -# Edges to duplicate -edges = mesh.CreateEmptyGroup( SMESH.EDGE, 'edges' ) -edges.Add( [ 32, 33, 34 ] ) - -# Nodes not to duplicate -nodes2 = mesh.CreateEmptyGroup( SMESH.NODE, 'nodes2' ) -nodes2.Add( [ 35, 38 ] ) - -# Group of faces to replace nodes with new ones -faces2 = mesh.CreateEmptyGroup( SMESH.FACE, 'faces2' ) -faces2.Add( [ 141, 148, 155 ] ) - -# Duplicate nodes -print("\nMesh before the second nodes duplication:") -print("Nodes : ", mesh.NbNodes()) -print("Edges : ", mesh.NbEdges()) -print("Quadrangles : ", mesh.NbQuadrangles()) - -groupOfNewEdges = mesh.DoubleNodeElemGroup( edges, nodes2, faces2, theMakeGroup=True ) -print("New edges:", groupOfNewEdges.GetIDs()) - -print("\nMesh after the second nodes duplication:") -print("Nodes : ", mesh.NbNodes()) -print("Edges : ", mesh.NbEdges()) -print("Quadrangles : ", mesh.NbQuadrangles()) - - -# Duplicate elements only - -# Duplicate all faces and make a group of new faces. -# If a mesh is given to DoubleElements(), all elements of the greatest dimension are duplicated -newFacesGroup = mesh.DoubleElements( mesh, "newFacesGroup" ) - -# Duplicate edges contained in the group "edges" and add new edges to this group -mesh.DoubleElements( edges, edges.GetName() ) - -# Duplicate two first edges of the mesh -mesh.DoubleElements([ 1, 2 ]) - -# Update object browser -if salome.sg.hasDesktop(): - salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/transforming_meshes_ex12.py b/doc/salome/examples/transforming_meshes_ex12.py deleted file mode 100644 index 65b05d7d5..000000000 --- a/doc/salome/examples/transforming_meshes_ex12.py +++ /dev/null @@ -1,118 +0,0 @@ -# Create boundary elements - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -box = geompy.MakeBoxDXDYDZ(100, 100, 100) -gFaces = geompy.SubShapeAllSorted(box, geompy.ShapeType["FACE"]) -f1,f2 = gFaces[0],gFaces[1] -geompy.addToStudy(box,"box") -geompy.addToStudyInFather(box,f1,"face1") -geompy.addToStudyInFather(box,f2,"face2") - -twoFaces = geompy.MakeCompound([f1,f2]) - -## ----------- -## -## 2D from 3D -## -## ----------- -dim = SMESH.BND_2DFROM3D - -init_mesh = smesh.Mesh(box, "box") -init_mesh.AutomaticHexahedralization() # it makes 3 x 3 x 3 hexahedrons - -# remove some faces -faces = init_mesh.GetElementsByType( SMESH.FACE ) -nb_faces = len( faces ) -rm_face = faces[ : nb_faces // 2] -init_mesh.RemoveElements( rm_face ) - -# restore boundary in this mesh -mesh = smesh.CopyMesh( init_mesh, "2D from 3D") -groupName = "bnd 2D" -nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName) - -# restore boundary (only) in other mesh -meshName = "2D boundary of " + init_mesh.GetName() -nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName) - -# restore boundary in mesh copy -meshName = init_mesh.GetName() + " + boundary" -nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName, toCopyAll=True) - - -## ----------- -## -## 1D from 2D -## -## ----------- -dim = SMESH.BND_1DFROM2D - -init_mesh = smesh.Mesh(f1, "2D mesh") -init_mesh.AutomaticHexahedralization() - -# remove some edges -edges = init_mesh.GetElementsByType( SMESH.EDGE ) -nb_edges = len( edges ) -rm_edge = edges[ : nb_edges // 2] -init_mesh.RemoveElements( rm_edge ) - - -# restore boundary edges in this mesh -mesh = smesh.CopyMesh( init_mesh, "1D from 2D") -groupName = "bnd 1D" -nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName) - -# restore boundary edges (only) in other mesh -meshName = "1D boundary of " + init_mesh.GetName() -nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName) - -# restore boundary edges in mesh copy -meshName = init_mesh.GetName() + " + boundary" -nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName, toCopyAll=True) - - - -## ------------------ -## -## 1D from 2D GROUPS -## -## ------------------ -dim = SMESH.BND_1DFROM3D - -init_mesh = smesh.Mesh(box, "box") -init_mesh.AutomaticHexahedralization() # it makes 3 x 3 x 3 hexahedrons -# remove all edges -rm_edges = init_mesh.GetElementsByType( SMESH.EDGE ) -init_mesh.RemoveElements( rm_edges ) - -# make groups of faces -fGroup1 = init_mesh.Group( f1, "f1" ) -fGroup2 = init_mesh.Group( f2, "f2" ) - -# make 1D boundary around groups in this mesh -mesh = smesh.CopyMesh( init_mesh, "1D from 2D groups", toCopyGroups=True) -groups = mesh.GetGroups() -nb, new_mesh, new_group = mesh.MakeBoundaryElements(dim, groupName,groups=groups) - -# make 1D boundary (only) in other mesh -meshName = "boundary from groups of " + init_mesh.GetName() -groups = init_mesh.GetGroups() -nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName,groups=groups) - -# make 1D boundary in mesh copy -meshName = init_mesh.GetName() + " + boundary from groups" -nb, new_mesh, new_group = init_mesh.MakeBoundaryElements(dim, groupName, meshName, - groups=groups, toCopyAll=True) - diff --git a/doc/salome/examples/transforming_meshes_ex13.py b/doc/salome/examples/transforming_meshes_ex13.py deleted file mode 100644 index d4b553963..000000000 --- a/doc/salome/examples/transforming_meshes_ex13.py +++ /dev/null @@ -1,88 +0,0 @@ -# Reorient faces - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - - -# create a geometry consisting of two faces -box = geompy.MakeBoxDXDYDZ( 10, 10, 10 ) -faces = geompy.SubShapeAllSorted( box, geompy.ShapeType["FACE"]) - -shape = geompy.MakeCompound( faces[:2] ) -faces = geompy.SubShapeAll( shape, geompy.ShapeType["FACE"] ) -geompy.addToStudy( shape, "shape") -geompy.addToStudyInFather( shape, faces[0], "faces[0]") -geompy.addToStudyInFather( shape, faces[1], "faces[1]") - -# create a 2D mesh -mesh = smesh.Mesh( shape, "test_Reorient2D") -mesh.AutomaticHexahedralization(0.5) -localAlgo = mesh.Segment(faces[0]) -localAlgo.NumberOfSegments( 11 ) -mesh.Compute() -group = mesh.Group( faces[1] ) - -vec = geompy.MakeVectorDXDYDZ( 1, 1, 1 ) - -# ============ -# Reorient2D() -# ============ - -# Each of arguments of Reorient2D() function can be of different types: -# -# 2DObject - the whole mesh -# Direction - a GEOM object (vector) -# FaceOrPoint - an ID of face -mesh.Reorient2D( mesh, vec, mesh.NbElements() ) -# -# 2DObject - a sub-mesh -# Direction - components of a vector -# FaceOrPoint - a GEOM object (vertex) -mesh.Reorient2D( localAlgo.GetSubMesh(), [ 1, -1, 1 ], geompy.GetFirstVertex( vec )) -# -# 2DObject - a group of faces -# Direction - a SMESH.DirStruct structure -# FaceOrPoint - coordinates of a point -mesh.Reorient2D( group, smesh.MakeDirStruct( -10, 1, 10 ), [0,0,0]) -# -# FaceOrPoint - a SMESH.PointStruct structure -mesh.Reorient2D( localAlgo.GetSubMesh().GetIDs(), [10,1,0], SMESH.PointStruct(0,0,0)) - -# ======================== -# Reorient2DByNeighbours() -# ======================== - -# Use faces of 'group' as a reference to reorient equally all faces -mesh.Reorient2DByNeighbours([mesh], [group]) - -# Orient equally face on 'group', but not define which orientation is correct -mesh.Reorient2DByNeighbours([group]) - -# ================= -# Reorient2DBy3D() -# ================= - -# Use Reorient2DBy3D() to orient faces of 2 geom faces to have their normal pointing inside volumes - -mesh3D = smesh.Mesh( box, '3D mesh') -mesh3D.AutomaticHexahedralization(0.5) -group0 = mesh3D.Group( faces[0] ) -group1 = mesh3D.Group( faces[1] ) - -# pass group0 and ids of faces of group1 to inverse -nbRev = mesh3D.Reorient2DBy3D([ group0, group1.GetIDs() ], mesh3D, theOutsideNormal=False) -print("Nb reoriented faces:", nbRev) - -# orient the reversed faces back -nbRev = mesh3D.Reorient2DBy3D( mesh3D, mesh3D, theOutsideNormal=True) -print("Nb re-reoriented faces:", nbRev) - diff --git a/doc/salome/examples/use_existing_faces.py b/doc/salome/examples/use_existing_faces.py deleted file mode 100644 index 0d4139255..000000000 --- a/doc/salome/examples/use_existing_faces.py +++ /dev/null @@ -1,119 +0,0 @@ -# Usage of "Use Faces to be Created Manually" algorithm - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() -import salome_notebook - -# define my 2D algorithm -def my2DMeshing(geomFace, geom_builder, smesh_builder): - import numpy as np - - # find gravity center of geomFace - gcXYZ = geom_builder.PointCoordinates( geom_builder.MakeCDG( geomFace )) - - # define order and orientation of edges - sortedEdges = [] - geomEdges = geom_builder.SubShapeAll( geomFace, geom_builder.ShapeType["EDGE"]) - sortedEdges.append(( geomEdges.pop(0), True )) - while geomEdges: - prevEdge_rev = sortedEdges[ -1 ] - prevVV = geom_builder.SubShapeAll( prevEdge_rev[0], geom_builder.ShapeType["VERTEX"]) - prevV2 = prevVV[ prevEdge_rev[1] ] - found = False - for iE in range( len( geomEdges )): - v1,v2 = geom_builder.SubShapeAll( geomEdges[ iE ], geom_builder.ShapeType["VERTEX"]) - same1,same2 = [( geom_builder.MinDistance( prevV2, v ) < 1e-7 ) for v in [v1,v2] ] - if not same1 and not same2: continue - sortedEdges.append(( geomEdges.pop( iE ), same1 )) - found = True - break - assert found - sortedEdges.reverse() - - # put nodes on edges in a right order - nodes = [] - for edge, isForward in sortedEdges: - v1,v2 = geom_builder.SubShapeAll( edge, geom_builder.ShapeType["VERTEX"]) - edgeNodes = smesh_builder.GetSubMeshNodesId( v2, all=False ) + \ - smesh_builder.GetSubMeshNodesId( edge, all=False ) + \ - smesh_builder.GetSubMeshNodesId( v1, all=False ) - if not isForward: edgeNodes.reverse() - nodes.extend( edgeNodes[:-1] ) - - # create nodes inside the geomFace - r1 = 0.6 - r2 = 1 - r1 - nodesInside = [] - for n in nodes: - nXYZ = smesh_builder.GetNodeXYZ( n ) - newXYZ = np.add( np.multiply( r1, gcXYZ ), np.multiply( r2, nXYZ )) - nodesInside.append( smesh_builder.AddNode( newXYZ[0], newXYZ[1], newXYZ[2] )) - smesh_builder.SetNodeOnFace( nodesInside[-1], geomFace, 0, 0 ) - - # find out orientation of faces to create - # geomFace normal - faceNorm = geom_builder.GetNormal( geomFace ) - v1,v2 = [ geom_builder.PointCoordinates( v ) \ - for v in geom_builder.SubShapeAll( faceNorm, geom_builder.ShapeType["VERTEX"]) ] - faceNormXYZ = np.subtract( v2, v1 ) - outDirXYZ = np.subtract( v1, [ 50, 50, 50 ] ) - if np.dot( faceNormXYZ, outDirXYZ ) < 0: # reversed face - faceNormXYZ = np.multiply( -1., faceNormXYZ ) - # mesh face normal - e1 = np.subtract( smesh_builder.GetNodeXYZ( nodes[0] ), smesh_builder.GetNodeXYZ( nodes[1] )) - e2 = np.subtract( smesh_builder.GetNodeXYZ( nodes[0] ), smesh_builder.GetNodeXYZ( nodesInside[0] )) - meshNorm = np.cross( e1, e2 ) - # faces orientation - reverse = ( np.dot( faceNormXYZ, meshNorm ) < 0 ) - - # create mesh faces - iN = len( nodes ) - while iN: - n1, n2, n3, n4 = nodes[iN-1], nodes[iN-2], nodesInside[iN-2], nodesInside[iN-1] - iN -= 1 - if reverse: - f = smesh_builder.AddFace( [n1, n2, n3, n4] ) - else: - f = smesh_builder.AddFace( [n4, n3, n2, n1] ) - # new faces must be assigned to geometry to allow 3D algorithm finding them - smesh_builder.SetMeshElementOnShape( f, geomFace ) - - if reverse: - nodesInside.reverse() - polygon = smesh_builder.AddPolygonalFace( nodesInside ) - smesh_builder.SetMeshElementOnShape( polygon, geomFace ) - - return - -# create geometry and get faces to mesh with my2DMeshing() -box = geompy.MakeBoxDXDYDZ( 100, 100, 100 ) -f1 = geompy.SubShapeAll( box, geompy.ShapeType["FACE"])[0] -f2 = geompy.GetOppositeFace( box, f1 ) -geompy.addToStudy( box, "box" ) -geompy.addToStudy( f1, "f1" ) -geompy.addToStudy( f2, "f2" ) - -# compute 1D mesh -mesh = smesh.Mesh( box ) -mesh.Segment().NumberOfSegments( 5 ) -mesh.Compute() - -# compute 2D mesh -mesh.Quadrangle() -mesh.UseExistingFaces(f1) # UseExistingFaces() allows using my2DMeshing(); -mesh.UseExistingFaces(f2) # assign UseExistingFaces() BEFORE calling my2DMeshing()! -my2DMeshing(f1, geom_builder=geompy, smesh_builder=mesh) -my2DMeshing(f2, geom_builder=geompy, smesh_builder=mesh) -assert mesh.Compute() - -# compute 3D mesh -mesh.Prism() -assert mesh.Compute() diff --git a/doc/salome/examples/viewing_meshes_ex01.py b/doc/salome/examples/viewing_meshes_ex01.py deleted file mode 100644 index 0e8899eeb..000000000 --- a/doc/salome/examples/viewing_meshes_ex01.py +++ /dev/null @@ -1,83 +0,0 @@ -# Viewing Mesh Infos - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# create a box -box = geompy.MakeBox(0., 0., 0., 20., 20., 20.) -geompy.addToStudy(box, "box") -[Face_1,Face_2,Face_3,Face_4,Face_5,Face_5] = geompy.SubShapeAll(box, geompy.ShapeType["FACE"]) - -# create a mesh -tetra = smesh.Mesh(box, "MeshBox") - -algo1D = tetra.Segment() -algo1D.NumberOfSegments(3) - -algo2D = tetra.Triangle() -algo2D.MaxElementArea(10.) - -algo3D = tetra.Tetrahedron() -algo3D.MaxElementVolume(900.) - -# Creation of SubMesh -Regular_1D_1_1 = tetra.Segment(geom=Face_1) -Nb_Segments_1 = Regular_1D_1_1.NumberOfSegments(5) -Nb_Segments_1.SetDistrType( 0 ) -Quadrangle_2D = tetra.Quadrangle(geom=Face_1) -isDone = tetra.Compute() -submesh = Regular_1D_1_1.GetSubMesh() - -# compute the mesh -tetra.Compute() - -# Creation of group -group = tetra.CreateEmptyGroup( SMESH.FACE, 'Group' ) -nbAdd = group.Add( [ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76 ] ) - -# Print information about the mesh -print("Information about mesh:") -print("Number of nodes : ", tetra.NbNodes()) -print("Number of edges : ", tetra.NbEdges()) -print("Number of faces : ", tetra.NbFaces()) -print(" triangles : ", tetra.NbTriangles()) -print(" quadrangles : ", tetra.NbQuadrangles()) -print(" polygons : ", tetra.NbPolygons()) -print("Number of volumes : ", tetra.NbVolumes()) -print(" tetrahedrons: ", tetra.NbTetras()) -print(" hexahedrons : ", tetra.NbHexas()) -print(" prisms : ", tetra.NbPrisms()) -print(" pyramids : ", tetra.NbPyramids()) -print(" polyhedrons : ", tetra.NbPolyhedrons()) - -# Get Information About Mesh by GetMeshInfo -print("\nInformation about mesh by GetMeshInfo:") -info = smesh.GetMeshInfo(tetra) -keys = list(info.keys()); keys.sort() -for i in keys: - print(" %s : %d" % ( i, info[i] )) - pass - -# Get Information About Group by GetMeshInfo -print("\nInformation about group by GetMeshInfo:") -info = smesh.GetMeshInfo(group) -keys = list(info.keys()); keys.sort() -for i in keys: - print(" %s : %d" % ( i, info[i] )) - pass - -# Get Information About SubMesh by GetMeshInfo -print("\nInformation about Submesh by GetMeshInfo:") -info = smesh.GetMeshInfo(submesh) -keys = list(info.keys()); keys.sort() -for i in keys: - print(" %s : %d" % ( i, info[i] )) - pass diff --git a/doc/salome/examples/viewing_meshes_ex02.py b/doc/salome/examples/viewing_meshes_ex02.py deleted file mode 100644 index 402e89b97..000000000 --- a/doc/salome/examples/viewing_meshes_ex02.py +++ /dev/null @@ -1,52 +0,0 @@ -# Find Element by Point - - -import salome -salome.salome_init_without_session() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -# Create a geometry to mesh -box = geompy.MakeBoxDXDYDZ(100,100,100) - -# Create a mesh -mesh = smesh.Mesh(box,"Mesh") -mesh.AutomaticHexahedralization() -mesh.Compute() - -# Create a point -x,y,z = 0, 0, 1 - -# Find all elements (except 0D ones) located at the point -all_elems_except_0D = mesh.FindElementsByPoint(x,y,z) -assert( len(all_elems_except_0D) == 4) - -# Find nodes at the point -nodes = mesh.FindElementsByPoint(x,y,z, SMESH.NODE ) -assert( len(nodes) == 0) -assert( len( mesh.FindElementsByPoint(x,y,0, SMESH.NODE)) == 1) - -# Find an edge at the point -edges = mesh.FindElementsByPoint(x,y,z, SMESH.EDGE ) -assert( len(edges) == 1) - -# Find faces at the point -edges = mesh.FindElementsByPoint(x,y,z, SMESH.FACE ) -assert( len(edges) == 2) - -# Find a volume at the point -vols = mesh.FindElementsByPoint(x,y,z, SMESH.VOLUME ) -assert( len(vols) == 1) - -# Find 0D elements at the point -elems0d = mesh.FindElementsByPoint(x,y,z, SMESH.ELEM0D ) -assert( len(elems0d) == 0) - -# Find edges within a group -group1D = mesh.MakeGroupByIds("1D", SMESH.EDGE, [1,2] ) -edges = mesh.FindElementsByPoint(x,y,z, SMESH.EDGE, group1D ) diff --git a/doc/salome/gui/CMakeLists.txt b/doc/salome/gui/CMakeLists.txt deleted file mode 100644 index df2fcbaf5..000000000 --- a/doc/salome/gui/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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, or (at your option) any later version. -# -# 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 -# - -ADD_SUBDIRECTORY(SMESH) diff --git a/doc/salome/gui/SMESH/input/about_quality_controls.rst b/doc/salome/gui/SMESH/input/about_quality_controls.rst deleted file mode 100644 index 63b20dd1b..000000000 --- a/doc/salome/gui/SMESH/input/about_quality_controls.rst +++ /dev/null @@ -1,100 +0,0 @@ -.. _quality_page: - -********************** -About quality controls -********************** - -**Mesh quality control** in MESH is destined for visual control of the generated mesh. - -Application of a definite quality control consists of usage of the corresponding algorithm, which calculates a value of a definite geometric characteristic (Area, Length of edges, etc) for all meshing elements, composing your mesh. Then all meshing elements are colored according the calculated values. The reference between the coloring of the meshing elements and these calculated values is shown with the help of a scalar bar, which is displayed near the presentation of your mesh. - -There are four types of quality controls, corresponding to node, edge, face and volume entity type. - -Node quality controls: - -* :ref:`free_nodes_page` -* :ref:`double_nodes_control_page` - - -Edge quality controls: - -* :ref:`free_borders_page` -* :ref:`length_page` -* :ref:`borders_at_multi_connection_page` -* :ref:`double_elements_page` - - -Face quality controls: - -* :ref:`free_edges_page` -* :ref:`free_faces_page` -* :ref:`bare_border_faces_page` -* :ref:`over_constrained_faces_page` -* :ref:`length_2d_page` -* :ref:`borders_at_multi_connection_2d_page` -* :ref:`area_page` -* :ref:`taper_page` -* :ref:`aspect_ratio_page` -* :ref:`minimum_angle_page` -* :ref:`warping_page` -* :ref:`skew_page` -* :ref:`max_element_length_2d_page` -* :ref:`double_elements_page` - - -Volume quality controls: - -* :ref:`aspect_ratio_3d_page` -* :ref:`volume_page` -* :ref:`max_element_length_3d_page` -* :ref:`bare_border_volumes_page` -* :ref:`over_constrained_volumes_page` -* :ref:`double_elements_page` - - -To manage the quality controls call pop-up in the VTK viewer and select "Controls" sub-menu - -.. image:: ../images/controls_popup.png - :align: center - - -* **Reset** switches off quality controls; -* **Node Controls** provides access to the node quality controls; -* **Edge Controls** provides access to the edge quality controls; -* **Face Controls** provides access to the face quality controls; -* **Volume Controls** provides access to the volume quality controls; -* **Scalar Bar Properties** allows setting :ref:`scalar_bar_dlg`; -* **Distribution -> Export ...** allows saving the distribution of quality control values in the text file; -* **Distribution -> Show** Shows/Hides the distribution histogram of the quality control values in the VTK Viewer. -* **Distribution -> Plot** Plots the distribution histogram of the quality control values in the Plot 2D Viewer. - -**Table of Contents** - -.. toctree:: - :maxdepth: 2 - - free_nodes.rst - double_nodes_control.rst - free_borders.rst - length.rst - borders_at_multi_connection.rst - double_elements_control.rst - free_edges.rst - free_faces.rst - bare_border_face.rst - over_constrained_faces.rst - length_2d.rst - borders_at_multi_connection_2d.rst - area.rst - taper.rst - aspect_ratio.rst - minimum_angle.rst - warping.rst - skew.rst - max_element_length_2d.rst - aspect_ratio_3d.rst - volume.rst - max_element_length_3d.rst - bare_border_volumes.rst - over_constrained_volumes.rst - scalar_bar.rst diff --git a/doc/salome/gui/SMESH/input/smeshpy_interface.rst b/doc/salome/gui/SMESH/input/smeshpy_interface.rst deleted file mode 100644 index 8fa865382..000000000 --- a/doc/salome/gui/SMESH/input/smeshpy_interface.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. _smeshpy_interface_page: - -**************** -Python interface -**************** - -Python API of SALOME Mesh module defines several classes that can -be used for easy mesh creation and edition. - -Documentation of SALOME Mesh module Python API is available in two forms: - -- :doc:`Structured documentation `, where all methods and classes are grouped by their functionality. - -- :ref:`Linear documentation ` grouped only by classes, declared in the :mod:`smeshBuilder` Python module. - -With SALOME 7.2, the Python interface for Mesh has been slightly modified to offer new functionality. -You may have to modify your scripts generated with SALOME 6 or older versions. -Please see :ref:`smesh_migration_page`. - -Class :class:`smeshBuilder.smeshBuilder` provides an interface to create and handle -meshes. It can be used to create an empty mesh or to import mesh from the data file. - -As soon as a mesh is created, it is possible to manage it via its own -methods, described in class :class:`smeshBuilder.Mesh` documentation. - -Class :class:`smeshstudytools.SMeshStudyTools` provides several methods to manipulate mesh objects in Salome study. - -A usual workflow to generate a mesh on geometry is following: - -#. Create an instance of :class:`smeshBuilder.smeshBuilder`: - .. code-block:: python - - from salome.smesh import smeshBuilder - smesh = smeshBuilder.New() - -#. Create a :class:`smeshBuilder.Mesh` object: - - .. code-block:: python - - mesh = smesh.Mesh( geometry ) - -#. Create and assign :ref:`algorithms ` by calling corresponding methods of the mesh. If a sub-shape is provided as an argument, a :ref:`sub-mesh ` is implicitly created on this sub-shape: - .. code-block:: python - - regular1D = mesh.Segment() - mefisto = mesh.Triangle( smeshBuilder.MEFISTO ) - # use other triangle algorithm on a face -- a sub-mesh appears in the mesh - netgen = mesh.Triangle( smeshBuilder.NETGEN_1D2D, face ) - -#. Create and assign :ref:`hypotheses ` by calling corresponding methods of algorithms: - .. code-block:: python - - segLen10 = regular1D.LocalLength( 10. ) - maxArea = mefisto.LocalLength( 100. ) - netgen.SetMaxSize( 20. ) - netgen.SetFineness( smeshBuilder.VeryCoarse ) - -#. :ref:`Compute the mesh ` (generate mesh nodes and elements): - .. code-block:: python - - mesh.Compute() - -An easiest way to start with Python scripting is to do something in -GUI and then to get a corresponding Python script via -**File > Dump Study** menu item. Don't forget that you can get -all methods of any object in hand (e.g. a mesh group or a hypothesis) -by calling *dir()* Python built-in function. - -All methods of the :class:`Mesh Group ` can be found in :ref:`tui_create_standalone_group` sample script. - -An example below demonstrates usage of the Python API for 3D mesh -generation and for retrieving basic information on mesh nodes, elements and groups. - -.. _example_3d_mesh: - -Example of 3d mesh generation: -############################## - -.. literalinclude:: ../../../examples/3dmesh.py - :language: python - -:download:`Download this script <../../../examples/3dmesh.py>` - -Examples of Python scripts for Mesh operations are available by -the following links: - -.. toctree:: - :titlesonly: - - tui_creating_meshes - tui_defining_hypotheses - tui_grouping_elements - tui_filters - tui_modifying_meshes - tui_transforming_meshes - tui_viewing_meshes - tui_quality_controls - tui_adaptation - tui_measurements - tui_work_on_objects_from_gui - tui_notebook_smesh - -.. toctree:: - :hidden: - - smesh_migration.rst - smeshBuilder.rst - StdMeshersBuilder.rst - smeshstudytools.rst - modules.rst - smesh_module.rst diff --git a/doc/salome/gui/SMESH/input/tui_adaptation.rst b/doc/salome/gui/SMESH/input/tui_adaptation.rst deleted file mode 100644 index 2e90aad82..000000000 --- a/doc/salome/gui/SMESH/input/tui_adaptation.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _tui_adaptation_page: - -********** -Adaptation -********** - -.. _tui_homard_adapt: - -HOMARD -====== - -.. literalinclude:: ../../../examples/test_uniform_refinement.py - :language: python - -:download:`Download this script <../../../examples/test_uniform_refinement.py>` - -.. literalinclude:: ../../../examples/test_homard_adapt.py - :language: python - -:download:`Download this script <../../../examples/test_homard_adapt.py>` - -.. _tui_mg_adapt: - -MG_Adapt -======== - -.. literalinclude:: ../../../examples/MGAdaptTests_without_session.py - :language: python - -:download:`Download this script <../../../examples/MGAdaptTests_without_session.py>` - - -**See Also** the GUI :ref:`adaptation_page`. diff --git a/doc/salome/gui/SMESH/input/tui_creating_meshes.rst b/doc/salome/gui/SMESH/input/tui_creating_meshes.rst deleted file mode 100644 index d4c1c8f9a..000000000 --- a/doc/salome/gui/SMESH/input/tui_creating_meshes.rst +++ /dev/null @@ -1,109 +0,0 @@ -.. _tui_creating_meshes_page: - -*************** -Creating Meshes -*************** - -.. contents:: `Table of contents` - - -First of all see :ref:`example_3d_mesh` which is an example of good python script style for Mesh module. - - -.. _construction_of_a_mesh: - -Construction of a mesh -====================== - -.. literalinclude:: ../../../examples/creating_meshes_ex01.py - :language: python - -:download:`Download this script <../../../examples/creating_meshes_ex01.py>` - -.. _tui_construction_submesh: - -Construction of a sub-mesh -========================== - -.. literalinclude:: ../../../examples/creating_meshes_ex02.py - :language: python - -:download:`Download this script <../../../examples/creating_meshes_ex02.py>` - -.. _change_priority_of_submeshes_in_mesh: - -Change priority of sub-meshes in mesh -===================================== - -.. literalinclude:: ../../../examples/creating_meshes_ex03.py - :language: python - -:download:`Download this script <../../../examples/creating_meshes_ex03.py>` - -.. _tui_editing_while_meshing: - -Intermediate edition while meshing -================================== - -.. literalinclude:: ../../../examples/a3DmeshOnModified2Dmesh.py - :language: python - -:download:`Download this script <../../../examples/a3DmeshOnModified2Dmesh.py>` - -.. _tui_editing_mesh: - -Editing a mesh (i.e. changing hypotheses) -========================================= - -.. literalinclude:: ../../../examples/creating_meshes_ex04.py - :language: python - -:download:`Download this script <../../../examples/creating_meshes_ex04.py>` - -.. _tui_export_mesh: - -Export of a Mesh -================ - -.. literalinclude:: ../../../examples/creating_meshes_ex05.py - :language: python - -:download:`Download this script <../../../examples/creating_meshes_ex05.py>` - -.. _how_to_mesh_a_cylinder_with_hexahedrons: - -How to mesh a cylinder with hexahedrons? -======================================== - -The next script creates a hexahedral mesh on a cylinder. A picture below the script -demonstrates the resulting mesh. - -.. literalinclude:: ../../../examples/creating_meshes_ex06.py - :language: python - -:download:`Download this script <../../../examples/creating_meshes_ex06.py>` - -.. image:: ../images/mesh_cylinder_hexa.png - :align: center - - -.. _tui_building_compound: - -Building a compound of meshes -============================= - -.. literalinclude:: ../../../examples/creating_meshes_ex07.py - :language: python - -:download:`Download this script <../../../examples/creating_meshes_ex07.py>` - -.. _tui_copy_mesh: - -Mesh Copying -============ - -.. literalinclude:: ../../../examples/creating_meshes_ex08.py - :language: python - -:download:`Download this script <../../../examples/creating_meshes_ex08.py>` - diff --git a/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst b/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst deleted file mode 100644 index fd676a358..000000000 --- a/doc/salome/gui/SMESH/input/tui_defining_hypotheses.rst +++ /dev/null @@ -1,330 +0,0 @@ -.. _tui_defining_hypotheses_page: - -********************************** -Defining Hypotheses and Algorithms -********************************** - -This page provides example codes of :ref:`defining algorithms ` -and hypotheses. - -* Wire discretisation 1D algorithm - - * :ref:`tui_1d_adaptive` hypothesis - * :ref:`Arithmetic Progression ` hypothesis - * :ref:`Geometric Progression ` hypothesis - * :ref:`Deflection and Number of Segments ` hypotheses - * :ref:`Start and End Length ` hypothesis - * :ref:`tui_average_length` hypothesis - * :ref:`tui_propagation` additional hypotheses - * :ref:`Fixed Points 1D ` hypothesis - - -* Triangle: Mefisto 2D algorithm - - * :ref:`tui_max_element_area` hypothesis - * :ref:`tui_length_from_edges` hypothesis - -* Quadrangle: Mapping 2D algorithm - - * :ref:`Quadrangle Parameters ` hypothesis - -* :ref:`Radial Quadrangle 1D-2D ` algorithm -* NETGEN 3D algorithm - - * :ref:`tui_max_element_volume` hypothesis - * :ref:`Viscous layers ` hypotheses - -* Hexahedron (i,j,k) 3D algorithm - - * :ref:`tui_block_renumber` - -* :ref:`tui_projection` -* :ref:`Extrusion 3D ` algorithm -* :ref:`Radial Prism ` algorithm -* :ref:`Body Fitting ` algorithm -* :ref:`Import 1D-2D Elements from Another Mesh ` algorithm -* :ref:`Use Faces to be Created Manually ` algorithm -* :ref:`Segments around Vertex ` algorithm - - - -Defining 1D Hypotheses -###################### - -.. _tui_1d_arithmetic: - -Arithmetic Progression and Geometric Progression -================================================ - -.. literalinclude:: ../../../examples/defining_hypotheses_ex01.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex01.py>` - -.. _tui_1d_adaptive: - -Adaptive -======== - -.. literalinclude:: ../../../examples/defining_hypotheses_adaptive1d.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_adaptive1d.py>` - - -.. _tui_deflection_1d: - -Deflection and Number of Segments -================================= - -.. literalinclude:: ../../../examples/defining_hypotheses_ex02.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex02.py>` - - -.. _tui_start_and_end_length: - -Start and End Length -==================== - -.. literalinclude:: ../../../examples/defining_hypotheses_ex03.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex03.py>` - - -.. _tui_average_length: - -Local Length -============ - -.. literalinclude:: ../../../examples/defining_hypotheses_ex04.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex04.py>` - -Defining 2D and 3D hypotheses -############################# - - -.. _tui_max_element_area: - -Maximum Element Area -==================== - -.. literalinclude:: ../../../examples/defining_hypotheses_ex05.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex05.py>` - - -.. _tui_max_element_volume: - -Maximum Element Volume -====================== - -.. literalinclude:: ../../../examples/defining_hypotheses_ex06.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex06.py>` - - -.. _tui_length_from_edges: - -Length from Edges -================= - -.. literalinclude:: ../../../examples/defining_hypotheses_ex07.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex07.py>` - -.. _tui_block_renumber: - -Renumber 3D hypothesis -====================== - -.. literalinclude:: ../../../examples/filters_ex39.py - :language: python - -:download:`Download this script <../../../examples/filters_ex39.py>` - -Defining Additional Hypotheses -############################## - -.. _tui_propagation: - -Propagation -=========== - -.. literalinclude:: ../../../examples/defining_hypotheses_ex08.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex08.py>` - - -.. _tui_defining_meshing_algos: - -Defining Meshing Algorithms -########################### - -.. literalinclude:: ../../../examples/defining_hypotheses_ex09.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex09.py>` - - -.. _tui_projection: - -Projection Algorithms -===================== - -.. literalinclude:: ../../../examples/defining_hypotheses_ex10.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex10.py>` - -Projection 1D2D -=============== - -.. literalinclude:: ../../../examples/defining_hypotheses_ex11.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex11.py>` - -.. _tui_fixed_points: - -1D Mesh with Fixed Points example -################################# - -.. literalinclude:: ../../../examples/defining_hypotheses_ex12.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex12.py>` - -.. _tui_radial_quadrangle: - -Radial Quadrangle 1D-2D example -############################### - -.. literalinclude:: ../../../examples/defining_hypotheses_ex13.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex13.py>` - -.. _tui_quadrangle_parameters: - -Quadrangle Parameters example 1 (meshing a face with 3 edges) -############################################################## - -.. literalinclude:: ../../../examples/defining_hypotheses_ex14.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex14.py>` - -Quadrangle Parameters example 2 (using different types) -####################################################### - -.. literalinclude:: ../../../examples/defining_hypotheses_ex15.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex15.py>` - -.. _tui_import: - -"Import 1D-2D Elements from Another Mesh" example -################################################# - -.. literalinclude:: ../../../examples/defining_hypotheses_ex16.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex16.py>` - -.. _tui_viscous_layers: - -Viscous layers construction -########################### - -.. literalinclude:: ../../../examples/defining_hypotheses_ex17.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_ex17.py>` - -.. _tui_radial_prism: - -Radial Prism example -#################### - -.. literalinclude:: ../../../examples/radial_prism_3d_algo.py - :language: python - -:download:`Download this script <../../../examples/radial_prism_3d_algo.py>` - -.. _tui_cartesian_algo: - -Usage of Body Fitting algorithm -############################### - -.. literalinclude:: ../../../examples/cartesian_algo.py - :language: python - -:download:`Download this script <../../../examples/cartesian_algo.py>` - -.. _tui_use_existing_faces: - -Usage of "Use Faces to be Created Manually" algorithm -##################################################### - -This sample demonstrates how to use **Use Faces to be Created Manually** algorithm, -which is actually just a stub allowing to use your own 2D algorithm -implemented in Python. - -.. literalinclude:: ../../../examples/use_existing_faces.py - :language: python - -:download:`Download this script <../../../examples/use_existing_faces.py>` - -Resulting mesh: - -.. image:: ../images/use_existing_face_sample_mesh.png - :align: center - - -.. _tui_prism_3d_algo: - -Usage of Extrusion 3D meshing algorithm -######################################## - -.. literalinclude:: ../../../examples/prism_3d_algo.py - :language: python - -:download:`Download this script <../../../examples/prism_3d_algo.py>` - -The result geometry and mesh is shown below - -.. image:: ../images/prism_tui_sample.png - :align: center - - -.. _tui_quad_ma_proj_algo: - -Usage of Medial Axis Projection algorithm -######################################### - -.. literalinclude:: ../../../examples/quad_medial_axis_algo.py - :language: python - -:download:`Download this script <../../../examples/quad_medial_axis_algo.py>` - - -.. _tui_segments_around_vertex: - -Usage of Segments around Vertex algorithm -######################################### - -.. literalinclude:: ../../../examples/defining_hypotheses_len_near_vertex.py - :language: python - -:download:`Download this script <../../../examples/defining_hypotheses_len_near_vertex.py>` - diff --git a/doc/salome/gui/SMESH/input/tui_filters.rst b/doc/salome/gui/SMESH/input/tui_filters.rst deleted file mode 100644 index 35ecd8c70..000000000 --- a/doc/salome/gui/SMESH/input/tui_filters.rst +++ /dev/null @@ -1,749 +0,0 @@ -.. _tui_filters_page: - -************* -Filters usage -************* - -Filters allow picking only the mesh elements satisfying to a -specific condition or a set of conditions. Filters can be used to create -or edit mesh groups, remove elements from the mesh, control -mesh quality by different parameters, etc. - -Several filtering criteria can be combined together by using logical -operators *AND* and *OR*. In addition, a filtering criterion can -be reverted using logical operator *NOT*. - -Mesh filters can use the functionality of mesh quality controls to filter -mesh nodes / elements by a specific characteristic (Area, Length, etc). - -This page provides a short description of the existing mesh filters, -describes required parameters and gives simple examples of usage in -Python scripts. - -**See also:** :ref:`tui_quality_controls_page` - -.. contents:: `Table of contents` - - -.. _filter_aspect_ratio: - -Aspect ratio -============ - -filters 2D mesh elements (faces) according to the aspect ratio value: - -* element type should be *SMESH.FACE* -* functor type should be *SMESH.FT_AspectRatio* -* threshold is floating point value (aspect ratio) - -.. literalinclude:: ../../../examples/filters_ex01.py - :language: python - -:download:`Download this script <../../../examples/filters_ex01.py>` - -**See also:** :ref:`tui_aspect_ratio` - -.. _filter_aspect_ratio_3d: - -Aspect ratio 3D -=============== - -filters 3D mesh elements (volumes) according to the aspect ratio value: - -* element type is *SMESH.VOLUME* -* functor type is *SMESH.FT_AspectRatio3D* -* threshold is floating point value (aspect ratio) - -.. literalinclude:: ../../../examples/filters_ex02.py - :language: python - -:download:`Download this script <../../../examples/filters_ex02.py>` - -**See also:** :ref:`tui_aspect_ratio_3d` - -.. _filter_warping_angle: - -Warping angle -============= - -filters 2D mesh elements (faces) according to the warping angle value: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_Warping* -* threshold is floating point value (warping angle) - -.. literalinclude:: ../../../examples/filters_ex03.py - :language: python - -:download:`Download this script <../../../examples/filters_ex03.py>` - -**See also:** :ref:`tui_warping` - -.. _filter_minimum_angle: - -Minimum angle -============= - -filters 2D mesh elements (faces) according to the minimum angle value: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_MinimumAngle* -* threshold is floating point value (minimum angle) - -.. literalinclude:: ../../../examples/filters_ex04.py - :language: python - -:download:`Download this script <../../../examples/filters_ex04.py>` - -**See also:** :ref:`tui_minimum_angle` - -.. _filter_taper: - -Taper -===== - -filters 2D mesh elements (faces) according to the taper value: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_Taper* -* threshold is floating point value (taper) - -.. literalinclude:: ../../../examples/filters_ex05.py - :language: python - -:download:`Download this script <../../../examples/filters_ex05.py>` - -**See also:** :ref:`tui_taper` - -.. _filter_skew: - -Skew -==== - -filters 2D mesh elements (faces) according to the skew value: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_Skew* -* threshold is floating point value (skew) - -.. literalinclude:: ../../../examples/filters_ex06.py - :language: python - -:download:`Download this script <../../../examples/filters_ex06.py>` - -**See also:** :ref:`tui_skew` - -.. _filter_area: - -Area -==== - -filters 2D mesh elements (faces) according to the area value: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_Area* -* threshold is floating point value (area) - -.. literalinclude:: ../../../examples/filters_ex07.py - :language: python - -:download:`Download this script <../../../examples/filters_ex07.py>` - -**See also:** :ref:`tui_area` - -.. _filter_volume: - -Volume -====== - -filters 3D mesh elements (volumes) according to the volume value: - -* element type is *SMESH.VOLUME* -* functor type is *SMESH.FT_Volume3D* -* threshold is floating point value (volume) - -.. literalinclude:: ../../../examples/filters_ex08.py - :language: python - -:download:`Download this script <../../../examples/filters_ex08.py>` - -**See also:** :ref:`tui_volume` - -.. _filter_free_borders: - -Free borders -============ - -filters 1D mesh elements (edges) which represent free borders of a mesh: - -* element type is *SMESH.EDGE* -* functor type is *SMESH.FT_FreeBorders* -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex09.py - :language: python - -:download:`Download this script <../../../examples/filters_ex09.py>` - -**See also:** :ref:`tui_free_borders` - -.. _filter_free_edges: - -Free edges -========== - -filters 2D mesh elements (faces) having edges (i.e. links between -nodes, not mesh segments) belonging to one face of mesh only: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_FreeEdges* -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex10.py - :language: python - -:download:`Download this script <../../../examples/filters_ex10.py>` - -**See also:** :ref:`tui_free_edges` - -.. _filter_free_nodes: - -Free nodes -========== - -filters free nodes: - -* element type is *SMESH.NODE* -* functor type is *SMESH.FT_FreeNodes* -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex11.py - :language: python - -:download:`Download this script <../../../examples/filters_ex11.py>` - -**See also:** :ref:`tui_free_nodes` - -.. _filter_free_faces: - -Free faces -========== - -filters free faces: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_FreeFaces* -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex12.py - :language: python - -:download:`Download this script <../../../examples/filters_ex12.py>` - -**See also:** :ref:`tui_free_faces` - -.. _filter_bare_border_faces: - -Bare border faces -================= - -filters faces with bare borders: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_BareBorderFace* -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex13.py - :language: python - -:download:`Download this script <../../../examples/filters_ex13.py>` - -**See also:** :ref:`tui_bare_border_faces` - -.. _filter_coplanar_faces: - -Coplanar faces -============== - -filters coplanar faces: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_CoplanarFaces* -* threshold value is the face ID -* tolerance is in degrees - -.. literalinclude:: ../../../examples/filters_ex14.py - :language: python - -:download:`Download this script <../../../examples/filters_ex14.py>` - -.. _filter_over_constrained_faces: - -Over-constrained faces -====================== - -filters over-constrained faces: - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_OverConstrainedFace* -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex15.py - :language: python - -:download:`Download this script <../../../examples/filters_ex15.py>` - -**See also:** :ref:`tui_over_constrained_faces` - -.. _filter_double_elements: - -Double edges, Double faces, Double volumes -########################################## - -filters mesh elements basing on the same set of nodes: - -* element type is either *SMESH.EDGE*, *SMESH.FACE* or *SMESH.VOLUME* -* functor type is either *SMESH.FT_EqualEdges*, *SMESH.FT_EqualFaces* or *SMESH.FT_EqualVolumes*, -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex16.py - :language: python - -:download:`Download this script <../../../examples/filters_ex16.py>` - -.. _tui_double_nodes_control: - -Double nodes -============ - -filters mesh nodes which are coincident with other nodes (within a given tolerance): - -* element type is *SMESH.NODE* -* functor type is *SMESH.FT_EqualNodes* -* threshold value is not required -* default tolerance is 1.0e-7 - -.. literalinclude:: ../../../examples/filters_ex17.py - :language: python - -:download:`Download this script <../../../examples/filters_ex17.py>` - -.. _filter_node_nb_conn: - -Node connectivity number -======================== - -filters nodes according to a number of elements of highest dimension connected to a node: - -* element type should be *SMESH.NODE* -* functor type should be *SMESH.FT_NodeConnectivityNumber* -* threshold is an integer value (number of elements) - -.. literalinclude:: ../../../examples/filters_node_nb_conn.py - :language: python - -:download:`Download this script <../../../examples/filters_node_nb_conn.py>` - -.. _filter_borders_multiconnection: - -Borders at multi-connection -=========================== - -filters 1D mesh elements (segments) according to the specified number of -connections (faces and volumes on whose border the segment lies): - -* element type is *SMESH.EDGE* -* functor type is *SMESH.FT_MultiConnection* -* threshold is integer value (number of connections) - -.. literalinclude:: ../../../examples/filters_ex18.py - :language: python - -:download:`Download this script <../../../examples/filters_ex18.py>` - -**See also:** :ref:`tui_borders_at_multiconnection` - -.. _filter_borders_multiconnection_2d: - -Borders at multi-connection 2D -============================== - -filters 2D mesh elements (faces) with the specified maximal number of -faces connected to a border (link between nodes, not mesh segment): - -* element type is *SMESH.FACE* -* functor type is *SMESH.FT_MultiConnection2D* -* threshold is integer value (number of connections) - -.. literalinclude:: ../../../examples/filters_ex19.py - :language: python - -:download:`Download this script <../../../examples/filters_ex19.py>` - -**See also:** :ref:`tui_borders_at_multiconnection_2d` - -.. _filter_length: - -Length -====== - -filters 1D mesh elements (edges) according to the edge length value: - -* element type should be *SMESH.EDGE* -* functor type should be *SMESH.FT_Length* -* threshold is floating point value (length) - -.. literalinclude:: ../../../examples/filters_ex20.py - :language: python - -:download:`Download this script <../../../examples/filters_ex20.py>` - -**See also:** :ref:`tui_length_1d` - -.. _filter_length_2d: - -Length 2D -========= - -filters 2D mesh elements (faces) according to the maximum length of its -edges (links between nodes): - -* element type should be *SMESH.FACE* -* functor type should be *SMESH.FT_Length2D* -* threshold is floating point value (edge length) - -.. literalinclude:: ../../../examples/filters_ex21.py - :language: python - -:download:`Download this script <../../../examples/filters_ex21.py>` - -**See also:** :ref:`tui_length_2d` - -.. _filter_max_element_length_2d: - -Element Diameter 2D -=================== - -filters 2D mesh elements (faces) according to the maximum length -of its edges and diagonals: - -* element type should be *SMESH.FACE* -* functor type should be *SMESH.FT_MaxElementLength2D* -* threshold is floating point value (length) - -.. literalinclude:: ../../../examples/filters_ex22.py - :language: python - -:download:`Download this script <../../../examples/filters_ex22.py>` - -**See also:** :ref:`tui_max_element_length_2d` - -.. _filter_max_element_length_3d: - -Element Diameter 3D -=================== - -filters 3D mesh elements (volumes) according to the maximum length -of its edges and diagonals: - -* element type should be *SMESH.VOLUME* -* functor type should be *SMESH.FT_MaxElementLength3D* -* threshold is floating point value (edge/diagonal length) - -.. literalinclude:: ../../../examples/filters_ex23.py - :language: python - -:download:`Download this script <../../../examples/filters_ex23.py>` - -**See also:** :ref:`tui_max_element_length_3d` - -.. _filter_bare_border_volumes: - -Bare border volumes -=================== - -filters 3D mesh elements with bare borders, i.e. having a facet not -shared with other volumes and without a face on it: - -* element type is *SMESH.VOLUME* -* functor type is *SMESH.FT_BareBorderVolume* -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex24.py - :language: python - -:download:`Download this script <../../../examples/filters_ex24.py>` - -**See also:** :ref:`tui_bare_border_volumes` - -.. _filter_over_constrained_volumes: - -Over-constrained volumes -======================== - -filters over-constrained volumes, whose all nodes are on the mesh boundary: - -* element type is *SMESH.VOLUME* -* functor type is *SMESH.FT_OverConstrainedVolume* -* threshold value is not required - -.. literalinclude:: ../../../examples/filters_ex25.py - :language: python - -:download:`Download this script <../../../examples/filters_ex25.py>` - -**See also:** :ref:`tui_over_constrained_faces` - -.. _filter_belong_to_group: - -Belong to Mesh Group -==================== - -filters mesh entities (nodes or elements) included in a mesh group -defined by threshold value: - -* element type can be any, from *SMESH.NODE* to *SMESH.BALL* -* functor type should be *SMESH.FT_BelongToMeshGroup* -* threshold is mesh group object - -.. literalinclude:: ../../../examples/filters_belong2group.py - :language: python - -:download:`Download this script <../../../examples/filters_belong2group.py>` - -.. _filter_belong_to_geom: - -Belong to Geom -============== - -filters mesh entities (nodes or elements) which all nodes lie on the -shape defined by threshold value: - -* element type can be any, from *SMESH.NODE* to *SMESH.BALL* -* functor type should be *SMESH.FT_BelongToGeom* -* threshold is geometrical object -* tolerance is a distance between a node and the geometrical object; it is used if an node is not associated to any geometry. - -.. literalinclude:: ../../../examples/filters_ex26.py - :language: python - -:download:`Download this script <../../../examples/filters_ex26.py>` - -.. _filter_lying_on_geom: - -Lying on Geom -============= - -filters mesh entities (nodes or elements) at least one node of which lies on the -shape defined by threshold value: - -* element type can be any, from *SMESH.NODE* to *SMESH.BALL* -* functor type should be *SMESH.FT_LyingOnGeom* -* threshold is geometrical object -* tolerance is a distance between a node and the geometrical object; - -it is used if an node is not associated to any geometry. - -.. literalinclude:: ../../../examples/filters_ex27.py - :language: python - -:download:`Download this script <../../../examples/filters_ex27.py>` - -.. _filter_belong_to_plane: - -Belong to Plane -=============== - -filters mesh entities (nodes or elements) which all nodes belong to the -plane defined by threshold value with the given tolerance: - -* element type can be any except *SMESH.VOLUME* -* functor type should be *SMESH.FT_BelongToPlane* -* threshold is geometrical object (plane) -* default tolerance is 1.0e-7 - -.. literalinclude:: ../../../examples/filters_ex28.py - :language: python - -:download:`Download this script <../../../examples/filters_ex28.py>` - -.. _filter_belong_to_cylinder: - -Belong to Cylinder -================== - -filters mesh entities (nodes or elements) which all nodes belong to the -cylindrical face defined by threshold value with the given tolerance: - -* element type can be any except *SMESH.VOLUME* -* functor type should be *SMESH.FT_BelongToCylinder* -* threshold is geometrical object (cylindrical face) -* default tolerance is 1.0e-7 - -.. literalinclude:: ../../../examples/filters_ex29.py - :language: python - -:download:`Download this script <../../../examples/filters_ex29.py>` - -.. _filter_belong_to_surface: - -Belong to Surface -================= - -filters mesh entities (nodes or elements) which all nodes belong to the -arbitrary surface defined by threshold value with the given tolerance: - -* element type can be any except *SMESH.VOLUME* -* functor type should be *SMESH.FT_BelongToGenSurface* -* threshold is geometrical object (arbitrary surface) -* default tolerance is 1.0e-7 - -.. literalinclude:: ../../../examples/filters_ex30.py - :language: python - -:download:`Download this script <../../../examples/filters_ex30.py>` - -.. _filter_range_of_ids: - -Range of IDs -============ - -filters mesh entities elements (nodes or elements) according to the -specified identifiers range: - -* element type can be any, from *SMESH.NODE* to *SMESH.BALL* -* functor type is *SMESH.FT_RangeOfIds* -* threshold is string listing required IDs and/or ranges of IDs, e.g."1,2,3,50-60,63,67,70-78" - -.. literalinclude:: ../../../examples/filters_ex31.py - :language: python - -:download:`Download this script <../../../examples/filters_ex31.py>` - -.. _filter_bad_oriented_volume: - -Badly oriented volume -===================== - -filters 3D mesh elements (volumes), which are incorrectly oriented from -the point of view of MED convention. - -* element type should be *SMESH.VOLUME* -* functor type is *SMESH.FT_BadOrientedVolume* -* threshold is not required - -.. literalinclude:: ../../../examples/filters_ex32.py - :language: python - -:download:`Download this script <../../../examples/filters_ex32.py>` - -.. _filter_linear_or_quadratic: - -Linear / quadratic -================== - -filters linear / quadratic mesh elements: - -* element type should be either *SMESH.EDGE*, *SMESH.FACE* or *SMESH.VOLUME* -* functor type is *SMESH.FT_LinearOrQuadratic* -* threshold is not required -* if unary operator is set to SMESH.FT_LogicalNOT, the quadratic elements are selected, otherwise (by default) linear elements are selected - -.. literalinclude:: ../../../examples/filters_ex33.py - :language: python - -:download:`Download this script <../../../examples/filters_ex33.py>` - -.. _filter_group_color: - -Group color -=========== - -filters mesh entities, belonging to the group with the color defined by the threshold value. - -* element type can be any, from *SMESH.NODE* to *SMESH.BALL* -* functor type is *SMESH.FT_GroupColor* -* threshold should be of SALOMEDS.Color type - -.. literalinclude:: ../../../examples/filters_ex34.py - :language: python - -:download:`Download this script <../../../examples/filters_ex34.py>` - -.. _filter_geom_type: - -Geometry type -============= - -filters mesh elements by the geometric type defined with the threshold -value. The list of available geometric types depends on the element -entity type. - -* element type can be any, e.g.: *SMESH.EDGE*, *SMESH.FACE*, *SMESH.VOLUME*, etc. -* functor type should be *SMESH.FT_ElemGeomType* -* threshold is either of smesh.GeometryType values. Type *SMESH.GeometryType._items* in the Python Console to see all geometric types. - -.. literalinclude:: ../../../examples/filters_ex35.py - :language: python - -:download:`Download this script <../../../examples/filters_ex35.py>` - -.. _filter_entity_type: - -Entity type -=========== - -filters mesh elements by the geometric type and number of nodes. - -* element type can be any, e.g.: *SMESH.EDGE*, *SMESH.FACE*, *SMESH.VOLUME*, etc. -* functor type should be *SMESH.FT_EntityType* -* threshold is either of SMESH.EntityType values. Type *SMESH.EntityType._items* in the Python Console to see all entity types. - -.. literalinclude:: ../../../examples/filters_ex37.py - :language: python - -:download:`Download this script <../../../examples/filters_ex37.py>` - -.. _filter_ball_diam: - -Ball diameter -============= - -filters ball elements by diameter. - -* element type should be *SMESH.BALL* -* functor type should be *SMESH.FT_BallDiameter* -* threshold is floating point value (ball diameter) - -.. literalinclude:: ../../../examples/filters_ex38.py - :language: python - -:download:`Download this script <../../../examples/filters_ex38.py>` - -.. _filter_domain: - -Elements of a domain -==================== - -filters elements of a specified domain. - -* element type can be any, e.g.: *SMESH.EDGE*, *SMESH.FACE*, *SMESH.VOLUME*, etc. -* functor type should be *SMESH.FT_ConnectedElements* -* threshold is either (1) node ID or (2) geometrical vertex or (3) 3 coordinates of a point. - -.. literalinclude:: ../../../examples/filters_ex39.py - :language: python - -:download:`Download this script <../../../examples/filters_ex39.py>` - -.. _combining_filters: - -How to combine several criteria into a filter? -============================================== - -Several criteria can be combined into a filter. - -.. literalinclude:: ../../../examples/filters_ex36.py - :language: python - -:download:`Download this script <../../../examples/filters_ex36.py>` diff --git a/doc/salome/gui/SMESH/input/tui_grouping_elements.rst b/doc/salome/gui/SMESH/input/tui_grouping_elements.rst deleted file mode 100644 index 01bcf9b31..000000000 --- a/doc/salome/gui/SMESH/input/tui_grouping_elements.rst +++ /dev/null @@ -1,121 +0,0 @@ -***************** -Grouping Elements -***************** - -.. contents:: `Table of contents` - - -.. _tui_create_standalone_group: - -Create a Standalone Group -========================= - -.. literalinclude:: ../../../examples/grouping_elements_ex01.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex01.py>` - -.. image:: ../images/create_group.png - :align: center - - -.. _tui_create_group_on_geometry: - -Create a Group on Geometry -========================== - -.. literalinclude:: ../../../examples/grouping_elements_ex02.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex02.py>` - -.. _tui_create_group_on_filter: - -Create a Group on Filter -======================== - -.. literalinclude:: ../../../examples/grouping_elements_ex03.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex03.py>` - -.. _tui_edit_group: - -Edit a Group -============ - -.. literalinclude:: ../../../examples/grouping_elements_ex04.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex04.py>` - -.. image:: ../images/editing_groups1.png - :align: center - - -.. _tui_union_of_groups: - -Union of groups -=============== - -.. literalinclude:: ../../../examples/grouping_elements_ex05.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex05.py>` - -.. image:: ../images/union_groups1.png - :align: center - - -.. _tui_intersection_of_groups: - -Intersection of groups -====================== - -.. literalinclude:: ../../../examples/grouping_elements_ex06.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex06.py>` - -.. image:: ../images/intersect_groups1.png - :align: center - - -.. _tui_cut_of_groups: - -Cut of groups -============= - -.. literalinclude:: ../../../examples/grouping_elements_ex07.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex07.py>` - -.. image:: ../images/cut_groups1.png - :align: center - - -.. _tui_create_dim_group: - -Creating groups of entities basing on nodes of other groups -=========================================================== - -.. literalinclude:: ../../../examples/grouping_elements_ex08.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex08.py>` - -.. image:: ../images/dimgroup_tui1.png - :align: center - - -.. _tui_groups_by_sharp_edges: - -Creating face groups separated by sharp edges -============================================= - -.. literalinclude:: ../../../examples/grouping_elements_ex09.py - :language: python - -:download:`Download this script <../../../examples/grouping_elements_ex09.py>` - diff --git a/doc/salome/gui/SMESH/input/tui_measurements.rst b/doc/salome/gui/SMESH/input/tui_measurements.rst deleted file mode 100644 index a4e056531..000000000 --- a/doc/salome/gui/SMESH/input/tui_measurements.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. _tui_measurements_page: - -************ -Measurements -************ - -.. _tui_min_distance: - -Minimum Distance -================ - -.. literalinclude:: ../../../examples/measurements_ex01.py - :language: python - -:download:`Download this script <../../../examples/measurements_ex01.py>` - -.. _tui_bounding_box: - -Bounding Box -============ - -.. literalinclude:: ../../../examples/measurements_ex02.py - :language: python - -:download:`Download this script <../../../examples/measurements_ex02.py>` - -.. _tui_basic_properties: - -Basic Properties -================ - -.. literalinclude:: ../../../examples/measurements_ex03.py - :language: python - -:download:`Download this script <../../../examples/measurements_ex03.py>` - -Angle -===== - -.. literalinclude:: ../../../examples/measurements_ex04.py - :language: python - -:download:`Download this script <../../../examples/measurements_ex04.py>` diff --git a/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst b/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst deleted file mode 100644 index 72e541c4d..000000000 --- a/doc/salome/gui/SMESH/input/tui_modifying_meshes.rst +++ /dev/null @@ -1,338 +0,0 @@ -.. _tui_modifying_meshes_page: - -**************** -Modifying Meshes -**************** - -.. contents:: `Table of contents` - - -.. _tui_adding_nodes_and_elements: - -Adding Nodes and Elements -========================= - -.. _tui_add_node: - -Add Node -******** - -.. literalinclude:: ../../../examples/modifying_meshes_ex01.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex01.py>` - -.. _tui_add_0DElement: - -Add 0D Element -************** - -.. literalinclude:: ../../../examples/modifying_meshes_ex02.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex02.py>` - -.. _tui_add_0DElement_on_all_nodes: - -Add 0D Element on Element Nodes -******************************* - -.. literalinclude:: ../../../examples/modifying_meshes_ex03.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex03.py>` - -.. _tui_add_edge: - -Add Edge -******** - -.. literalinclude:: ../../../examples/modifying_meshes_ex04.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex04.py>` - -.. _tui_add_triangle: - -Add Triangle -************ - -.. literalinclude:: ../../../examples/modifying_meshes_ex05.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex05.py>` - -.. _tui_add_quadrangle: - -Add Quadrangle -************** - -.. literalinclude:: ../../../examples/modifying_meshes_ex06.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex06.py>` - -.. _tui_add_tetrahedron: - -Add Tetrahedron -*************** - -.. literalinclude:: ../../../examples/modifying_meshes_ex07.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex07.py>` - -.. _tui_add_hexahedron: - -Add Hexahedron -************** - -.. literalinclude:: ../../../examples/modifying_meshes_ex08.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex08.py>` - -.. _tui_add_polygon: - -Add Polygon -*********** - -.. literalinclude:: ../../../examples/modifying_meshes_ex09.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex09.py>` - -.. _tui_add_polyhedron: - -Add Polyhedron -************** - -.. literalinclude:: ../../../examples/modifying_meshes_ex10.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex10.py>` - -.. _tui_removing_nodes_and_elements: - -Removing Nodes and Elements -=========================== - -.. _tui_removing_nodes: - -Removing Nodes -************** - -.. literalinclude:: ../../../examples/modifying_meshes_ex11.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex11.py>` - -.. _tui_removing_elements: - -Removing Elements -***************** - -.. literalinclude:: ../../../examples/modifying_meshes_ex12.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex12.py>` - -.. _tui_removing_orphan_nodes: - -Removing Orphan Nodes -********************* - -.. literalinclude:: ../../../examples/modifying_meshes_ex13.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex13.py>` - -.. _tui_moving_nodes: - -Moving Nodes -============ - -.. literalinclude:: ../../../examples/modifying_meshes_ex15.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex15.py>` - -.. _tui_diagonal_inversion: - -Diagonal Inversion -================== - -.. literalinclude:: ../../../examples/modifying_meshes_ex16.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex16.py>` - -.. _tui_uniting_two_triangles: - -Uniting two Triangles -===================== - -.. literalinclude:: ../../../examples/modifying_meshes_ex17.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex17.py>` - -.. _tui_uniting_set_of_triangles: - -Uniting a Set of Triangles -========================== - -.. literalinclude:: ../../../examples/modifying_meshes_ex18.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex18.py>` - -.. _tui_orientation: - -Orientation -=========== - -.. literalinclude:: ../../../examples/modifying_meshes_ex19.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex19.py>` - -.. _tui_cutting_quadrangles: - -Cutting Quadrangles -=================== - -.. literalinclude:: ../../../examples/modifying_meshes_ex20.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex20.py>` - -.. _tui_cutting_triangles: - -Cutting Triangles -================= - -.. literalinclude:: ../../../examples/modifying_meshes_cut_triangles.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_cut_triangles.py>` - -.. _modifying_meshes_split_vol: - -Split Volumes into Tetrahedra -============================= - -.. literalinclude:: ../../../examples/modifying_meshes_split_vol.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_split_vol.py>` - -.. _tui_smoothing: - -Smoothing -========= - -.. literalinclude:: ../../../examples/modifying_meshes_ex21.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex21.py>` - -.. _tui_extrusion: - -Extrusion -========= - -.. literalinclude:: ../../../examples/modifying_meshes_ex22.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex22.py>` - -.. _tui_extrusion_along_path: - -Extrusion along a Path -====================== - -.. literalinclude:: ../../../examples/modifying_meshes_ex23.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex23.py>` - -.. _tui_revolution: - -Revolution -========== - -.. literalinclude:: ../../../examples/modifying_meshes_ex24.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex24.py>` - -.. _tui_pattern_mapping: - -Pattern Mapping -=============== - -.. literalinclude:: ../../../examples/modifying_meshes_ex25.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex25.py>` - -.. _tui_quadratic: - -Convert mesh to/from quadratic -============================== - -.. literalinclude:: ../../../examples/modifying_meshes_ex26.py - :language: python - -:download:`Download this script <../../../examples/modifying_meshes_ex26.py>` - -.. _tui_split_biquad: - -Split bi-quadratic into linear -============================== - -.. literalinclude:: ../../../examples/split_biquad.py - :language: python - -:download:`Download this script <../../../examples/split_biquad.py>` - -.. _tui_double_nodes_on_group_boundaries: - -Double nodes on groups boundaries -================================= - -Double nodes on shared faces between groups of volumes and create flat elements on demand. - -The list of groups must contain at least two groups. The groups have to be disjoint: no common element into two different groups. - -The nodes of the internal faces at the boundaries of the groups are doubled. Optionally, the internal faces are replaced by flat elements. - -Triangles are transformed into prisms, and quadrangles into hexahedrons. - -The flat elements are stored in groups of volumes. - -These groups are named according to the position of the group in the list: -the group j_n_p is the group of the flat elements that are built between the group \#n and the group \#p in the list. -If there is no shared faces between the group \#n and the group \#p in the list, the group j_n_p is not created. -All the flat elements are gathered into the group named "joints3D" (or "joints2D" in 2D situation). -The flat element of the multiple junctions between the simple junction are stored in a group named "jointsMultiples". - -This example represents an iron cable (a thin cylinder) in a concrete block (a big cylinder). -The big cylinder is defined by two geometric volumes. - -.. literalinclude:: ../../../examples/generate_flat_elements.py - :language: python - -:download:`Download this script <../../../examples/generate_flat_elements.py>` - -Here, the 4 groups of volumes [Solid_1_1, Solid_2_1, Solid_3_1, Solid_4_1] constitute a partition of the mesh. -The flat elements on group boundaries and on faces are built with the -2 last lines of the code above. - -If the last argument (Boolean) in DoubleNodesOnGroupBoundaries is set to 1, -the flat elements are built, otherwise, there is only a duplication of the nodes. - -To observe flat element groups, save the resulting mesh on a MED file and reload it. - - diff --git a/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst b/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst deleted file mode 100644 index e05865b47..000000000 --- a/doc/salome/gui/SMESH/input/tui_notebook_smesh.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _tui_notebook_smesh_page: - - -********************* -Using SALOME NoteBook -********************* - -.. _tui_notebook_smesh: - -Notebook Smesh -============== - -.. literalinclude:: ../../../examples/notebook_smesh.py - :language: python - -:download:`Download this script <../../../examples/notebook_smesh.py>` diff --git a/doc/salome/gui/SMESH/input/tui_quality_controls.rst b/doc/salome/gui/SMESH/input/tui_quality_controls.rst deleted file mode 100644 index 566d69bac..000000000 --- a/doc/salome/gui/SMESH/input/tui_quality_controls.rst +++ /dev/null @@ -1,231 +0,0 @@ -.. _tui_quality_controls_page: - -**************** -Quality Controls -**************** - -.. contents:: `Table of contents` - - -.. _tui_free_borders: - -Free Borders -============ - -.. literalinclude:: ../../../examples/quality_controls_ex01.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex01.py>` - - -.. _tui_borders_at_multiconnection: - -Borders at Multiconnection -========================== - -.. literalinclude:: ../../../examples/quality_controls_ex02.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex02.py>` - - -.. _tui_length_1d: - -Length 1D -========= - -.. literalinclude:: ../../../examples/quality_controls_ex03.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex03.py>` - -.. _tui_free_edges: - -Free Edges -========== - -.. literalinclude:: ../../../examples/quality_controls_ex04.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex04.py>` - -.. _tui_free_nodes: - -Free Nodes -========== - -.. literalinclude:: ../../../examples/quality_controls_ex05.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex05.py>` - -.. _tui_free_faces: - -Free Faces -========== - -.. literalinclude:: ../../../examples/quality_controls_ex06.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex06.py>` - -.. _tui_bare_border_faces: - -Bare border faces -================= - -.. literalinclude:: ../../../examples/quality_controls_ex07.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex07.py>` - -.. _tui_bare_border_volumes: - -Bare border volumes -=================== - -.. literalinclude:: ../../../examples/quality_controls_ex08.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex08.py>` - -.. _tui_over_constrained_faces: - -Over-constrained faces -====================== - -.. literalinclude:: ../../../examples/quality_controls_ex09.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex09.py>` - -.. _tui_over_constrained_volumes: - -Over-constrained volumes -======================== - -.. literalinclude:: ../../../examples/quality_controls_ex10.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex10.py>` - -.. _tui_length_2d: - -Length 2D -========= - -.. literalinclude:: ../../../examples/quality_controls_ex11.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex11.py>` - - -.. _tui_borders_at_multiconnection_2d: - -Borders at Multiconnection 2D -============================= - -.. literalinclude:: ../../../examples/quality_controls_ex12.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex12.py>` - -.. _tui_area: - -Area -==== - -.. literalinclude:: ../../../examples/quality_controls_ex13.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex13.py>` - -.. _tui_taper: - -Taper -===== - -.. literalinclude:: ../../../examples/quality_controls_ex14.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex14.py>` - -.. _tui_aspect_ratio: - -Aspect Ratio -============ - -.. literalinclude:: ../../../examples/quality_controls_ex15.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex15.py>` - -.. _tui_minimum_angle: - -Minimum Angle -============= - -.. literalinclude:: ../../../examples/quality_controls_ex16.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex16.py>` - -.. _tui_warping: - -Warping -======= - -.. literalinclude:: ../../../examples/quality_controls_ex17.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex17.py>` - -.. _tui_skew: - -Skew -==== - -.. literalinclude:: ../../../examples/quality_controls_ex18.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex18.py>` - -.. _tui_max_element_length_2d: - -Element Diameter 2D -=================== - -.. literalinclude:: ../../../examples/quality_controls_ex19.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex19.py>` - -.. _tui_aspect_ratio_3d: - -Aspect Ratio 3D -=============== - -.. literalinclude:: ../../../examples/quality_controls_ex20.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex20.py>` - -.. _tui_volume: - -Volume -====== - -.. literalinclude:: ../../../examples/quality_controls_ex21.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex21.py>` - -.. _tui_max_element_length_3d: - -Element Diameter 3D -=================== - -.. literalinclude:: ../../../examples/quality_controls_ex22.py - :language: python - -:download:`Download this script <../../../examples/quality_controls_ex22.py>` diff --git a/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst b/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst deleted file mode 100644 index 23b755f80..000000000 --- a/doc/salome/gui/SMESH/input/tui_transforming_meshes.rst +++ /dev/null @@ -1,138 +0,0 @@ -.. _tui_transforming_meshes_page: - -******************* -Transforming Meshes -******************* - -.. contents:: `Table of contents` - - -.. _tui_translation: - -Translation -=========== - -.. literalinclude:: ../../../examples/transforming_meshes_ex01.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex01.py>` - -.. _tui_rotation: - -Rotation -======== - -.. literalinclude:: ../../../examples/transforming_meshes_ex02.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex02.py>` - -.. _tui_scale: - -Scale -===== - -.. literalinclude:: ../../../examples/transforming_meshes_ex03.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex03.py>` - -.. _tui_symmetry: - -Symmetry -======== - -.. literalinclude:: ../../../examples/transforming_meshes_ex04.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex04.py>` - -.. _tui_merging_nodes: - -Merging Nodes -============= - -.. literalinclude:: ../../../examples/transforming_meshes_ex05.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex05.py>` - -.. _tui_merging_elements: - -Merging Elements -================ - -.. literalinclude:: ../../../examples/transforming_meshes_ex06.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex06.py>` - -.. _tui_sew_meshes_border_to_side: - -Sew Meshes Border to Side -========================= - -.. literalinclude:: ../../../examples/transforming_meshes_ex07.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex07.py>` - -.. _tui_sew_conform_free_borders: - -Sew Conform Free Borders -======================== - -.. literalinclude:: ../../../examples/transforming_meshes_ex08.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex08.py>` - -.. _tui_sew_free_borders: - -Sew Free Borders -================ - -.. literalinclude:: ../../../examples/transforming_meshes_ex09.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex09.py>` - -.. _tui_sew_side_elements: - -Sew Side Elements -================= - -.. literalinclude:: ../../../examples/transforming_meshes_ex10.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex10.py>` - -.. _tui_duplicate_nodes: - -Duplicate nodes or/and elements -=============================== - -.. literalinclude:: ../../../examples/transforming_meshes_ex11.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex11.py>` - -.. _tui_make_2dmesh_from_3d: - -Create boundary elements -======================== - -.. literalinclude:: ../../../examples/transforming_meshes_ex12.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex12.py>` - -.. _tui_reorient_faces: - -Reorient faces -============== - -.. literalinclude:: ../../../examples/transforming_meshes_ex13.py - :language: python - -:download:`Download this script <../../../examples/transforming_meshes_ex13.py>` diff --git a/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst b/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst deleted file mode 100644 index d1320ec87..000000000 --- a/doc/salome/gui/SMESH/input/tui_viewing_meshes.rst +++ /dev/null @@ -1,27 +0,0 @@ - -.. _tui_viewing_meshes_page: - -************** -Viewing Meshes -************** - -.. _tui_viewing_mesh_infos: - -Viewing Mesh Infos -################## - -.. literalinclude:: ../../../examples/viewing_meshes_ex01.py - :language: python - -:download:`Download this script <../../../examples/viewing_meshes_ex01.py>` - -.. _tui_find_element_by_point: - - -Find Element by Point -##################### - -.. literalinclude:: ../../../examples/viewing_meshes_ex02.py - :language: python - -:download:`Download this script <../../../examples/viewing_meshes_ex02.py>` diff --git a/doc/salome/tui/CMakeLists.txt b/doc/tui/CMakeLists.txt similarity index 100% rename from doc/salome/tui/CMakeLists.txt rename to doc/tui/CMakeLists.txt diff --git a/doc/salome/tui/doxyfile.in b/doc/tui/doxyfile.in similarity index 100% rename from doc/salome/tui/doxyfile.in rename to doc/tui/doxyfile.in diff --git a/doc/salome/tui/images/application.gif b/doc/tui/images/application.gif similarity index 100% rename from doc/salome/tui/images/application.gif rename to doc/tui/images/application.gif diff --git a/doc/salome/tui/images/head.png b/doc/tui/images/head.png similarity index 100% rename from doc/salome/tui/images/head.png rename to doc/tui/images/head.png diff --git a/doc/salome/tui/images/logocorp.gif b/doc/tui/images/logocorp.gif similarity index 100% rename from doc/salome/tui/images/logocorp.gif rename to doc/tui/images/logocorp.gif diff --git a/doc/salome/tui/images/smeshscreen.png b/doc/tui/images/smeshscreen.png similarity index 100% rename from doc/salome/tui/images/smeshscreen.png rename to doc/tui/images/smeshscreen.png diff --git a/doc/salome/tui/input/index.doc b/doc/tui/input/index.doc similarity index 100% rename from doc/salome/tui/input/index.doc rename to doc/tui/input/index.doc diff --git a/doc/salome/tui/static/footer.html b/doc/tui/static/footer.html similarity index 100% rename from doc/salome/tui/static/footer.html rename to doc/tui/static/footer.html diff --git a/doc/salome/tui/static/header.html.in b/doc/tui/static/header.html.in similarity index 100% rename from doc/salome/tui/static/header.html.in rename to doc/tui/static/header.html.in diff --git a/doc/salome/tui/static/salome_extra.css b/doc/tui/static/salome_extra.css similarity index 100% rename from doc/salome/tui/static/salome_extra.css rename to doc/tui/static/salome_extra.css diff --git a/resources/SalomeApp.xml.in b/resources/SalomeApp.xml.in index a6190a675..6c359bd51 100644 --- a/resources/SalomeApp.xml.in +++ b/resources/SalomeApp.xml.in @@ -134,4 +134,7 @@
+
+ +
diff --git a/src/SMESH_SWIG/CMakeLists.txt b/src/SMESH_SWIG/CMakeLists.txt index d29bd3cbd..e39db09f9 100644 --- a/src/SMESH_SWIG/CMakeLists.txt +++ b/src/SMESH_SWIG/CMakeLists.txt @@ -32,79 +32,11 @@ include_directories( ) # scripts / static -SET(_bin_SCRIPTS - ex00_all.py - ex01_cube2build.py - ex02_cube2primitive.py - ex03_cube2partition.py - ex04_cube5tetraHexa.py - ex05_hole1build.py - ex06_hole1boolean.py - ex07_hole1partition.py - ex08_hole2build.py - ex09_grid4build.py - ex10_grid4geometry.py - ex11_grid3partition.py - ex12_grid17partition.py - ex13_hole1partial.py - ex14_cyl1holed.py - ex15_cyl2geometry.py - ex16_cyl2complementary.py - ex17_dome1.py - ex18_dome2.py - ex19_sphereINcube.py - ex21_lamp.py - ex24_cylinder.py - ex29_refine.py - ex30_tepal.py - ex30_groupsOp.py - ex31_dimGroup.py - SMESH_test.py - SMESH_test0.py - SMESH_test1.py - SMESH_test1_AndDisplay.py - SMESH_test2.py - SMESH_test3.py - SMESH_test4.py - SMESH_test5.py - SMESH_mechanic.py - SMESH_mechanic_tetra.py - SMESH_mechanic_editor.py - SMESH_mechanic_netgen.py - SMESH_fixation.py - SMESH_fixation_hexa.py - SMESH_fixation_tetra.py - SMESH_fixation_netgen.py - SMESH_box_tetra.py - SMESH_box2_tetra.py - SMESH_box3_tetra.py - SMESH_flight_skin.py - SMESH_Partition1_tetra.py - SMESH_controls.py - SMESH_freebord.py - SMESH_blocks.py - SMESH_BelongToGeom.py - SMESH_GroupFromGeom2.py - SMESH_box.py - SMESH_demo_hexa2_upd.py - SMESH_hexaedre.py - SMESH_Sphere.py - SMESH_GroupFromGeom.py - SMESH_Nut.py - SMESH_GroupLyingOnGeom.py - SMESH_AdvancedEditor.py - SMESH_BuildCompound.py - PAL_MESH_041_mesh.py - PAL_MESH_043_2D.py - PAL_MESH_043_3D.py - SMESH_reg.py - smesh_selection.py - YACS_geomesh0.py -) SET(smesh_SCRIPTS smeshBuilder.py smesh_algorithm.py + smesh_selection.py ) SET(StdMeshers_SCRIPTS @@ -135,7 +67,5 @@ install(FILES ${SMeshHelper_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS}) SALOME_INSTALL_SCRIPTS("${_swig_SCRIPTS}" ${SALOME_INSTALL_BINS} EXTRA_DPYS "${SWIG_MODULE_SMeshHelper_REAL_NAME}") # --- rules --- -SALOME_INSTALL_SCRIPTS("${_bin_SCRIPTS}" ${SALOME_INSTALL_PYTHON} DEF_PERMS) SALOME_INSTALL_SCRIPTS("${smesh_SCRIPTS}" ${SALOME_INSTALL_PYTHON}/salome/smesh DEF_PERMS) SALOME_INSTALL_SCRIPTS("${StdMeshers_SCRIPTS}" ${SALOME_INSTALL_PYTHON}/salome/StdMeshers DEF_PERMS) -SALOME_INSTALL_SCRIPTS(SMESH_shared_modules.py ${SALOME_INSTALL_PYTHON}/shared_modules DEF_PERMS) diff --git a/src/SMESH_SWIG/SMESH_flight_skin.py b/src/SMESH_SWIG/SMESH_flight_skin.py deleted file mode 100644 index 1ae510ee7..000000000 --- a/src/SMESH_SWIG/SMESH_flight_skin.py +++ /dev/null @@ -1,110 +0,0 @@ -# -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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, or (at your option) any later version. -# -# 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 -# - -# Triangulation of the skin of the geometry from a Brep representing a plane -# Hypothesis and algorithms for the mesh generation are global -# -import os -import salome -salome.salome_init() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - - -# ---------------------------- GEOM -------------------------------------- - -# import a BRep -#before running this script, please be sure about -#the path the file fileName - -filePath = os.environ["DATA_DIR"] -filePath = filePath + "/Shapes/Brep/" - -filename = "flight_solid.brep" -filename = filePath + filename - -shape = geompy.Import(filename, "BREP") -idShape = geompy.addToStudy(shape, "flight") - -print("Analysis of the geometry flight :") -subShellList = geompy.SubShapeAll(shape, geompy.ShapeType["SHELL"]) -subFaceList = geompy.SubShapeAll(shape, geompy.ShapeType["FACE"]) -subEdgeList = geompy.SubShapeAll(shape, geompy.ShapeType["EDGE"]) - -print("number of Shells in flight : ", len(subShellList)) -print("number of Faces in flight : ", len(subFaceList)) -print("number of Edges in flight : ", len(subEdgeList)) - - -### ---------------------------- SMESH -------------------------------------- -smesh.UpdateStudy() - -# ---- init a Mesh with the shell -shape_mesh = salome.IDToObject( idShape ) - -mesh = smesh.Mesh(shape_mesh, "MeshFlight") - - -# ---- set Hypothesis and Algorithm - -print("-------------------------- LocalLength") - -lengthOfSegments = 0.3 - -regular1D = mesh.Segment() -hypLength = regular1D.LocalLength(lengthOfSegments) -print(hypLength.GetName()) -print(hypLength.GetId()) -print(hypLength.GetLength()) -smesh.SetName(hypLength, "LocalLength_" + str(lengthOfSegments)) - -print("-------------------------- LengthFromEdges") - -mefisto2D = mesh.Triangle() -hypLengthFromEdge = mefisto2D.LengthFromEdges() -print(hypLengthFromEdge.GetName()) -print(hypLengthFromEdge.GetId()) -smesh.SetName(hypLengthFromEdge,"LengthFromEdge") - -print("-------------------------- compute the skin flight") -ret = mesh.Compute() -print(ret) -if ret != 0: - log = mesh.GetLog(0) # no erase trace - # for linelog in log: - # print(linelog) - print("Information about the Mesh_mechanic_tetra:") - print("Number of nodes : ", mesh.NbNodes()) - print("Number of edges : ", mesh.NbEdges()) - print("Number of faces : ", mesh.NbFaces()) - print("Number of triangles : ", mesh.NbTriangles()) - print("Number of volumes : ", mesh.NbVolumes()) -else: - print("probleme when computing the mesh") - -salome.sg.updateObjBrowser() diff --git a/src/SMESH_SWIG/SMESH_shared_modules.py b/src/SMESH_SWIG/SMESH_shared_modules.py deleted file mode 100644 index 21f2121f6..000000000 --- a/src/SMESH_SWIG/SMESH_shared_modules.py +++ /dev/null @@ -1,44 +0,0 @@ -# -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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, or (at your option) any later version. -# -# 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 -# - -""" - -""" - -# force SMESH importation at interpreter initialization -# see salome_shared_modules.py -# (avoids incomplete import at run time) - -from launchConfigureParser import verbose - -if verbose(): print("============== import SMESH =======================") - -import SMESH - -# this function is required - -def init_shared_modules(): - """ - This function initializes shared modules that need to be - """ - pass diff --git a/src/SMESH_SWIG/SMESH_test5.py b/src/SMESH_SWIG/SMESH_test5.py deleted file mode 100644 index 87acd5964..000000000 --- a/src/SMESH_SWIG/SMESH_test5.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -# -# 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, or (at your option) any later version. -# -# 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 -# - -# File : SMESH_test5.py -# Module : SMESH -# -import salome -salome.salome_init() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -import CORBA -import os -import os.path - -def SetSObjName(theSObj,theName) : - ok, anAttr = theSObj.FindAttribute("AttributeName") - if ok: - aName = anAttr._narrow(SALOMEDS.AttributeName) - #print aName.__dict__ - aName.SetValue(theName) - -def ConvertMED2UNV(thePath,theFile) : - anInitFileName = thePath + theFile - aMeshes,aResult = smesh.CreateMeshesFromMED(anInitFileName) - print(aResult, aMeshes) - - for iMesh in range(len(aMeshes)) : - aMesh = aMeshes[iMesh] - print(aMesh.GetName(), end=' ') - aFileName = anInitFileName - aFileName = os.path.basename(aFileName) - aMesh.SetName(aFileName) - print(aMesh.GetName()) - - aOutPath = '/tmp/' - aFileName = aOutPath + theFile + "." + str(iMesh) + ".unv" - aMesh.ExportUNV(aFileName) - aMesh = smesh.CreateMeshesFromUNV(aFileName) - print(aMesh.GetName(), end=' ') - os.remove(aFileName) - aFileName = os.path.basename(aFileName) - aMesh.SetName(aFileName) - print(aMesh.GetName()) - -aPath = os.getenv('DATA_DIR') + '/MedFiles/' -aListDir = os.listdir(aPath) -print(aListDir) - -for iFile in range(len(aListDir)) : - aFileName = aListDir[iFile] - aName,anExt = os.path.splitext(aFileName) - if anExt == ".med" : - aFileName = os.path.basename(aFileName) - print(aFileName) - ConvertMED2UNV(aPath,aFileName) - #break - -salome.sg.updateObjBrowser() diff --git a/src/SMESH_SWIG/YACS_geomesh0.py b/src/SMESH_SWIG/YACS_geomesh0.py deleted file mode 100644 index 93e71bfa3..000000000 --- a/src/SMESH_SWIG/YACS_geomesh0.py +++ /dev/null @@ -1,192 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (C) 2018-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# 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, or (at your option) any later version. -# -# 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 -# - -# test used in YACS, ForEachLoop - -def geomesh(l0, r0, h0, d0, d1, my_container, direc): - print("Géometrie et maillage barre : (l0, r0, h0, d0, d1)=", (l0, r0, h0, d0, d1)) - - import sys - import salome - salome.salome_init() - import GEOM - from salome.geom import geomBuilder - import math - import os - import SALOMEDS - import SMESH - from salome.smesh import smeshBuilder - - my_container.load_component_Library("GEOM") - #engineGeom = my_container.create_component_instance("GEOM") - engineGeom = my_container.load_impl("GEOM","") - geompy = geomBuilder.New(engineGeom) - my_container.load_component_Library("SMESH") - #engineSmesh = my_container.create_component_instance("SMESH") - engineSmesh = my_container.load_impl("SMESH","") - smesh = smeshBuilder.New(engineSmesh,engineGeom) - print("instances Names:", engineGeom.instanceName, engineSmesh.instanceName) - print("instances:", engineGeom, engineSmesh) - print("builders:", geompy, smesh) - - volume = (2.*l0*r0 + 0.75*math.pi*r0*r0)*h0 - O = geompy.MakeVertex(0, 0, 0) - OX = geompy.MakeVectorDXDYDZ(1, 0, 0) - OY = geompy.MakeVectorDXDYDZ(0, 1, 0) - OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) - Vertex_1 = geompy.MakeVertex(-l0, -r0, 0) - Vertex_2 = geompy.MakeVertex(-l0-r0, 0, 0) - Vertex_3 = geompy.MakeVertex(-l0, r0, 0) - Vertex_4 = geompy.MakeVertex(l0, r0, 0) - Vertex_5 = geompy.MakeVertex(l0+r0, 0, 0) - Vertex_6 = geompy.MakeVertex(l0, -r0, 0) - Arc_1 = geompy.MakeArc(Vertex_1, Vertex_2, Vertex_3) - Arc_2 = geompy.MakeArc(Vertex_4, Vertex_5, Vertex_6) - Line_1 = geompy.MakeLineTwoPnt(Vertex_3, Vertex_4) - Line_2 = geompy.MakeLineTwoPnt(Vertex_6, Vertex_1) - Face_1 = geompy.MakeFaceWires([Arc_1, Arc_2, Line_1, Line_2], 1) - barre0 = geompy.MakePrismVecH(Face_1, OZ, h0) - Vertex_1a = geompy.MakeVertex(-l0, -r0/2, 0) - Vertex_2a = geompy.MakeVertex(-l0-r0/2, 0, 0) - Vertex_3a = geompy.MakeVertex(-l0, r0/2, 0) - Vertex_4a = geompy.MakeVertex(l0, r0/2, 0) - Vertex_5a = geompy.MakeVertex(l0+r0/2, 0, 0) - Vertex_6a = geompy.MakeVertex(l0, -r0/2, 0) - Arc_1a = geompy.MakeArc(Vertex_1a, Vertex_2a, Vertex_3a) - Arc_2a = geompy.MakeArc(Vertex_4a, Vertex_5a, Vertex_6a) - Line_1a = geompy.MakeLineTwoPnt(Vertex_3a, Vertex_4a) - Line_2a = geompy.MakeLineTwoPnt(Vertex_6a, Vertex_1a) - Face_1a = geompy.MakeFaceWires([Arc_1a, Arc_2a, Line_1a, Line_2a], 1) - barrea = geompy.MakePrismVecH(Face_1a, OZ, h0) - barreb = geompy.MakeCut(barre0, barrea) - Plane_1 = geompy.MakePlane(Vertex_1, OX, 2000) - Plane_2 = geompy.MakePlane(Vertex_6, OX, 2000) - barre = geompy.MakePartition([barreb], [Plane_1, Plane_2], [], [], geompy.ShapeType["SOLID"], 0, [], 0) - v1 = geompy.MakeVertex(-l0-r0, 0, h0/2.) - v2 = geompy.MakeVertex(l0+r0, 0, h0/2.) - f1 = geompy.GetShapesNearPoint(barre, v1, geompy.ShapeType["FACE"]) - f2 = geompy.GetShapesNearPoint(barre, v2, geompy.ShapeType["FACE"]) - #f1 = geompy.CreateGroup(barre, geompy.ShapeType["FACE"]) - #geompy.UnionIDs(f1, [3]) - #f2 = geompy.CreateGroup(barre, geompy.ShapeType["FACE"]) - #geompy.UnionIDs(f2, [20]) - - Auto_group_for_Sub_mesh_1 = geompy.CreateGroup(barre, geompy.ShapeType["FACE"]) - geompy.UnionList(Auto_group_for_Sub_mesh_1, [f1, f2]) - nom = r'barre_l_{:03d}__r_{:05.2f}__h_{:05.2f}__d0_{:05.2f}__d1_{:05.2f}'.format(int(l0), r0, h0, d0, d1) - nombrep = nom + ".brep" - geompy.ExportBREP(barre, direc + os.sep + nombrep ) - props = geompy.BasicProperties(barre) - geomvol = props[2] - - #geompy.addToStudy( barre, 'barre' ) - #geompy.addToStudyInFather( barre, f1, 'f1' ) - #geompy.addToStudyInFather( barre, f2, 'f2' ) - - smesh.SetEnablePublish( False ) - - isTetra = False - barre_1 = smesh.Mesh(barre) - # SO = salome.myStudy.FindObjectIOR(salome.myStudy.ConvertObjectToIOR(barre_1.GetMesh())) - # if SO: - # print ("_______",SO.GetID(),SO.GetName()) - # else: - # print ("_______NO_SO!!!") - if (isTetra): - NETGEN_1D_2D_3D = barre_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D) - NETGEN_3D_Parameters_1 = NETGEN_1D_2D_3D.Parameters() - NETGEN_3D_Parameters_1.SetMaxSize( d0 ) - NETGEN_3D_Parameters_1.SetSecondOrder( 0 ) - NETGEN_3D_Parameters_1.SetOptimize( 1 ) - NETGEN_3D_Parameters_1.SetFineness( 3 ) - NETGEN_3D_Parameters_1.SetChordalError( 0.1 ) - NETGEN_3D_Parameters_1.SetChordalErrorEnabled( 0 ) - NETGEN_3D_Parameters_1.SetMinSize( d0 ) - NETGEN_3D_Parameters_1.SetUseSurfaceCurvature( 1 ) - NETGEN_3D_Parameters_1.SetFuseEdges( 1 ) - NETGEN_3D_Parameters_1.SetQuadAllowed( 0 ) - NETGEN_1D_2D = barre_1.Triangle(algo=smeshBuilder.NETGEN_1D2D,geom=Auto_group_for_Sub_mesh_1) - NETGEN_2D_Parameters_1 = NETGEN_1D_2D.Parameters() - NETGEN_2D_Parameters_1.SetMaxSize( d1 ) - NETGEN_2D_Parameters_1.SetSecondOrder( 0 ) - NETGEN_2D_Parameters_1.SetOptimize( 1 ) - NETGEN_2D_Parameters_1.SetFineness( 3 ) - NETGEN_2D_Parameters_1.SetChordalError( 0.1 ) - NETGEN_2D_Parameters_1.SetChordalErrorEnabled( 0 ) - NETGEN_2D_Parameters_1.SetMinSize( d1 ) - NETGEN_2D_Parameters_1.SetUseSurfaceCurvature( 1 ) - NETGEN_2D_Parameters_1.SetFuseEdges( 1 ) - NETGEN_2D_Parameters_1.SetQuadAllowed( 0 ) - else: - Regular_1D = barre_1.Segment() - Number_of_Segments_1 = Regular_1D.NumberOfSegments(15) - Quadrangle_2D = barre_1.Quadrangle(algo=smeshBuilder.QUADRANGLE) - Hexa_3D = barre_1.Hexahedron(algo=smeshBuilder.Hexa) - isDone = barre_1.Compute() - - f1_1 = barre_1.GroupOnGeom(f1,'f1',SMESH.FACE) - f2_1 = barre_1.GroupOnGeom(f2,'f2',SMESH.FACE) - smesh.SetName(barre_1, nom) - nommed = nom + ".med" - barre_1.ExportMED( direc + os.sep + nommed, auto_groups=0, minor=0, overwrite=1, meshPart=None, autoDimension=1 ) - measure = smesh.CreateMeasurements() - meshvol = measure.Volume(barre_1.mesh) - print("Maillage publié : ", direc + os.sep + nommed) - clearMesh(barre_1, salome.myStudy, nom) - deltag = abs(geomvol - volume)/volume - deltam = abs(meshvol - geomvol)/geomvol - delta = abs(meshvol - volume)/volume - print("volumes:", volume, geomvol, meshvol, deltag, deltam) - assert(deltag < 1.e-5) - assert(deltam < 2.e-3) - #import time - #time.sleep(30) - return delta - - -def clearMesh(theMesh, theStudy, aName): - theMesh.Clear() - aMesh = theMesh.GetMesh() - aMesh.UnRegister() - # aStudyBuilder = theStudy.NewBuilder() - # SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(aMesh)) - # objects_to_unpublish = [SO] - # refs = theStudy.FindDependances(SO) - # objects_to_unpublish += refs - # for o in objects_to_unpublish: - # if o is not None: - # aStudyBuilder.RemoveObjectWithChildren(o) - print("clearMesh done:", aName) - -def genere(r0, h0, my_container, direc): - l0 = 50.0 - d0 = min(r0/2., h0/6.) - d1 = d0/2. - res = geomesh(l0, r0, h0, d0, d1, my_container, direc) - return res - -def genere2(r0h0, my_container, direc): - l0 = 50.0 - r0 = r0h0[0] - h0 = r0h0[1] - d0 = min(r0/2., h0/6.) - d1 = d0/2. - res = geomesh(l0, r0, h0, d0, d1, my_container, direc) - return res diff --git a/src/SMESH_SWIG/ex29_refine.py b/src/SMESH_SWIG/ex29_refine.py deleted file mode 100644 index 353e68403..000000000 --- a/src/SMESH_SWIG/ex29_refine.py +++ /dev/null @@ -1,235 +0,0 @@ -# -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE -# -# 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, or (at your option) any later version. -# -# 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 -# - -# ======================================= -# Procedure that take a triangulation and split all triangles in 4 others triangles -# -import salome -salome.salome_init() -import GEOM -from salome.geom import geomBuilder -geompy = geomBuilder.New() - -import SMESH, SALOMEDS -from salome.smesh import smeshBuilder -smesh = smeshBuilder.New() - -import os - -# Values -# ------ - -tmpDir = os.getenv('SALOME_TMP_DIR', '/tmp') -print("Output directory:", tmpDir) - -# Path for ".med" files -path = os.path.join( tmpDir, "ex29_%s_" % os.getenv('USER','unknown')) - -# Name of the shape and the mesh -name = "Carre" - -# Add a node and needed edges -# --------------------------- - -def node(m, f, n1, n2, lnv): - x1, y1, z1 = m.GetNodeXYZ(n1) - x2, y2, z2 = m.GetNodeXYZ(n2) - - x = (x1 + x2) / 2.0 - y = (y1 + y2) / 2.0 - z = (z1 + z2) / 2.0 - - i = m.AddNode(x, y, z) - - in1 = m.GetShapeID(n1) - in2 = m.GetShapeID(n2) - - if (in1==f) or (in2==f): - m.SetNodeOnFace(i, f, 0, 0) - - else: - e1 = m.AddEdge([ n1, i ]) - e2 = m.AddEdge([ i , n2 ]) - - if n1 in lnv: - e = in2 - else: - e = in1 - - m.SetMeshElementOnShape(e1, e) - m.SetMeshElementOnShape(e2, e) - m.SetNodeOnEdge(i, e, 0) - - return i - -# Add a triangle and associate to the CAD face -# -------------------------------------------- - -def triangle(m, f, n1, n2, n3): - i = m.AddFace([ n1, n2, n3 ]) - m.SetMeshElementOnShape(i, f) - -# Split all triangles in 4 triangles -# ---------------------------------- - -def SplitTrianglesIn4(m): - # Get all triangles - triangles = m.GetElementsByType(SMESH.FACE) - - # Remove all edges - m.RemoveElements(m.GetElementsByType(SMESH.EDGE)) - - # Get the list of nodes (ids) associated with the CAD vertices - shape = m.GetShape() - lnv = [] - for v in geompy.SubShapeAll(shape, geompy.ShapeType["VERTEX"]): - lnv = lnv + m.GetSubMeshNodesId(v, True) - - # Split every triangle - for t in triangles: - noeud_1, noeud_2, noeud_3 = m.GetElemNodes(t) - - face = m.GetShapeIDForElem(t) - - noeud_12 = node(m, face, noeud_1, noeud_2, lnv) - noeud_23 = node(m, face, noeud_2, noeud_3, lnv) - noeud_13 = node(m, face, noeud_1, noeud_3, lnv) - - triangle(m, face, noeud_1 , noeud_12, noeud_13) - triangle(m, face, noeud_2 , noeud_23, noeud_12) - triangle(m, face, noeud_3 , noeud_13, noeud_23) - triangle(m, face, noeud_12, noeud_23, noeud_13) - - # Remove all initial triangles - m.RemoveElements(triangles) - - # Merge all identical nodes - m.MergeNodes(m.FindCoincidentNodes(0.0001)) - -# Build a CAD square -# ------------------ - -x0 = 0.0 ; y0 = 0.0 ; z0 = 0.0 -x1 = 1.0 ; y1 = 0.0 ; z1 = 0.0 -x2 = 1.0 ; y2 = 1.0 ; z2 = 0.0 -x3 = 0.0 ; y3 = 1.0 ; z3 = 0.0 - -P0 = geompy.MakeVertex(x0, y0, z0) -P1 = geompy.MakeVertex(x1, y1, z1) -P2 = geompy.MakeVertex(x2, y2, z2) -P3 = geompy.MakeVertex(x3, y3, z3) - -square = geompy.MakeQuad4Vertices(P0, P1, P2, P3) -geompy.addToStudy(square, name) - -# Refine edges and create group of mesh -# ------------------------------------- - -def refine(m, p1, p2, n, k, name): - s = m.GetShape() - - g = geompy.CreateGroup(s, geompy.ShapeType["EDGE"]) - e = geompy.GetEdge(s, p1, p2) - i = geompy.GetSubShapeID(s, e) - geompy.AddObject(g, i) - m.Group(g, name) - - a = m.Segment(e) - a.NumberOfSegments(n, k) - -# Mesh the square -# --------------- - -MyMesh = smesh.Mesh(square) - -refine(MyMesh, P1, P2, 8, 7, "Droite") -refine(MyMesh, P3, P0, 9, 10, "Gauche") -refine(MyMesh, P0, P1, 7, 9, "Bas" ) -refine(MyMesh, P2, P3, 12, 14, "Haut" ) - -algo2D = MyMesh.Triangle() -algo2D.MaxElementArea(0.07) - -MyMesh.Compute() - -MyMesh.ExportMED(path+"110_triangles.med", 0) - -# Disturb the mesh -# ---------------- - -MyMesh.MoveNode( 37, 0.05 , 0.368967 , 0 ) -MyMesh.MoveNode( 38, 0.34 , 0.0762294, 0 ) -MyMesh.MoveNode( 40, 0.8 , 0.42 , 0 ) -MyMesh.MoveNode( 42, 0.702662, 0.74 , 0 ) -MyMesh.MoveNode( 46, 0.4 , 0.374656 , 0 ) -MyMesh.MoveNode( 47, 0.13 , 0.63 , 0 ) -MyMesh.MoveNode( 49, 0.222187, 0.3 , 0 ) -MyMesh.MoveNode( 54, 0.557791, 0.05 , 0 ) -MyMesh.MoveNode( 55, 0.7 , 0.2 , 0 ) -MyMesh.MoveNode( 56, 0.73 , 0.52 , 0 ) -MyMesh.MoveNode( 58, 0.313071, 0.31 , 0 ) -MyMesh.MoveNode( 59, 0.8 , 0.56 , 0 ) -MyMesh.MoveNode( 62, 0.592703, 0.95 , 0 ) -MyMesh.MoveNode( 63, 0.28 , 0.5 , 0 ) -MyMesh.MoveNode( 65, 0.49 , 0.93 , 0 ) -MyMesh.MoveNode( 68, 0.501038, 0.65 , 0 ) -MyMesh.MoveNode( 69, 0.37 , 0.63 , 0 ) -MyMesh.MoveNode( 70, 0.597025, 0.52 , 0 ) -MyMesh.MoveNode( 72, 0.899 , 0.878589 , 0 ) -MyMesh.MoveNode( 73, 0.92 , 0.85 , 0 ) -MyMesh.MoveNode( 74, 0.820851, 0.75 , 0 ) - -NbCells1 = 110 -MyMesh.ExportMED(path+"110_triangles_2.med", 0) - -# First mesh refining -# ------------------- - -SplitTrianglesIn4(MyMesh) - -NbCells2 = NbCells1*4 -print(("Mesh with "+str(NbCells2)+" cells computed.")) - -MyMesh.ExportMED(path+str(NbCells2)+"_triangles.med", 0) - -# Second mesh refining -# -------------------- - -SplitTrianglesIn4(MyMesh) - -NbCells3 = NbCells2*4 -print(("Mesh with "+str(NbCells3)+" cells computed.")) - -MyMesh.ExportMED(path+str(NbCells3)+"_triangles.med",0) - -# Third mesh refining -# ------------------- - -SplitTrianglesIn4(MyMesh) - -NbCells4 = NbCells3*4 -print(("Mesh with "+str(NbCells4)+" cells computed.")) - -MyMesh.ExportMED(path+str(NbCells4)+"_triangles.med", 0) - -# Update the object browser -# ------------------------- - -salome.sg.updateObjBrowser() diff --git a/src/Tools/MacMesh/CMakeLists.txt b/src/Tools/MacMesh/CMakeLists.txt index d27b4b152..15c1bd5de 100644 --- a/src/Tools/MacMesh/CMakeLists.txt +++ b/src/Tools/MacMesh/CMakeLists.txt @@ -57,10 +57,10 @@ SET(sample_SCRIPT SALOME_INSTALL_SCRIPTS("${plugin_SCRIPTS}" ${MACMESH_INSTALL_PY}) SALOME_INSTALL_SCRIPTS("${sample_SCRIPT}" ${SALOME_INSTALL_SCRIPT_PYTHON} DEF_PERMS) -SET(testname MacMesh_Example_PressureValve) -SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env) -ADD_TEST( - NAME ${testname} - COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/doc/salome/examples/testme.py ${sample_SCRIPT}) -SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}") - +IF(SALOME_BUILD_TESTS) + SET(testname MacMesh_Example_PressureValve) + SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env) + ADD_TEST(NAME ${testname} + COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/test/test_helper.py ${sample_SCRIPT}) + SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}" LABELS "macmesh") +ENDIF() diff --git a/src/Tools/TopIIVolMeshPlug/CMakeLists.txt b/src/Tools/TopIIVolMeshPlug/CMakeLists.txt index 20588ca40..da7d2f8e9 100644 --- a/src/Tools/TopIIVolMeshPlug/CMakeLists.txt +++ b/src/Tools/TopIIVolMeshPlug/CMakeLists.txt @@ -49,7 +49,6 @@ ENDIF(SALOME_BUILD_GUI) # --- rules --- SALOME_INSTALL_SCRIPTS("${_plugin_SCRIPTS}" ${SALOME_SMESH_INSTALL_PLUGINS}) -MESSAGE(VERBOSE "iNSTALLATION FOLDER ${SALOME_SMESH_INSTALL_PLUGINS}") IF(SALOME_BUILD_GUI) SALOME_INSTALL_SCRIPTS("${_pyuic_SCRIPTS}" ${SALOME_SMESH_INSTALL_PLUGINS} TARGET_NAME _target_name_pyuic_py) # add dependency of compiled py files on uic files in order diff --git a/test/0README b/test/0README new file mode 100644 index 000000000..3cb175163 --- /dev/null +++ b/test/0README @@ -0,0 +1,7 @@ +This folder contains test scripts for SMESH module. + +These tests are exported into the ${SMESH_ROOT_DIR}/bin/test folder and can be executed with the +`salome test` command, as a part of whole testing procedure. + +The example Python scripts to be used in the documentation of Mesh module, must be put into the +{root_src}/doc/examples folder! diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1c0ac0b14..e5817ca3d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -20,23 +20,47 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +INCLUDE(tests.set) + +SET(RESTRICTED_ROOT_DIR $ENV{RESTRICTED_ROOT_DIR} CACHE PATH "Path to the restricted repository") +SET(TEST_INSTALL_DIRECTORY ${SMESH_TEST_DIR}/other) + +# Install 'salome test' staff +# --------------------------- + +SALOME_CONFIGURE_FILE(CTestTestfileInstall.cmake + ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CTestTestfile.cmake + INSTALL ${TEST_INSTALL_DIRECTORY}) +INSTALL(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY}) +INSTALL(FILES ${GOOD_TESTS} ${BAD_TESTS} ${SESSION_FREE_TESTS} ${OTHER_FILES} DESTINATION ${TEST_INSTALL_DIRECTORY}) +INSTALL(DIRECTORY data DESTINATION ${TEST_INSTALL_DIRECTORY}) + +# Add tests for 'make test' +# ------------------------- + SALOME_GENERATE_TESTS_ENVIRONMENT(_test_env) -SET(_test_helper ${CMAKE_SOURCE_DIR}/doc/salome/examples/testme.py) -# Tests from RESTRICTED repository ----------------------------------- +# 1. Tests from here +# ------------------ -SET(RESTRICTED_ROOT_DIR $ENV{RESTRICTED_ROOT_DIR} CACHE PATH "Path to the restricted repository") +FOREACH(_test ${GOOD_TESTS}) + GET_FILENAME_COMPONENT(testname ${_test} NAME_WE) + ADD_TEST(NAME ${testname} + COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/test/test_helper.py ${CMAKE_CURRENT_SOURCE_DIR}/${_test}) + SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}" LABELS "tests") +ENDFOREACH() + +# 2. Tests from RESTRICTED repository +# ----------------------------------- IF(WITH_SHAPER_STUDY AND EXISTS ${RESTRICTED_ROOT_DIR}) FILE(GLOB _restricted_tests "${RESTRICTED_ROOT_DIR}/SMESH/*.py") FOREACH(_test ${_restricted_tests}) GET_FILENAME_COMPONENT(_test_name ${_test} NAME_WE) ADD_TEST(NAME ${_test_name} - COMMAND ${PYTHON_EXECUTABLE} -B ${_test_helper} ${_test}) - SET_TESTS_PROPERTIES(${_test_name} PROPERTIES ENVIRONMENT "${_test_env}") + COMMAND ${PYTHON_EXECUTABLE} -B ${CMAKE_SOURCE_DIR}/test/test_helper.py ${_test}) + SET_TESTS_PROPERTIES(${_test_name} PROPERTIES ENVIRONMENT "${_test_env}" LABELS "restricted") ENDFOREACH() ELSE() MESSAGE(WARNING "Tests from RESTRICTED repository aren't available") ENDIF() - -# -------------------------------------------------------------------- diff --git a/test/CTestTestfileInstall.cmake b/test/CTestTestfileInstall.cmake new file mode 100644 index 000000000..c485059c7 --- /dev/null +++ b/test/CTestTestfileInstall.cmake @@ -0,0 +1,34 @@ +# Copyright (C) 2015-2022 CEA/DEN, EDF R&D, OPEN CASCADE +# +# 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, or (at your option) any later version. +# +# 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(tests.set) + +FOREACH(tfile ${GOOD_TESTS} ${BAD_TESTS}) + GET_FILENAME_COMPONENT(BASE_NAME ${tfile} NAME_WE) + SET(TEST_NAME SMESH_${BASE_NAME}) + ADD_TEST(${TEST_NAME} python ${PYTHON_TEST_DRIVER} ${TIMEOUT} ${tfile}) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME};${COMPONENT_NAME}_tests") +ENDFOREACH() + +FOREACH(tfile ${SESSION_FREE_TESTS}) + GET_FILENAME_COMPONENT(BASE_NAME ${tfile} NAME_WE) + SET(TEST_NAME SMESH_${BASE_NAME}) + ADD_TEST(${TEST_NAME} python ${tfile}) + SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME};${COMPONENT_NAME}_tests") +endforeach() diff --git a/src/SMESH_SWIG/PAL_MESH_041_mesh.py b/test/PAL_MESH_041_mesh.py similarity index 100% rename from src/SMESH_SWIG/PAL_MESH_041_mesh.py rename to test/PAL_MESH_041_mesh.py diff --git a/src/SMESH_SWIG/PAL_MESH_043_2D.py b/test/PAL_MESH_043_2D.py similarity index 100% rename from src/SMESH_SWIG/PAL_MESH_043_2D.py rename to test/PAL_MESH_043_2D.py diff --git a/src/SMESH_SWIG/PAL_MESH_043_3D.py b/test/PAL_MESH_043_3D.py similarity index 100% rename from src/SMESH_SWIG/PAL_MESH_043_3D.py rename to test/PAL_MESH_043_3D.py diff --git a/src/SMESH_SWIG/SMESH_AdvancedEditor.py b/test/SMESH_AdvancedEditor.py similarity index 100% rename from src/SMESH_SWIG/SMESH_AdvancedEditor.py rename to test/SMESH_AdvancedEditor.py diff --git a/src/SMESH_SWIG/SMESH_BelongToGeom.py b/test/SMESH_BelongToGeom.py similarity index 100% rename from src/SMESH_SWIG/SMESH_BelongToGeom.py rename to test/SMESH_BelongToGeom.py diff --git a/src/SMESH_SWIG/SMESH_BuildCompound.py b/test/SMESH_BuildCompound.py similarity index 100% rename from src/SMESH_SWIG/SMESH_BuildCompound.py rename to test/SMESH_BuildCompound.py diff --git a/src/SMESH_SWIG/SMESH_GroupFromGeom.py b/test/SMESH_GroupFromGeom.py similarity index 100% rename from src/SMESH_SWIG/SMESH_GroupFromGeom.py rename to test/SMESH_GroupFromGeom.py diff --git a/src/SMESH_SWIG/SMESH_GroupFromGeom2.py b/test/SMESH_GroupFromGeom2.py similarity index 100% rename from src/SMESH_SWIG/SMESH_GroupFromGeom2.py rename to test/SMESH_GroupFromGeom2.py diff --git a/src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py b/test/SMESH_GroupLyingOnGeom.py similarity index 100% rename from src/SMESH_SWIG/SMESH_GroupLyingOnGeom.py rename to test/SMESH_GroupLyingOnGeom.py diff --git a/src/SMESH_SWIG/SMESH_Nut.py b/test/SMESH_Nut.py similarity index 100% rename from src/SMESH_SWIG/SMESH_Nut.py rename to test/SMESH_Nut.py diff --git a/src/SMESH_SWIG/SMESH_Partition1_tetra.py b/test/SMESH_Partition1_tetra.py similarity index 100% rename from src/SMESH_SWIG/SMESH_Partition1_tetra.py rename to test/SMESH_Partition1_tetra.py diff --git a/src/SMESH_SWIG/SMESH_Sphere.py b/test/SMESH_Sphere.py similarity index 100% rename from src/SMESH_SWIG/SMESH_Sphere.py rename to test/SMESH_Sphere.py diff --git a/src/SMESH_SWIG/SMESH_blocks.py b/test/SMESH_blocks.py similarity index 100% rename from src/SMESH_SWIG/SMESH_blocks.py rename to test/SMESH_blocks.py diff --git a/src/SMESH_SWIG/SMESH_box.py b/test/SMESH_box.py similarity index 100% rename from src/SMESH_SWIG/SMESH_box.py rename to test/SMESH_box.py diff --git a/src/SMESH_SWIG/SMESH_box2_tetra.py b/test/SMESH_box2_tetra.py similarity index 100% rename from src/SMESH_SWIG/SMESH_box2_tetra.py rename to test/SMESH_box2_tetra.py diff --git a/src/SMESH_SWIG/SMESH_box3_tetra.py b/test/SMESH_box3_tetra.py similarity index 100% rename from src/SMESH_SWIG/SMESH_box3_tetra.py rename to test/SMESH_box3_tetra.py diff --git a/src/SMESH_SWIG/SMESH_box_tetra.py b/test/SMESH_box_tetra.py similarity index 100% rename from src/SMESH_SWIG/SMESH_box_tetra.py rename to test/SMESH_box_tetra.py diff --git a/src/SMESH_SWIG/SMESH_controls.py b/test/SMESH_controls.py similarity index 100% rename from src/SMESH_SWIG/SMESH_controls.py rename to test/SMESH_controls.py diff --git a/src/SMESH_SWIG/SMESH_demo_hexa2_upd.py b/test/SMESH_demo_hexa2_upd.py similarity index 100% rename from src/SMESH_SWIG/SMESH_demo_hexa2_upd.py rename to test/SMESH_demo_hexa2_upd.py diff --git a/src/SMESH_SWIG/SMESH_fixation.py b/test/SMESH_fixation.py similarity index 100% rename from src/SMESH_SWIG/SMESH_fixation.py rename to test/SMESH_fixation.py diff --git a/src/SMESH_SWIG/SMESH_fixation_hexa.py b/test/SMESH_fixation_hexa.py similarity index 100% rename from src/SMESH_SWIG/SMESH_fixation_hexa.py rename to test/SMESH_fixation_hexa.py diff --git a/src/SMESH_SWIG/SMESH_fixation_netgen.py b/test/SMESH_fixation_netgen.py similarity index 100% rename from src/SMESH_SWIG/SMESH_fixation_netgen.py rename to test/SMESH_fixation_netgen.py diff --git a/src/SMESH_SWIG/SMESH_fixation_tetra.py b/test/SMESH_fixation_tetra.py similarity index 100% rename from src/SMESH_SWIG/SMESH_fixation_tetra.py rename to test/SMESH_fixation_tetra.py diff --git a/test/SMESH_flight_skin.py b/test/SMESH_flight_skin.py new file mode 100644 index 000000000..846741729 --- /dev/null +++ b/test/SMESH_flight_skin.py @@ -0,0 +1,110 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# 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, or (at your option) any later version. +# +# 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 +# + +# Triangulation of the skin of the geometry from a Brep representing a plane +# Hypothesis and algorithms for the mesh generation are global +# +import os +import salome +salome.salome_init() +import GEOM +from salome.geom import geomBuilder +geompy = geomBuilder.New() + +import SMESH, SALOMEDS +from salome.smesh import smeshBuilder +smesh = smeshBuilder.New() + + +# ---------------------------- GEOM -------------------------------------- + +# import a BRep +#before running this script, please be sure about +#the path the file fileName + +filePath = os.environ["DATA_DIR"] +filePath = filePath + "/Shapes/Brep/" + +filename = "flight_solid.brep" +filename = filePath + filename + +shape = geompy.ImportBREP(filename) +idShape = geompy.addToStudy(shape, "flight") + +print("Analysis of the geometry flight :") +subShellList = geompy.SubShapeAll(shape, geompy.ShapeType["SHELL"]) +subFaceList = geompy.SubShapeAll(shape, geompy.ShapeType["FACE"]) +subEdgeList = geompy.SubShapeAll(shape, geompy.ShapeType["EDGE"]) + +print("number of Shells in flight : ", len(subShellList)) +print("number of Faces in flight : ", len(subFaceList)) +print("number of Edges in flight : ", len(subEdgeList)) + + +### ---------------------------- SMESH -------------------------------------- +smesh.UpdateStudy() + +# ---- init a Mesh with the shell +shape_mesh = salome.IDToObject( idShape ) + +mesh = smesh.Mesh(shape_mesh, "MeshFlight") + + +# ---- set Hypothesis and Algorithm + +print("-------------------------- LocalLength") + +lengthOfSegments = 0.3 + +regular1D = mesh.Segment() +hypLength = regular1D.LocalLength(lengthOfSegments) +print(hypLength.GetName()) +print(hypLength.GetId()) +print(hypLength.GetLength()) +smesh.SetName(hypLength, "LocalLength_" + str(lengthOfSegments)) + +print("-------------------------- LengthFromEdges") + +mefisto2D = mesh.Triangle() +hypLengthFromEdge = mefisto2D.LengthFromEdges() +print(hypLengthFromEdge.GetName()) +print(hypLengthFromEdge.GetId()) +smesh.SetName(hypLengthFromEdge,"LengthFromEdge") + +print("-------------------------- compute the skin flight") +ret = mesh.Compute() +print(ret) +if ret != 0: + log = mesh.GetLog(0) # no erase trace + # for linelog in log: + # print(linelog) + print("Information about the Mesh_mechanic_tetra:") + print("Number of nodes : ", mesh.NbNodes()) + print("Number of edges : ", mesh.NbEdges()) + print("Number of faces : ", mesh.NbFaces()) + print("Number of triangles : ", mesh.NbTriangles()) + print("Number of volumes : ", mesh.NbVolumes()) +else: + print("probleme when computing the mesh") + +salome.sg.updateObjBrowser() diff --git a/src/SMESH_SWIG/SMESH_freebord.py b/test/SMESH_freebord.py similarity index 100% rename from src/SMESH_SWIG/SMESH_freebord.py rename to test/SMESH_freebord.py diff --git a/src/SMESH_SWIG/SMESH_hexaedre.py b/test/SMESH_hexaedre.py similarity index 100% rename from src/SMESH_SWIG/SMESH_hexaedre.py rename to test/SMESH_hexaedre.py diff --git a/src/SMESH_SWIG/SMESH_mechanic.py b/test/SMESH_mechanic.py similarity index 100% rename from src/SMESH_SWIG/SMESH_mechanic.py rename to test/SMESH_mechanic.py diff --git a/src/SMESH_SWIG/SMESH_mechanic_editor.py b/test/SMESH_mechanic_editor.py similarity index 100% rename from src/SMESH_SWIG/SMESH_mechanic_editor.py rename to test/SMESH_mechanic_editor.py diff --git a/src/SMESH_SWIG/SMESH_mechanic_netgen.py b/test/SMESH_mechanic_netgen.py similarity index 100% rename from src/SMESH_SWIG/SMESH_mechanic_netgen.py rename to test/SMESH_mechanic_netgen.py diff --git a/src/SMESH_SWIG/SMESH_mechanic_tetra.py b/test/SMESH_mechanic_tetra.py similarity index 100% rename from src/SMESH_SWIG/SMESH_mechanic_tetra.py rename to test/SMESH_mechanic_tetra.py diff --git a/src/SMESH_SWIG/SMESH_reg.py b/test/SMESH_reg.py similarity index 100% rename from src/SMESH_SWIG/SMESH_reg.py rename to test/SMESH_reg.py diff --git a/src/SMESH_SWIG/SMESH_test.py b/test/SMESH_test.py similarity index 100% rename from src/SMESH_SWIG/SMESH_test.py rename to test/SMESH_test.py diff --git a/src/SMESH_SWIG/SMESH_test0.py b/test/SMESH_test0.py similarity index 100% rename from src/SMESH_SWIG/SMESH_test0.py rename to test/SMESH_test0.py diff --git a/src/SMESH_SWIG/SMESH_test1.py b/test/SMESH_test1.py similarity index 100% rename from src/SMESH_SWIG/SMESH_test1.py rename to test/SMESH_test1.py diff --git a/src/SMESH_SWIG/SMESH_test1_AndDisplay.py b/test/SMESH_test1_AndDisplay.py similarity index 100% rename from src/SMESH_SWIG/SMESH_test1_AndDisplay.py rename to test/SMESH_test1_AndDisplay.py diff --git a/src/SMESH_SWIG/SMESH_test2.py b/test/SMESH_test2.py similarity index 100% rename from src/SMESH_SWIG/SMESH_test2.py rename to test/SMESH_test2.py diff --git a/src/SMESH_SWIG/SMESH_test3.py b/test/SMESH_test3.py similarity index 100% rename from src/SMESH_SWIG/SMESH_test3.py rename to test/SMESH_test3.py diff --git a/src/SMESH_SWIG/SMESH_test4.py b/test/SMESH_test4.py similarity index 100% rename from src/SMESH_SWIG/SMESH_test4.py rename to test/SMESH_test4.py diff --git a/test/SMESH_test5.py b/test/SMESH_test5.py new file mode 100644 index 000000000..64c7ba3a4 --- /dev/null +++ b/test/SMESH_test5.py @@ -0,0 +1,79 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE +# +# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +# +# 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, or (at your option) any later version. +# +# 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 +# + +# File : SMESH_test5.py +# Module : SMESH +# + +import salome +salome.salome_init() +import GEOM +from salome.geom import geomBuilder +geompy = geomBuilder.New() + +import SMESH, SALOMEDS +from salome.smesh import smeshBuilder +smesh = smeshBuilder.New() + +import CORBA +import os +import shutil +import tempfile + +aOutPath = tempfile.mkdtemp() + +def SetSObjName(theSObj,theName) : + ok, anAttr = theSObj.FindAttribute("AttributeName") + if ok: + aName = anAttr._narrow(SALOMEDS.AttributeName) + #print aName.__dict__ + aName.SetValue(theName) + +def ConvertMED2UNV(theFile): + print(theFile) + aMeshes, aResult = smesh.CreateMeshesFromMED(theFile) + print(aMeshes, aResult) + + for aMesh in aMeshes: + print(aMesh.GetName(), end=' ') + aMesh.SetName(os.path.basename(theFile)) + print(aMesh.GetName()) + + aFileName = os.path.join(aOutPath, theFile + ".unv") + aMesh.ExportUNV(aFileName) + + aMesh = smesh.CreateMeshesFromUNV(aFileName) + print(aMesh.GetName(), end=' ') + aMesh.SetName(os.path.basename(aFileName)) + print(aMesh.GetName()) + +aPath = os.path.join(os.getenv('DATA_DIR'), 'MedFiles') + +for aFileName in sorted(os.listdir(aPath)): + if os.path.splitext(aFileName)[-1] == ".med": + ConvertMED2UNV(os.path.join(aPath, aFileName)) + +if os.getenv('SMESH_KEEP_TMP_DIR') != '1': + shutil.rmtree(aOutPath) + +salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/basic_geom_smesh_without_session.py b/test/basic_geom_smesh_without_session.py similarity index 100% rename from doc/salome/examples/basic_geom_smesh_without_session.py rename to test/basic_geom_smesh_without_session.py diff --git a/doc/salome/examples/basic_shaper_smesh_without_session.py b/test/basic_shaper_smesh_without_session.py similarity index 100% rename from doc/salome/examples/basic_shaper_smesh_without_session.py rename to test/basic_shaper_smesh_without_session.py diff --git a/doc/salome/examples/basic_smesh_output_with_mc_field.py b/test/basic_smesh_output_with_mc_field.py similarity index 100% rename from doc/salome/examples/basic_smesh_output_with_mc_field.py rename to test/basic_smesh_output_with_mc_field.py diff --git a/doc/salome/examples/blocFissure_01_without_session.py b/test/blocFissure_01_without_session.py similarity index 100% rename from doc/salome/examples/blocFissure_01_without_session.py rename to test/blocFissure_01_without_session.py diff --git a/doc/salome/examples/blocFissure_02_without_session.py b/test/blocFissure_02_without_session.py similarity index 100% rename from doc/salome/examples/blocFissure_02_without_session.py rename to test/blocFissure_02_without_session.py diff --git a/doc/salome/examples/blocFissure_03_without_session.py b/test/blocFissure_03_without_session.py similarity index 100% rename from doc/salome/examples/blocFissure_03_without_session.py rename to test/blocFissure_03_without_session.py diff --git a/doc/salome/examples/blocFissure_04_without_session.py b/test/blocFissure_04_without_session.py similarity index 100% rename from doc/salome/examples/blocFissure_04_without_session.py rename to test/blocFissure_04_without_session.py diff --git a/doc/salome/examples/blocFissure_05_without_session.py b/test/blocFissure_05_without_session.py similarity index 100% rename from doc/salome/examples/blocFissure_05_without_session.py rename to test/blocFissure_05_without_session.py diff --git a/doc/salome/examples/blocFissure_06_without_session.py b/test/blocFissure_06_without_session.py similarity index 100% rename from doc/salome/examples/blocFissure_06_without_session.py rename to test/blocFissure_06_without_session.py diff --git a/doc/salome/examples/blocFissure_07_without_session.py b/test/blocFissure_07_without_session.py similarity index 100% rename from doc/salome/examples/blocFissure_07_without_session.py rename to test/blocFissure_07_without_session.py diff --git a/doc/salome/examples/create_penta_biquad.py b/test/create_penta_biquad.py similarity index 100% rename from doc/salome/examples/create_penta_biquad.py rename to test/create_penta_biquad.py diff --git a/doc/salome/examples/Mesh_tri.med b/test/data/Mesh_tri.med similarity index 100% rename from doc/salome/examples/Mesh_tri.med rename to test/data/Mesh_tri.med diff --git a/doc/salome/examples/doublenodes_polyhedra.py b/test/doublenodes_polyhedra.py similarity index 100% rename from doc/salome/examples/doublenodes_polyhedra.py rename to test/doublenodes_polyhedra.py diff --git a/src/SMESH_SWIG/ex00_all.py b/test/ex00_all.py similarity index 100% rename from src/SMESH_SWIG/ex00_all.py rename to test/ex00_all.py diff --git a/src/SMESH_SWIG/ex01_cube2build.py b/test/ex01_cube2build.py similarity index 100% rename from src/SMESH_SWIG/ex01_cube2build.py rename to test/ex01_cube2build.py diff --git a/src/SMESH_SWIG/ex02_cube2primitive.py b/test/ex02_cube2primitive.py similarity index 100% rename from src/SMESH_SWIG/ex02_cube2primitive.py rename to test/ex02_cube2primitive.py diff --git a/src/SMESH_SWIG/ex03_cube2partition.py b/test/ex03_cube2partition.py similarity index 100% rename from src/SMESH_SWIG/ex03_cube2partition.py rename to test/ex03_cube2partition.py diff --git a/src/SMESH_SWIG/ex04_cube5tetraHexa.py b/test/ex04_cube5tetraHexa.py similarity index 100% rename from src/SMESH_SWIG/ex04_cube5tetraHexa.py rename to test/ex04_cube5tetraHexa.py diff --git a/src/SMESH_SWIG/ex05_hole1build.py b/test/ex05_hole1build.py similarity index 100% rename from src/SMESH_SWIG/ex05_hole1build.py rename to test/ex05_hole1build.py diff --git a/src/SMESH_SWIG/ex06_hole1boolean.py b/test/ex06_hole1boolean.py similarity index 100% rename from src/SMESH_SWIG/ex06_hole1boolean.py rename to test/ex06_hole1boolean.py diff --git a/src/SMESH_SWIG/ex07_hole1partition.py b/test/ex07_hole1partition.py similarity index 100% rename from src/SMESH_SWIG/ex07_hole1partition.py rename to test/ex07_hole1partition.py diff --git a/src/SMESH_SWIG/ex08_hole2build.py b/test/ex08_hole2build.py similarity index 100% rename from src/SMESH_SWIG/ex08_hole2build.py rename to test/ex08_hole2build.py diff --git a/src/SMESH_SWIG/ex09_grid4build.py b/test/ex09_grid4build.py similarity index 100% rename from src/SMESH_SWIG/ex09_grid4build.py rename to test/ex09_grid4build.py diff --git a/src/SMESH_SWIG/ex10_grid4geometry.py b/test/ex10_grid4geometry.py similarity index 100% rename from src/SMESH_SWIG/ex10_grid4geometry.py rename to test/ex10_grid4geometry.py diff --git a/src/SMESH_SWIG/ex11_grid3partition.py b/test/ex11_grid3partition.py similarity index 100% rename from src/SMESH_SWIG/ex11_grid3partition.py rename to test/ex11_grid3partition.py diff --git a/src/SMESH_SWIG/ex12_grid17partition.py b/test/ex12_grid17partition.py similarity index 100% rename from src/SMESH_SWIG/ex12_grid17partition.py rename to test/ex12_grid17partition.py diff --git a/src/SMESH_SWIG/ex13_hole1partial.py b/test/ex13_hole1partial.py similarity index 100% rename from src/SMESH_SWIG/ex13_hole1partial.py rename to test/ex13_hole1partial.py diff --git a/src/SMESH_SWIG/ex14_cyl1holed.py b/test/ex14_cyl1holed.py similarity index 100% rename from src/SMESH_SWIG/ex14_cyl1holed.py rename to test/ex14_cyl1holed.py diff --git a/src/SMESH_SWIG/ex15_cyl2geometry.py b/test/ex15_cyl2geometry.py similarity index 100% rename from src/SMESH_SWIG/ex15_cyl2geometry.py rename to test/ex15_cyl2geometry.py diff --git a/src/SMESH_SWIG/ex16_cyl2complementary.py b/test/ex16_cyl2complementary.py similarity index 100% rename from src/SMESH_SWIG/ex16_cyl2complementary.py rename to test/ex16_cyl2complementary.py diff --git a/src/SMESH_SWIG/ex17_dome1.py b/test/ex17_dome1.py similarity index 100% rename from src/SMESH_SWIG/ex17_dome1.py rename to test/ex17_dome1.py diff --git a/src/SMESH_SWIG/ex18_dome2.py b/test/ex18_dome2.py similarity index 100% rename from src/SMESH_SWIG/ex18_dome2.py rename to test/ex18_dome2.py diff --git a/src/SMESH_SWIG/ex19_sphereINcube.py b/test/ex19_sphereINcube.py similarity index 100% rename from src/SMESH_SWIG/ex19_sphereINcube.py rename to test/ex19_sphereINcube.py diff --git a/src/SMESH_SWIG/ex21_lamp.py b/test/ex21_lamp.py similarity index 100% rename from src/SMESH_SWIG/ex21_lamp.py rename to test/ex21_lamp.py diff --git a/src/SMESH_SWIG/ex24_cylinder.py b/test/ex24_cylinder.py similarity index 100% rename from src/SMESH_SWIG/ex24_cylinder.py rename to test/ex24_cylinder.py diff --git a/test/ex29_refine.py b/test/ex29_refine.py new file mode 100644 index 000000000..662448998 --- /dev/null +++ b/test/ex29_refine.py @@ -0,0 +1,244 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE +# +# 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, or (at your option) any later version. +# +# 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 +# + +# ======================================= +# Procedure that take a triangulation and split all triangles in 4 others triangles +# + +import os +import shutil +import tempfile + +import salome +salome.salome_init() +import GEOM +from salome.geom import geomBuilder +geompy = geomBuilder.New() + +import SMESH, SALOMEDS +from salome.smesh import smeshBuilder +smesh = smeshBuilder.New() + +# Values +# ------ + +tmpDir = tempfile.mkdtemp() +print("Output directory:", tmpDir) + +# Path for ".med" files +path = os.path.join(tmpDir, "ex29_") + +# Name of the shape and the mesh +name = "Carre" + +# Add a node and needed edges +# --------------------------- + +def node(m, f, n1, n2, lnv): + x1, y1, z1 = m.GetNodeXYZ(n1) + x2, y2, z2 = m.GetNodeXYZ(n2) + + x = (x1 + x2) / 2.0 + y = (y1 + y2) / 2.0 + z = (z1 + z2) / 2.0 + + i = m.AddNode(x, y, z) + + in1 = m.GetShapeID(n1) + in2 = m.GetShapeID(n2) + + if (in1==f) or (in2==f): + m.SetNodeOnFace(i, f, 0, 0) + + else: + e1 = m.AddEdge([ n1, i ]) + e2 = m.AddEdge([ i , n2 ]) + + if n1 in lnv: + e = in2 + else: + e = in1 + + m.SetMeshElementOnShape(e1, e) + m.SetMeshElementOnShape(e2, e) + m.SetNodeOnEdge(i, e, 0) + + return i + +# Add a triangle and associate to the CAD face +# -------------------------------------------- + +def triangle(m, f, n1, n2, n3): + i = m.AddFace([ n1, n2, n3 ]) + m.SetMeshElementOnShape(i, f) + +# Split all triangles in 4 triangles +# ---------------------------------- + +def SplitTrianglesIn4(m): + # Get all triangles + triangles = m.GetElementsByType(SMESH.FACE) + + # Remove all edges + m.RemoveElements(m.GetElementsByType(SMESH.EDGE)) + + # Get the list of nodes (ids) associated with the CAD vertices + shape = m.GetShape() + lnv = [] + for v in geompy.SubShapeAll(shape, geompy.ShapeType["VERTEX"]): + lnv = lnv + m.GetSubMeshNodesId(v, True) + + # Split every triangle + for t in triangles: + noeud_1, noeud_2, noeud_3 = m.GetElemNodes(t) + + face = m.GetShapeIDForElem(t) + + noeud_12 = node(m, face, noeud_1, noeud_2, lnv) + noeud_23 = node(m, face, noeud_2, noeud_3, lnv) + noeud_13 = node(m, face, noeud_1, noeud_3, lnv) + + triangle(m, face, noeud_1 , noeud_12, noeud_13) + triangle(m, face, noeud_2 , noeud_23, noeud_12) + triangle(m, face, noeud_3 , noeud_13, noeud_23) + triangle(m, face, noeud_12, noeud_23, noeud_13) + + # Remove all initial triangles + m.RemoveElements(triangles) + + # Merge all identical nodes + m.MergeNodes(m.FindCoincidentNodes(0.0001)) + +# Build a CAD square +# ------------------ + +x0 = 0.0 ; y0 = 0.0 ; z0 = 0.0 +x1 = 1.0 ; y1 = 0.0 ; z1 = 0.0 +x2 = 1.0 ; y2 = 1.0 ; z2 = 0.0 +x3 = 0.0 ; y3 = 1.0 ; z3 = 0.0 + +P0 = geompy.MakeVertex(x0, y0, z0) +P1 = geompy.MakeVertex(x1, y1, z1) +P2 = geompy.MakeVertex(x2, y2, z2) +P3 = geompy.MakeVertex(x3, y3, z3) + +square = geompy.MakeQuad4Vertices(P0, P1, P2, P3) +geompy.addToStudy(square, name) + +# Refine edges and create group of mesh +# ------------------------------------- + +def refine(m, p1, p2, n, k, name): + s = m.GetShape() + + g = geompy.CreateGroup(s, geompy.ShapeType["EDGE"]) + e = geompy.GetEdge(s, p1, p2) + i = geompy.GetSubShapeID(s, e) + geompy.AddObject(g, i) + m.Group(g, name) + + a = m.Segment(e) + a.NumberOfSegments(n, k) + +# Mesh the square +# --------------- + +MyMesh = smesh.Mesh(square) + +refine(MyMesh, P1, P2, 8, 7, "Droite") +refine(MyMesh, P3, P0, 9, 10, "Gauche") +refine(MyMesh, P0, P1, 7, 9, "Bas" ) +refine(MyMesh, P2, P3, 12, 14, "Haut" ) + +algo2D = MyMesh.Triangle() +algo2D.MaxElementArea(0.07) + +MyMesh.Compute() + +MyMesh.ExportMED(path+"110_triangles.med", 0) + +# Disturb the mesh +# ---------------- + +MyMesh.MoveNode( 37, 0.05 , 0.368967 , 0 ) +MyMesh.MoveNode( 38, 0.34 , 0.0762294, 0 ) +MyMesh.MoveNode( 40, 0.8 , 0.42 , 0 ) +MyMesh.MoveNode( 42, 0.702662, 0.74 , 0 ) +MyMesh.MoveNode( 46, 0.4 , 0.374656 , 0 ) +MyMesh.MoveNode( 47, 0.13 , 0.63 , 0 ) +MyMesh.MoveNode( 49, 0.222187, 0.3 , 0 ) +MyMesh.MoveNode( 54, 0.557791, 0.05 , 0 ) +MyMesh.MoveNode( 55, 0.7 , 0.2 , 0 ) +MyMesh.MoveNode( 56, 0.73 , 0.52 , 0 ) +MyMesh.MoveNode( 58, 0.313071, 0.31 , 0 ) +MyMesh.MoveNode( 59, 0.8 , 0.56 , 0 ) +MyMesh.MoveNode( 62, 0.592703, 0.95 , 0 ) +MyMesh.MoveNode( 63, 0.28 , 0.5 , 0 ) +MyMesh.MoveNode( 65, 0.49 , 0.93 , 0 ) +MyMesh.MoveNode( 68, 0.501038, 0.65 , 0 ) +MyMesh.MoveNode( 69, 0.37 , 0.63 , 0 ) +MyMesh.MoveNode( 70, 0.597025, 0.52 , 0 ) +MyMesh.MoveNode( 72, 0.899 , 0.878589 , 0 ) +MyMesh.MoveNode( 73, 0.92 , 0.85 , 0 ) +MyMesh.MoveNode( 74, 0.820851, 0.75 , 0 ) + +NbCells1 = 110 +MyMesh.ExportMED(path+"110_triangles_2.med", 0) + +# First mesh refining +# ------------------- + +SplitTrianglesIn4(MyMesh) + +NbCells2 = NbCells1*4 +print(("Mesh with "+str(NbCells2)+" cells computed.")) + +MyMesh.ExportMED(path+str(NbCells2)+"_triangles.med", 0) + +# Second mesh refining +# -------------------- + +SplitTrianglesIn4(MyMesh) + +NbCells3 = NbCells2*4 +print(("Mesh with "+str(NbCells3)+" cells computed.")) + +MyMesh.ExportMED(path+str(NbCells3)+"_triangles.med",0) + +# Third mesh refining +# ------------------- + +SplitTrianglesIn4(MyMesh) + +NbCells4 = NbCells3*4 +print(("Mesh with "+str(NbCells4)+" cells computed.")) + +MyMesh.ExportMED(path+str(NbCells4)+"_triangles.med", 0) + +# Remove temporary directory +# -------------------------- + +if os.getenv('SMESH_KEEP_TMP_DIR') != '1': + shutil.rmtree(tmpDir) + +# Update the object browser +# ------------------------- + +salome.sg.updateObjBrowser() diff --git a/src/SMESH_SWIG/ex30_groupsOp.py b/test/ex30_groupsOp.py similarity index 100% rename from src/SMESH_SWIG/ex30_groupsOp.py rename to test/ex30_groupsOp.py diff --git a/src/SMESH_SWIG/ex30_tepal.py b/test/ex30_tepal.py similarity index 100% rename from src/SMESH_SWIG/ex30_tepal.py rename to test/ex30_tepal.py diff --git a/src/SMESH_SWIG/ex31_dimGroup.py b/test/ex31_dimGroup.py similarity index 100% rename from src/SMESH_SWIG/ex31_dimGroup.py rename to test/ex31_dimGroup.py diff --git a/test/ex_MakePolyLine.py b/test/ex_MakePolyLine.py new file mode 100644 index 000000000..e73b71fb7 --- /dev/null +++ b/test/ex_MakePolyLine.py @@ -0,0 +1,37 @@ +import salome +salome.salome_init() + +### create geometry + +from salome.geom import geomBuilder +geompy = geomBuilder.New() + +Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) +geompy.addToStudy( Box_1, 'Box_1' ) + +### create a mesh + +import SMESH +from salome.smesh import smeshBuilder +smesh = smeshBuilder.New() + +Mesh_1 = smesh.Mesh( Box_1 ) +Mesh_1.Segment().NumberOfSegments(15) +Mesh_1.Triangle() +Mesh_1.Compute() + +# define arguments for MakePolyLine + +segments = [] +# between nodes 20 and 1, default plane +segments.append( SMESH.PolySegment( 20, 0, SMESH.PointStruct(-1, -1, -1), 1, 0, SMESH.PointStruct(-1, -1, -1), smesh.MakeDirStruct(0,0,0) )) +# between nodes 1 and 100, default plane +segments.append( SMESH.PolySegment( 1, 0, SMESH.PointStruct(-1, -1, -1), 200, 0, SMESH.PointStruct(-1, -1, -1), smesh.MakeDirStruct(0,0,0) )) +# between nodes 200 and edge (578, 577), plane includes vector (1,1,1) +segments.append( SMESH.PolySegment( 200, 0, SMESH.PointStruct(-1, -1, -1), 578, 577, SMESH.PointStruct(-1, -1, -1), smesh.MakeDirStruct(1,1,1) )) + +Mesh_1.MakePolyLine( segments, "1D group") + + +if salome.sg.hasDesktop(): + salome.sg.updateObjBrowser() diff --git a/doc/salome/examples/extrusion_penta_biquad.py b/test/extrusion_penta_biquad.py similarity index 100% rename from doc/salome/examples/extrusion_penta_biquad.py rename to test/extrusion_penta_biquad.py diff --git a/doc/salome/examples/shaper_smesh_groups_without_session.py b/test/shaper_smesh_groups_without_session.py similarity index 100% rename from doc/salome/examples/shaper_smesh_groups_without_session.py rename to test/shaper_smesh_groups_without_session.py diff --git a/test/ssl_hdf5_symbols_conflicts.py b/test/ssl_hdf5_symbols_conflicts.py new file mode 100644 index 000000000..eb6d4611f --- /dev/null +++ b/test/ssl_hdf5_symbols_conflicts.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python + +""" +tuleap26358 : Non regression test pointing to an incompatibiliy between hdf5 symbols in CGNS and hdf5 symbols +in hdf5 library. +""" + +import inspect +import os + +import salome +salome.standalone() +salome.salome_init() +import SMESH, SALOMEDS +from salome.smesh import smeshBuilder + +smesh = smeshBuilder.New() + +inputMED = os.path.abspath(os.path.join(os.path.dirname(inspect.getfile(lambda: None)), 'data', 'Mesh_tri.med')) + +([Mesh_tri_1], status) = smesh.CreateMeshesFromMED(inputMED) +import SMESH +if status != SMESH.DRS_OK: + raise RuntimeError("Test failed") diff --git a/doc/salome/examples/testme.py b/test/test_helper.py similarity index 100% rename from doc/salome/examples/testme.py rename to test/test_helper.py diff --git a/doc/salome/examples/test_polyhedron_per_solid.py b/test/test_polyhedron_per_solid.py similarity index 100% rename from doc/salome/examples/test_polyhedron_per_solid.py rename to test/test_polyhedron_per_solid.py diff --git a/doc/salome/examples/test_smeshplugin_mg_tetra_parallele.py b/test/test_smeshplugin_mg_tetra_parallele.py similarity index 100% rename from doc/salome/examples/test_smeshplugin_mg_tetra_parallele.py rename to test/test_smeshplugin_mg_tetra_parallele.py diff --git a/doc/salome/examples/test_smeshplugins.py b/test/test_smeshplugins.py similarity index 100% rename from doc/salome/examples/test_smeshplugins.py rename to test/test_smeshplugins.py diff --git a/test/tests.set b/test/tests.set new file mode 100644 index 000000000..1290a198b --- /dev/null +++ b/test/tests.set @@ -0,0 +1,133 @@ +# Copyright (C) 2015-2021 CEA/DEN, EDF R&D, OPEN CASCADE +# +# 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, or (at your option) any later version. +# +# 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 +# + +# The following tests cannot be executed with 'make test' because they use +# external meshing plug-ins. +# On the other hand these tests can be executed with 'salome test'. +# --------------------------------------------------------------------------- + +SET(BAD_TESTS + blocFissure_01_without_session.py + blocFissure_02_without_session.py + blocFissure_03_without_session.py + blocFissure_04_without_session.py + blocFissure_05_without_session.py + blocFissure_06_without_session.py + blocFissure_07_without_session.py + test_smeshplugins.py + ) +IF(NOT WIN32) + LIST(APPEND BAD_TESTS + test_smeshplugin_mg_tetra_parallele.py + ) +ENDIF(NOT WIN32) + +# The following tests can be executed with both 'make test' and 'salome test'. +# ---------------------------------------------------------------------------- + +SET(GOOD_TESTS + create_penta_biquad.py + ex_MakePolyLine.py + extrusion_penta_biquad.py + test_polyhedron_per_solid.py + + ex01_cube2build.py + ex02_cube2primitive.py + ex03_cube2partition.py + ex04_cube5tetraHexa.py + ex05_hole1build.py + ex06_hole1boolean.py + ex07_hole1partition.py + ex08_hole2build.py + ex09_grid4build.py + ex10_grid4geometry.py + ex11_grid3partition.py + ex12_grid17partition.py + ex13_hole1partial.py + ex14_cyl1holed.py + ex15_cyl2geometry.py + ex16_cyl2complementary.py + ex17_dome1.py + ex18_dome2.py + ex19_sphereINcube.py + ex21_lamp.py + ex24_cylinder.py + ex29_refine.py + ex30_groupsOp.py + ex30_tepal.py + ex31_dimGroup.py + PAL_MESH_041_mesh.py + PAL_MESH_043_2D.py + PAL_MESH_043_3D.py + SMESH_AdvancedEditor.py + SMESH_BelongToGeom.py + SMESH_blocks.py + SMESH_box2_tetra.py + SMESH_box3_tetra.py + SMESH_box.py + SMESH_box_tetra.py + SMESH_BuildCompound.py + SMESH_controls.py + SMESH_demo_hexa2_upd.py + SMESH_fixation_hexa.py + SMESH_fixation_netgen.py + SMESH_fixation.py + SMESH_fixation_tetra.py + SMESH_flight_skin.py + SMESH_freebord.py + SMESH_GroupFromGeom2.py + SMESH_GroupFromGeom.py + SMESH_GroupLyingOnGeom.py + SMESH_hexaedre.py + SMESH_mechanic_editor.py + SMESH_mechanic_netgen.py + SMESH_mechanic.py + SMESH_mechanic_tetra.py + SMESH_Nut.py + SMESH_Partition1_tetra.py + SMESH_reg.py + SMESH_Sphere.py + SMESH_test0.py + SMESH_test1_AndDisplay.py + SMESH_test1.py + SMESH_test2.py + SMESH_test3.py + SMESH_test4.py + SMESH_test5.py + SMESH_test.py + ) + +# The following tests can be executed without driver, just by python. +# ---------------------------------------------------------------------------- + +SET(SESSION_FREE_TESTS + basic_geom_smesh_without_session.py + basic_shaper_smesh_without_session.py + basic_smesh_output_with_mc_field.py + doublenodes_polyhedra.py + shaper_smesh_groups_without_session.py + ssl_hdf5_symbols_conflicts.py + ) + +# Additional files to install (not tests) +# --------------------------------------- + +SET(OTHER_FILES + ex00_all.py + ) -- 2.30.2